Take Flight is a full-stack, microservice-based flight management platform. The system features a React frontend with Go microservices for each domain (authentication, users, flights, bookings, and admin), plus a Python orchestrator that coordinates higher-level workflows for AI agents.
| Service | Language | Directory | Default Port |
|---|---|---|---|
| Backend Services | |||
| Auth | Go | services/auth |
8081 |
| Users | Go | services/users |
8082 |
| Flights | Go | services/flights |
8083 |
| Bookings | Go | services/bookings |
8084 |
| Admin | Go | services/admin |
8085 |
| Orchestrator | Python | agents/orchestrator |
8090 |
| Frontend | |||
| Frontend | React/TS | frontend/ |
3000 |
Each Go service exposes a /health endpoint using Echo. The orchestrator uses FastAPI to host LangChain agents.
- Go 1.22+
- Python 3.11+
- Node.js 18+ (for frontend)
- Bun or Yarn (frontend package managers)
- Docker (optional for containerized workflow)
Compile any service individually, e.g. the auth service:
go build -o /tmp/auth ./services/auth/cmdThe Python orchestrator can be checked with:
python -m py_compile agents/orchestrator/main.pyInstall frontend dependencies:
cd frontend
# Using bun (recommended)
bun install
# OR using yarn
yarn installStart the frontend development server:
# Using bun
bun dev
# OR using yarn
yarn devBuild the frontend for production:
# Using bun
bun run build
# OR using yarn
yarn buildThe frontend uses environment variables to connect to backend services. Copy frontend/.env.example to frontend/.env and adjust URLs as needed for local development.
The flights service fetches live data from the Amadeus API. Obtain credentials from Amadeus for Developers and set them in your environment:
export AMADEUS_CLIENT_ID=your_client_id
export AMADEUS_CLIENT_SECRET=your_client_secretThe repository includes a docker-compose.yml that builds all services and supporting dependencies.
Start the stack with:
docker compose up --buildService endpoints will be available on localhost using the ports listed above.
The compose file also starts supporting services for persistence, caching, and messaging:
| Service | Purpose | Default Port |
|---|---|---|
| MongoDB | Document store | 27017 |
| Redis | Cache | 6379 |
| NATS | Message broker | 4222 |
Contributions are welcome! Please open an issue before submitting a pull request so we can discuss the change. When contributing:
- Ensure
go vet ./...andgo buildfor the affected service run without errors. - Format Go code with
gofmtand Python code withblackorruff(future). - Update or add tests where appropriate.
- Document any new features in
README.mdor service-specific docs.