A comprehensive Django-based microservices application for managing Star Wars planets data with real-time analytics, event streaming, and monitoring capabilities.
- RESTful API for CRUD operations on Star Wars planets
- Event-driven architecture with Kafka for real-time data streaming
- Asynchronous task processing using Celery with Redis
- Real-time analytics and event consumption
- Comprehensive monitoring with Prometheus, Grafana, and ELK stack
- Circuit breaker pattern for resilience
- OpenAPI documentation with Swagger UI
- Comprehensive testing with pytest and coverage reporting
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Django API βββββΆβ Kafka βββββΆβ Analytics β
β (Planets) β β (Events) β β Consumer β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β PostgreSQL β β Redis β β Monitoring β
β (Database) β β (Cache/Broker) β β (Prometheus) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Backend: Django 5.x, Django REST Framework
- Database: PostgreSQL 16
- Message Broker: Apache Kafka + Zookeeper
- Cache & Task Queue: Redis + Celery
- Monitoring: Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana)
- Containerization: Docker & Docker Compose
- Testing: pytest, coverage
- Code Quality: flake8, pre-commit hooks
- Docker & Docker Compose
- Python 3.11+ (for local development)
- Git
git clone <repository-url>
cd django-NTD-demo# Copy environment template
cp .env.example .env
# Edit .env with your configuration
# Update database credentials, secret keys, etc.# Start all services
docker-compose up -d
# View logs
docker-compose logs -f web# Run migrations
docker-compose exec web python manage.py migrate
| Service | URL | Description |
|---|---|---|
| Django API | http://localhost:8000 | Main API endpoints |
| API Documentation | http://localhost:8000/api/schema/swagger-ui/ | Swagger UI |
| Flower (Celery) | http://localhost:5555 | Task monitoring |
| Prometheus | http://localhost:9090 | Metrics collection |
| Grafana | http://localhost:3000 | Dashboards (admin/grafana123) |
| Kibana | http://localhost:5601 | Log visualization |
GET /api/planets/- List all planetsPOST /api/planets/- Create a new planetGET /api/planets/{id}/- Get planet detailsPUT /api/planets/{id}/- Update planetDELETE /api/planets/{id}/- Delete planet
GET /api/analytics/event-stats/- Get event statistics
# Local testing
pip install -r requirements.txt
pip install -r requirements.dev.txt
pytest --cov=app --cov-branch# Unit tests only
pytest planets/tests/
# E2E tests
pytest e2e_tests/
# With coverage report
pytest --cov=app --cov-report=html- Application metrics: Django-prometheus integration
- Infrastructure metrics: Redis, PostgreSQL exporters
- Custom metrics: Business logic metrics
- Structured logging: JSON format with python-json-logger
- Centralized logs: ELK stack integration
- Log shipping: Logstash TCP handler
Access Grafana at http://localhost:3000 with:
- Username:
admin - Password:
grafana123
The application uses Kafka for event-driven architecture:
- Planet events are published when planets are created/updated
- Analytics consumer processes events in real-time
- Event statistics are stored and exposed via API
| Service | Description | Health Check |
|---|---|---|
| web | Django application (Gunicorn) | HTTP endpoint |
| postgres | PostgreSQL database | pg_isready |
| redis | Redis cache/broker | redis-cli ping |
| kafka | Kafka message broker | broker-api-versions |
| celery | Celery worker | celery inspect ping |
| analytics_consumer | Kafka consumer | Process monitoring |
Key environment variables (see .env.example):
DJANGO_SETTINGS_MODULE: Django app settingSECRET_KEY: Django secret keyDEBUG: Debug mode (True/False)POSTGRES_*: Database configurationCELERY_*: Task queue configurationKAFKA_BOOTSTRAP_SERVERS: Kafka brokers
# Scale specific services
docker-compose up -d --scale celery=3
docker-compose up -d --scale analytics_consumer=2- Services not starting: Check Docker daemon and port conflicts
- Database connection errors: Verify PostgreSQL is healthy
- Kafka connection issues: Ensure Zookeeper is running first
- Permission errors: Check file permissions and Docker user
# View service logs
docker-compose logs -f [service-name]
# Restart specific service
docker-compose restart [service-name]
# Clean up
docker-compose down -v
docker system prune -f