User service is a simple CRUD Web API that adheres to the principles of Clean Architecture, uses some DDD tactical patterns and follows CQRS
curl -X "GET" "http://localhost:5000/healthcheck/"
{"status": "ok"}
curl -X "POST" \
"http://127.0.0.1:5000/users/" \
-d '{
"user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"username": "username",
"first_name": "string",
"last_name": "string"
}'
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"username": "username",
"first_name": "string",
"last_name": "string",
"deleted": false
}
curl -X "GET" "http://127.0.0.1:5000/users/?offset=0&limit=1000&order=asc"
# Equivalent to http://127.0.0.1:5000/users/
{
"users": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66ffa6",
"username": "username",
"first_name": "string",
"last_name": "string",
"deleted": false
},
{
"id": "3fa85f64-5717-4562-b3fc-2c9f3f66ffa1",
"first_name": "string",
"last_name": "string",
"deleted": true
}
]
}
- Grafana — Web view for logs
- Loki — A platform to store and query logs
- Vector.dev — A tool to collect logs and send them to Loki
- FastAPI — Async web framework
- SQLAlchemy 2.0 — ORM for working with database
- Alembic — Database schema migration tool
- DI — A dependency injection tool for easy initialization and delivery of dependencies
- didiator — Mediator to interact with application layer and publish events
- adaptix (dataclass_factory 3.0a0) — Library for simple model serialization and mapping
- structlog — For better logging config
- aio-pika — Client to interact with RabbitMQ
- Implement outbox pattern
- Add auto-tests
- Configure CI