#web-apps #web-framework #applications #scalable #blueprint #integration #modular

app rust-blueprint

A scalable and modular blueprint for building web applications with rust

1 unstable release

0.1.0 Sep 25, 2024

#305 in Database interfaces

MIT license

4KB

Rust Blueprint

A scalable and modular blueprint for building web applications with Rust. Inspired by melkeydev/go-blueprint (in terms of tooling/templating), this project is designed to provide a solid starting point for new Rust projects with flexible framework, database, and pub/sub integration options.

Frameworks

Choose one of the following Rust web frameworks:

  • Axum
  • Rocket

Database

Multiple database options with ORM or pool-only modes:

  • Diesel (ORM)
  • Diesel (pool only)
  • SeaORM
  • SQLx

Middlewares

Enhance your application with these middleware components:

  • Tenant middleware
  • Authentication
    • Okta integration
    • Social login (Google, GitHub, etc.)

Caching

Leverage caching to optimize performance:

  • In-Memory
  • Redis

Pub/Sub

Real-time message brokers:

  • NATS
  • AMQP
  • Redis

Docker

Containerization support for different environments:

  • Local Development
  • Production (e.g., Distroless)

Roadmap

Milestone 1: Initial Setup

  • Project scaffolding with Axum or Rocket
  • Basic Docker setup for local development
  • Integrate database choice: Diesel, SeaORM, or SQLx

Milestone 2: Middleware & Authentication

  • Implement tenant-based middleware
  • Add Okta authentication
  • Implement social login (Google, GitHub, etc.)

Milestone 3: Caching and Pub/Sub

  • Integrate Redis caching
  • Add support for NATS, AMQP, or Redis pub/sub

Milestone 4: Production Ready

  • Optimize Docker setup for production (e.g., Distroless)
  • Performance tuning and security hardening

Milestone 5: Testing and Documentation

  • Add unit and integration tests
  • Create detailed documentation

Future work

Add support for cargo workspace if needed

Contributing

We welcome contributions! Feel free to submit a pull request or open an issue.

License

This project is licensed under the MIT License.

No runtime deps