I have made this app to solve a simple problem - it's tough figuring out when each of my friends may be unavailable when planning for my birthday party. I ended up with a rather simple, robust, scalable and universal solution. As of right now, I trust my friends enough not to have implemented a password system; it can be done quite easily though - just add a password hash field to the users table and phone in some simple JWT functionality.
Forgive me for the rather makeshift design as of right now - though it does have nice animations!
- Rust: The programming language for all server-side logic.
- Axum: A minimalist web framework for building APIs.
- Tokio: The asynchronous runtime for Rust applications.
- SQLx: A modern, asynchronous SQL toolkit for Rust with compile-time query verification.
- Serde: A framework for serializing and deserializing Rust data structures (primarily to/from JSON).
- HTML5 / CSS3 / JavaScript (ES6+): Core web technologies.
- jQuery: A utility library for DOM manipulation and AJAX requests.
- CSS Flexbox & Grid: Used for creating the responsive calendar layout. No Tailwind this time!
- SQLite: A lightweight, file-based database.
- Docker: Application containerization for easy deployment.
- Fly.io: The platform for hosting and running the containerized application.
-
Clone the repository:
git clone <repository-url> cd <project-directory>
-
Create a
.envfile in the project root and add the environment variable pointing to a local database file:DATABASE_URL="sqlite:sarbule_local.db" -
Run the application using Cargo:
cargo run
Cargo will automatically download dependencies and compile the project. The application will be available at
http://localhost:3000.
-
Set the database secret to point to a persistent volume:
fly secrets set DATABASE_URL="sqlite:///data/sarbule.db"
-
Deploy the application:
fly deploy