Skip to content

Latest commit

History

History
52 lines (35 loc) 路 1.99 KB

README.md

File metadata and controls

52 lines (35 loc) 路 1.99 KB

Rust Application Server Boilerplate using Axum framework and MongoDB! 馃

This project is a boilerplate for building a Rust application server using the Axum framework and MongoDB as the database. It provides a solid starting point for building your own Rust applications, with many common features already implemented.

Features

  • Axum server: A modern and fast web framework with a focus on ergonomics and modularity.
  • MongoDB driver: A Rust driver for MongoDB, allowing you to interact with MongoDB collections.
  • Logging: Logging support using tracing and tracing-subscriber for async-compatible logging.
  • Error handler: Application error handling system.
  • Router: A router for mapping requests to handlers, cors, and static files.
  • Static: Static file serving using tower-http.
  • Extractors: Validation extractor for getting data from requests and validate with validator crate.
  • App config (dotenvy): Load your application's configuration from a .env file.

Possible Planned Features

  • Authentication: User authentication system.
  • Hashing: Password hashing
  • Jwt utils: Utilities for working with JWTs.
  • Server Metrics

Project Structure

The project is organized into several crates:

  • database: Contains the MongoDB driver and user model and repository.
  • server: Contains the main application server, including the API, router, and services.
  • utils: Contains utility modules like config and errors.

Getting Started

  1. Clone the repository.
  2. Install the Rust toolchain if you haven't already.
  3. Run cargo build to build the project.
  4. Run cargo run to start the server.

You can install cargo-watch to automatically recompile the project when changes are made:

cargo install cargo-watch

Then run cargo watch -x run to start the server.

Contributing

Contributions are welcome!

License

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