{"id":27488299,"url":"https://github.com/crisboleda/flight-reservation-system","last_synced_at":"2025-04-16T19:56:02.519Z","repository":{"id":288076893,"uuid":"966547171","full_name":"crisboleda/flight-reservation-system","owner":"crisboleda","description":"Complete flight booking application built with microservices architecture.","archived":false,"fork":false,"pushed_at":"2025-04-15T12:05:07.000Z","size":1530,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-15T13:23:02.260Z","etag":null,"topics":["apigateway","fastapi","microservices","pytest","python3","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crisboleda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-15T05:05:33.000Z","updated_at":"2025-04-15T12:15:45.000Z","dependencies_parsed_at":"2025-04-15T13:33:13.430Z","dependency_job_id":null,"html_url":"https://github.com/crisboleda/flight-reservation-system","commit_stats":null,"previous_names":["crisboleda/flight-reservation-system"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisboleda%2Fflight-reservation-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisboleda%2Fflight-reservation-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisboleda%2Fflight-reservation-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crisboleda%2Fflight-reservation-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crisboleda","download_url":"https://codeload.github.com/crisboleda/flight-reservation-system/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249270232,"owners_count":21241296,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apigateway","fastapi","microservices","pytest","python3","sqlite"],"created_at":"2025-04-16T19:56:01.915Z","updated_at":"2025-04-16T19:56:02.504Z","avatar_url":"https://github.com/crisboleda.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ✈️ Flight Reservation System - Microservices Architecture\n\nEste 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.\n\n## 🔧 Tecnologías utilizadas\n\n- Python 3.10+\n- FastAPI\n- SQLite (se puede migrar fácilmente a PostgreSQL o MySQL)\n- SQLAlchemy\n- Pydantic v2\n- JWT para autenticación\n- Docker y Docker Compose\n- Pytest para testing\n- requests para comunicación entre microservicios\n- Swagger/OpenAPI para documentación de endpoints\n\n## 📦 Estructura del Proyecto\n\nCada microservicio está contenido en su propia carpeta dentro de services/, con su propio Dockerfile, tests y configuración independiente.\n\n## 🧩 Arquitectura del Sistema\n\nEl sistema está compuesto por 4 servicios:\n\n1. 🧑‍💼 Users Service (Puerto 8005):\n   - Registro e inicio de sesión de usuarios\n   - Generación y validación de tokens JWT\n   - Expone un endpoint `/verify-token` usado por el gateway para autenticar\n\n2. 🛫 Flights Service (Puerto 8006):\n   - Administración de vuelos (incluye aviones y ubicaciones normalizadas)\n   - Búsqueda de vuelos por origen, destino y fecha\n\n3. 📄 Reservations Service (Puerto 8007):\n   - Crea reservas de vuelos\n   - Verifica la disponibilidad de asientos comunicándose con Flights Service\n   - Permite cancelar y consultar reservas\n\n4. 🌐 API Gateway (Puerto 8000):\n   - Redirige tráfico a los microservicios internos\n   - Maneja autenticación (con `/verify-token` del users service)\n   - Centraliza todos los endpoints públicos\n\n## 🖼️ Diagrama de Arquitectura\n\n![arquitectura](./docs/images/arquitectura.png)\n\n\u003e Este diagrama representa la comunicación entre servicios y el gateway. Solo el gateway está expuesto al cliente.\n\n## 🚀 Instalación y ejecución con Docker\n\n1. Clona el repositorio:\n\n```bash\ngit clone https://github.com/crisboleda/flight-reservation-system.git\ncd flight-reservation-system\n```\n\n2. Ejecuta todos los servicios con Docker Compose:\n\n```bash\ndocker-compose up --build\n```\n\n3. El sistema quedará expuesto en:\n\n- Gateway: http://localhost:8004\n- Users: http://localhost:8005\n- Flights: http://localhost:8006\n- Reservations: http://localhost:8007\n\n## 🧪 Ejecución de pruebas\n\nCada microservicio incluye tests unitarios con Pytest.\nDesde la raíz del microservicio, ejecuta:\n\n```bash\ncd services/users\npytest\n\ncd services/flights\npytest\n\ncd services/reservations\npytest\n```\n\n## 📚 Documentación interactiva (Swagger)\nCada microservicio expone su documentación automáticamente:\n\nUsers: http://localhost:8005/docs\n\nFlights: http://localhost:8006/docs\n\nReservations: http://localhost:8007/docs\n\nGateway: http://localhost:8004/docs\n\n## 📄 Licencia\nEste proyecto está licenciado bajo la licencia MIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrisboleda%2Fflight-reservation-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrisboleda%2Fflight-reservation-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrisboleda%2Fflight-reservation-system/lists"}