MoneyFlow REST API Server in Rust with Actix Web, SQLx and JWT.
Learn about creating this in my Udemy course: Creating an API server in Rust with Actix Web, SQLx and JWT by Afaan Bilal.
Author: Afaan Bilal
docker run --rm -it -p 8000:80 \
    -e DATABASE_URL=[DB URL] \
    -e JWT_SECRET=[RANDOM SECRET] \
    afaanbilal/moneyflow
Note: When building the docker image yourself:
- Set the host to
 0.0.0.0instead of127.0.0.1- Set the port to
 80instead of8080in
main.rs(in the call to.bind()).
The following environment variables configure the server.
| Environment Variable | Default value | Description | 
|---|---|---|
| DATABASE_URL | localhost | 
Database URL. Must be set. | 
| JWT_SECRET | [none] | 
The JWT signing secret. Must be set. | 
cargo run
| Method | Path | Auth? | Description | 
|---|---|---|---|
| POST | /auth/sign-up | ⬜ | Create a new account. | 
| POST | /auth/sign-in | ⬜ | Sign in. Returns a JWT on success. | 
| GET | /api/me | ✅ | Get the authenticated user's details. | 
| POST | /api/me | ✅ | Update the authenticated user's details. | 
| GET | /api/categories | ✅ | List categories of the authenticated user. | 
| POST | /api/categories | ✅ | Create a category. | 
| GET | /api/categories/{id} | 
✅ | Get the category with matching the id. | 
| PUT | /api/categories/{id} | 
✅ | Update the category matching the id. | 
| DELETE | /api/categories/{id} | 
✅ | Delete the category matching the id. | 
| GET | /api/categories/{id}/transactions | 
✅ | List transactions in the category matching the id. | 
| GET | /api/transactions | ✅ | List transactions of the authenticated user. | 
| POST | /api/transactions | ✅ | Create a transaction. | 
| GET | /api/transactions/{id} | 
✅ | Get the transaction with matching the id. | 
| PUT | /api/transactions/{id} | 
✅ | Update the transaction matching the id. | 
| DELETE | /api/transactions/{id} | 
✅ | Delete the transaction matching the id. | 
- All auth required requests: Add header 
Authorization: Bearer [JWT]. - Token lifetime: 4 hours.
 
All contributions are welcome. Please create an issue first for any feature request or bug. Then fork the repository, create a branch and make any changes to fix the bug or add the feature and create a pull request. That's it! Thanks!
MoneyFlow is released under the MIT License. Check out the full license here.



