- 🚀 Backend
- ✅ Symfony 8.x
- ✅ Asynchronous worker via Symfony Messenger
- ✅ hexagonal architecture
- ✅ CQRS + event sourcing
- ✅ use AutoMapper for DTO to Command mapping
- ✅ tactial DDD (annotations + check command)
- ✅ API documentation with Swagger / Open API specification
- ✅ use RabbitMQ as message queue between "app" and "worker"
- ✅ 100 % coverage in the core domain
- 🚀 Frontend
- ✅ Vite
- ✅ Typescript
- ✅ React 19
- ✅ Material UI v6
- ✅ alternative UI PHP + Twig + Bootstrap
- ✅ Redis as shared cache
- ✅ Store sessions into the shared cache for scaling the backend
- 🚀 Containerization
- 🐳 Docker multistage build for dev + prod
- ⛴️ Kubernetes via Helm
- ✅ Backend + worker
- ✅ Dashboard + Telemetry
- ✅ Frontend
- ✅ Observability
- ✅ Grafana dashboard with the LGTM stack
- ✅ Open Telemetry with centralized otel-collector
- ✅ Loki for logging
- ✅ Tempo for tracing
- ✅ Prometheus for metrics
- ✅ use LGTM all in one solution from Grafana
- ✅ CI via Github actions
- ✅ PhpUnit 13
- ✅ Vitest
- ✅ CloudEvent specification
- ✅ Authentication
- ✅ TWIG app
- ✅ React app
- ✅ CORS
- ✅ Remember Me
- ✅ Authorization
- ✅ check permissions (configured in YAML) via Symfony voter
- ✅ arc42 documentation template
- ✅ add architecture visualization to Symfony Profiler
- ❌ Multi tenancy
- ❌ Connect an example legacy application to the modern application
- ❌ Webhooks
- ❌ CRUD based DB model (in contrast to event sourcing and CQRS)
- ❌ Class diagram / dependency diagram for src/ via analyze CLI command + Graphiz Dot
- ❌ Kubernetes:
- ❌ Readyness/liveness probes
- ❌ Put worker into a Deployment instead of a single pod
- ❌ Provision Grafana dashboard, e.g. via ConfigMap
- ❌ Deploy DB via stateful set
- ❌ Include Alpine image into Docker multistage build for production