This commit is contained in:
2025-04-19 19:11:13 +02:00
parent 8f8016e748
commit 86bb165bf2
20 changed files with 3803 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
{% extends "base.html" %}
{% block title %}About - Actix MVC App{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<h1 class="card-title">About Actix MVC App</h1>
<p class="card-text">This is a sample application demonstrating how to build a web application using Rust with an MVC architecture.</p>
<h2 class="mt-4">Technology Stack</h2>
<div class="row">
<div class="col-md-6">
<div class="card mb-3">
<div class="card-header">Backend</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">
<strong>Actix Web</strong> - A powerful, pragmatic, and extremely fast web framework for Rust
</li>
<li class="list-group-item">
<strong>Tera</strong> - A template engine inspired by Jinja2 and Django templates
</li>
<li class="list-group-item">
<strong>Serde</strong> - A framework for serializing and deserializing Rust data structures
</li>
</ul>
</div>
</div>
<div class="col-md-6">
<div class="card mb-3">
<div class="card-header">Frontend</div>
<ul class="list-group list-group-flush">
<li class="list-group-item">
<strong>Bootstrap 5.3.5</strong> - A popular CSS framework for responsive web design
</li>
<li class="list-group-item">
<strong>HTML5</strong> - The latest version of the HTML standard
</li>
<li class="list-group-item">
<strong>CSS3</strong> - The latest evolution of the Cascading Style Sheets language
</li>
</ul>
</div>
</div>
</div>
<h2 class="mt-4">MVC Architecture</h2>
<p>This application follows the Model-View-Controller (MVC) architectural pattern:</p>
<ul>
<li><strong>Model:</strong> Represents the data and business logic of the application</li>
<li><strong>View:</strong> Represents the UI of the application (Tera templates)</li>
<li><strong>Controller:</strong> Handles the user request, works with the Model, and selects a View to render</li>
</ul>
<a href="/contact" class="btn btn-primary mt-3">Contact Us</a>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,54 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Actix MVC App{% endblock %}</title>
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
{% block extra_css %}{% endblock %}
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="/">Actix MVC App</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item">
<a class="nav-link {% if active_page == 'home' %}active{% endif %}" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link {% if active_page == 'about' %}active{% endif %}" href="/about">About</a>
</li>
<li class="nav-item">
<a class="nav-link {% if active_page == 'contact' %}active{% endif %}" href="/contact">Contact</a>
</li>
</ul>
</div>
</div>
</nav>
<main class="container py-4">
{% block content %}{% endblock %}
</main>
<footer class="bg-dark text-white py-4 mt-5">
<div class="container">
<div class="row">
<div class="col-md-6">
<h5>Actix MVC App</h5>
<p>A Rust web application using Actix Web, Tera templates, and Bootstrap.</p>
</div>
<div class="col-md-6 text-md-end">
<p>&copy; {{ now(year=true) }} Actix MVC App. All rights reserved.</p>
</div>
</div>
</div>
</footer>
<script src="/static/js/bootstrap.bundle.min.js"></script>
{% block extra_js %}{% endblock %}
</body>
</html>

View File

@@ -0,0 +1,68 @@
{% extends "base.html" %}
{% block title %}Contact - Actix MVC App{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-8 offset-md-2">
<div class="card">
<div class="card-body">
<h1 class="card-title">Contact Us</h1>
<p class="card-text">Have questions or feedback? Feel free to reach out to us using the form below.</p>
<form id="contactForm" class="mt-4">
<div class="mb-3">
<label for="name" class="form-label">Name</label>
<input type="text" class="form-control" id="name" name="name" required>
</div>
<div class="mb-3">
<label for="email" class="form-label">Email</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="mb-3">
<label for="subject" class="form-label">Subject</label>
<input type="text" class="form-control" id="subject" name="subject" required>
</div>
<div class="mb-3">
<label for="message" class="form-label">Message</label>
<textarea class="form-control" id="message" name="message" rows="5" required></textarea>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
<div class="mt-5">
<h3>Other Ways to Connect</h3>
<div class="row mt-3">
<div class="col-md-6">
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title">Email</h5>
<p class="card-text">info@example.com</p>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-3">
<div class="card-body">
<h5 class="card-title">GitHub</h5>
<p class="card-text">github.com/example/actix-mvc-app</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% block extra_js %}
<script>
document.getElementById('contactForm').addEventListener('submit', function(e) {
e.preventDefault();
alert('This is a demo form. In a real application, this would submit data to the server.');
});
</script>
{% endblock %}
{% endblock %}

View File

@@ -0,0 +1,55 @@
{% extends "base.html" %}
{% block title %}Home - Actix MVC App{% endblock %}
{% block content %}
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<h1 class="card-title">Welcome to Actix MVC App</h1>
<p class="card-text">This is a Rust web application built with:</p>
<ul class="list-group list-group-flush mb-4">
<li class="list-group-item">Actix Web - A powerful, pragmatic, and extremely fast web framework for Rust</li>
<li class="list-group-item">Tera Templates - A template engine inspired by Jinja2 and Django templates</li>
<li class="list-group-item">Bootstrap 5.3.5 - A popular CSS framework for responsive web design</li>
</ul>
<p>This application follows the MVC (Model-View-Controller) architectural pattern:</p>
<div class="row">
<div class="col-md-4">
<div class="card mb-3">
<div class="card-header bg-primary text-white">
Models
</div>
<div class="card-body">
<p>Data structures and business logic</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card mb-3">
<div class="card-header bg-success text-white">
Views
</div>
<div class="card-body">
<p>Tera templates for rendering HTML</p>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card mb-3">
<div class="card-header bg-info text-white">
Controllers
</div>
<div class="card-body">
<p>Request handlers and application logic</p>
</div>
</div>
</div>
</div>
<a href="/about" class="btn btn-primary">Learn More</a>
</div>
</div>
</div>
</div>
{% endblock %}