Event-sourced, CQRS-based architecture for real-time vehicle tracking and ticketing.
- Event Store: InfluxDB
- Command/Query Services: Python + FastAPI
- Event Bus: Kafka
- Real-Time Bus: NATS
- Graph Database: Neo4j
- Relational Database: PostgreSQL
- Docker and Docker Compose
- Python 3.10+
- Clone the repository
- Copy
.env.exampleto.envand adjust if needed - Start infrastructure:
docker-compose up -d
- Install Python dependencies:
pip install -r requirements.txt
- Run database migrations:
alembic upgrade head
- Start services (each in separate terminal):
# Command Service uvicorn services.command_service.main:app --reload --port 8000 # Query Service uvicorn services.query_service.main:app --reload --port 8001 # Vehicle Tracker Service uvicorn services.vehicle_tracker_service.main:app --reload --port 8002 # Vehicle Projection Service python -m services.vehicle_projection_service.main # Ticket Service uvicorn services.ticket_service.main:app --reload --port 8003 # Ticket Projection Service python -m services.ticket_projection_service.main # Validation Service uvicorn services.validation_service.main:app --reload --port 8004 # Neo4j Graph Updater python -m services.neo4j_graph_updater.main # Route Graph Service uvicorn services.route_graph_service.main:app --reload --port 8005 # Replay Service uvicorn services.replay_service.main:app --reload --port 8006
pytest tests/The system follows Event Sourcing and CQRS patterns:
- Commands → Command Services → Events → Kafka → InfluxDB (Event Store)
- Events → Projection Services → Read Models → PostgreSQL
- Real-Time Updates → NATS → UI Clients
See the implementation plan for detailed structure.