hostbasket/actix_mvc_app
2025-04-21 13:55:29 +02:00
..
src add jwt auth, fix session handling, clean up middlewares 2025-04-21 13:55:29 +02:00
Cargo.lock add jwt auth, fix session handling, clean up middlewares 2025-04-21 13:55:29 +02:00
Cargo.toml add jwt auth, fix session handling, clean up middlewares 2025-04-21 13:55:29 +02:00
README.md .... 2025-04-19 19:11:13 +02:00
specs.md ... 2025-04-21 10:52:19 +02:00

Actix MVC App

A Rust web application built with Actix Web, Tera templates, and Bootstrap 5.3.5, following the MVC (Model-View-Controller) architectural pattern.

Features

  • Actix Web: A powerful, pragmatic, and extremely fast web framework for Rust
  • Tera Templates: A template engine inspired by Jinja2 and Django templates
  • Bootstrap 5.3.5: A popular CSS framework for responsive web design
  • MVC Architecture: Clean separation of concerns with Models, Views, and Controllers
  • Middleware Support: Custom middleware for request timing and security headers
  • Configuration Management: Flexible configuration system with environment variable support
  • Static File Serving: Serve CSS, JavaScript, and other static assets

Project Structure

actix_mvc_app/
├── Cargo.toml                 # Project dependencies
├── src/
│   ├── config/                # Configuration management
│   ├── controllers/           # Request handlers
│   ├── middleware/            # Custom middleware components
│   ├── models/                # Data models and business logic
│   ├── routes/                # Route definitions
│   ├── static/                # Static assets (CSS, JS, images)
│   │   ├── css/               # CSS files including Bootstrap
│   │   ├── js/                # JavaScript files
│   │   └── images/            # Image files
│   ├── utils/                 # Utility functions
│   ├── views/                 # Tera templates
│   └── main.rs                # Application entry point

Getting Started

Prerequisites

  • Rust and Cargo (latest stable version)

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/actix_mvc_app.git
    cd actix_mvc_app
    
  2. Build the project:

    cargo build
    
  3. Run the application:

    cargo run
    
  4. Open your browser and navigate to http://localhost:8080

Configuration

The application can be configured using environment variables or configuration files. The following environment variables are supported:

  • APP__SERVER__HOST: The host address to bind to (default: 127.0.0.1)
  • APP__SERVER__PORT: The port to listen on (default: 8080)
  • APP__SERVER__WORKERS: The number of worker threads (default: number of CPU cores)
  • APP__TEMPLATES__DIR: The directory containing templates (default: ./src/views)

Development

Adding a New Page

  1. Create a new template in the src/views directory
  2. Add a new handler method in the appropriate controller
  3. Add a new route in the src/routes/mod.rs file

Adding a New Model

  1. Create a new model file in the src/models directory
  2. Add the model to the src/models/mod.rs file

License

This project is licensed under the MIT License - see the LICENSE file for details.