A full-stack flight booking platform built with Next.js, FastAPI, PostgreSQL, Redis, and Kafka.
Aero Bound Ventures integrates flight search, booking, payments, authentication, notifications, and administration in one application. The backend can use the Amadeus API for live flight data or local fixtures for development and demos.
- Search, price, book, and cancel flights
- Select seats and manage bookings
- Process Pesapal payments and refunds
- Authenticate with credentials or Google OAuth
- Deliver email and real-time notifications through Kafka and Redis
- Manage bookings, revenue, permissions, and uploaded tickets
Next.js frontend
|
| REST and SSE
v
FastAPI API ---- PostgreSQL
| |
| +------ Redis cache and Pub/Sub
|
+---------- Kafka ---- notification worker
|
+---------- Amadeus, Pesapal, Cloudinary, Google OAuth, SMTP
| Area | Main tools |
|---|---|
| Frontend | Next.js, React, TypeScript, Tailwind CSS, Zustand, TanStack Query |
| Backend | FastAPI, Python, SQLModel, Alembic, uv |
| Data and events | PostgreSQL, Redis, Kafka |
| Infrastructure | Docker Compose, Helm, Kubernetes, Terraform, AWS |
| Delivery and configuration | GitHub Actions, Doppler |
backend/ FastAPI API, worker, migrations, tests, and Docker Compose
frontend/ Next.js application
helm/ Backend and DopplerSecret Helm charts
terraform/ EC2 production and EKS staging infrastructure
scripts/ Local Kubernetes bootstrap automation
Prerequisites: Docker, Docker Compose, and an authenticated Doppler CLI.
cd backend
doppler setup
export DOPPLER_TOKEN="$(doppler configs tokens create docker --max-age 15m --plain)"
docker compose up -d --wait db redis kafka
docker compose build fastapi-app
docker compose run --rm migrate
docker compose up -d fastapi-app notification-workerThe API is available at http://localhost:8000; its Swagger documentation is
at http://localhost:8000/docs.
See backend/README.md for configuration, migrations, management commands, observability services, and Kubernetes development.
Prerequisite: Node.js 20 or later.
cd frontend
npm install
cp .env.example .env.local
npm run devThe frontend is available at http://localhost:3000. Set
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000/api/v1 in .env.local.
cd backend
uv run pytest
cd ../frontend
npm run lintFor infrastructure changes:
terraform -chdir=terraform validate
terraform -chdir=terraform planDocker Compose on EC2 remains the production deployment path. EKS is an independent, production-like staging environment managed with Terraform, Helm, GitHub Actions, and the Doppler Kubernetes Operator.
MIT
