Codebase on GitHub.
The System decomposed into microservices using Domain Driven Design, where each service:
- serves clearly differentiated area of logic
- has no strong dependencies towards other services
- owns its own data
Services communicate through the real time Messaging System (Apache Kafka).
- "Users" - Identity Provider (REST API:
FastAPI
PostreSQL
) README - "Products" - Products management (GraphQL:
Ariadne
MongoDB
) README - "Orders" - Orders management (REST API:
FastAPI
PostreSQL
) README - "Studio" - Orders processing (Web Application:
Django
PostreSQL
) README - "Kafka" - Runs
Apache Kafka
README
127.0.0.1:8001/v1/register/
POST request: "username", "email", "password", "password_confirm"
127.0.0.1:8001/v1/token/
POST request with "form-data": "username", "password"
127.0.0.1:8002
POST request
{
allProducts {
...on ProductInterface {
name
}
}
}
127.0.0.1:8003/v1/orders
POST request with Order Items (including Authorization header)
127.0.0.1:8003/v1/orders/<order_id>/pay
POST request (including Authorization header)
127.0.0.1:8004/admin