https://github.com/crisboleda/flight-reservation-system
Complete flight booking application built with microservices architecture.
https://github.com/crisboleda/flight-reservation-system
apigateway fastapi microservices pytest python3 sqlite
Last synced: about 1 year ago
JSON representation
Complete flight booking application built with microservices architecture.
- Host: GitHub
- URL: https://github.com/crisboleda/flight-reservation-system
- Owner: crisboleda
- Created: 2025-04-15T05:05:33.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-15T12:05:07.000Z (about 1 year ago)
- Last Synced: 2025-04-15T13:23:02.260Z (about 1 year ago)
- Topics: apigateway, fastapi, microservices, pytest, python3, sqlite
- Language: Python
- Homepage:
- Size: 1.46 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ✈️ Flight Reservation System - Microservices Architecture
Este proyecto es una aplicación completa de reservas de vuelos construida con arquitectura de microservicios utilizando FastAPI. Los usuarios pueden buscar vuelos, realizar reservas, gestionar su cuenta y consultar información a través de un API Gateway que centraliza las operaciones y maneja la autenticación.
## 🔧 Tecnologías utilizadas
- Python 3.10+
- FastAPI
- SQLite (se puede migrar fácilmente a PostgreSQL o MySQL)
- SQLAlchemy
- Pydantic v2
- JWT para autenticación
- Docker y Docker Compose
- Pytest para testing
- requests para comunicación entre microservicios
- Swagger/OpenAPI para documentación de endpoints
## 📦 Estructura del Proyecto
Cada microservicio está contenido en su propia carpeta dentro de services/, con su propio Dockerfile, tests y configuración independiente.
## 🧩 Arquitectura del Sistema
El sistema está compuesto por 4 servicios:
1. 🧑💼 Users Service (Puerto 8005):
- Registro e inicio de sesión de usuarios
- Generación y validación de tokens JWT
- Expone un endpoint `/verify-token` usado por el gateway para autenticar
2. 🛫 Flights Service (Puerto 8006):
- Administración de vuelos (incluye aviones y ubicaciones normalizadas)
- Búsqueda de vuelos por origen, destino y fecha
3. 📄 Reservations Service (Puerto 8007):
- Crea reservas de vuelos
- Verifica la disponibilidad de asientos comunicándose con Flights Service
- Permite cancelar y consultar reservas
4. 🌐 API Gateway (Puerto 8000):
- Redirige tráfico a los microservicios internos
- Maneja autenticación (con `/verify-token` del users service)
- Centraliza todos los endpoints públicos
## 🖼️ Diagrama de Arquitectura

> Este diagrama representa la comunicación entre servicios y el gateway. Solo el gateway está expuesto al cliente.
## 🚀 Instalación y ejecución con Docker
1. Clona el repositorio:
```bash
git clone https://github.com/crisboleda/flight-reservation-system.git
cd flight-reservation-system
```
2. Ejecuta todos los servicios con Docker Compose:
```bash
docker-compose up --build
```
3. El sistema quedará expuesto en:
- Gateway: http://localhost:8004
- Users: http://localhost:8005
- Flights: http://localhost:8006
- Reservations: http://localhost:8007
## 🧪 Ejecución de pruebas
Cada microservicio incluye tests unitarios con Pytest.
Desde la raíz del microservicio, ejecuta:
```bash
cd services/users
pytest
cd services/flights
pytest
cd services/reservations
pytest
```
## 📚 Documentación interactiva (Swagger)
Cada microservicio expone su documentación automáticamente:
Users: http://localhost:8005/docs
Flights: http://localhost:8006/docs
Reservations: http://localhost:8007/docs
Gateway: http://localhost:8004/docs
## 📄 Licencia
Este proyecto está licenciado bajo la licencia MIT.