Overview
The API provides authenticated endpoints for airline operations, flight management, and user data access. Package:@skyteam/apiLocation:
apps/apiPort: 4000 (default)
Technology Stack
- Runtime: Node.js with TypeScript
- Framework: Express 4.18
- Security: Helmet (security headers), CORS
- Database: Prisma ORM via
@skyteam/database - Build Tool: tsup for fast TypeScript compilation
Architecture
Server Setup
The main server (src/index.ts:1) configures middleware and routes:
apps/api/src/index.ts
Middleware Stack
- Helmet: Sets security HTTP headers
- CORS: Enables cross-origin requests
- express.json(): Parses JSON request bodies
- airlineAuth: Validates API keys for protected routes
Authentication
Airline Authentication
All routes (except/health) require airline authentication via x-api-key header (src/middleware/auth.ts:9):
apps/api/src/middleware/auth.ts
Token Safety
ThesafeAirline helper removes sensitive token data:
apps/api/src/middleware/auth.ts
API Routes
Status Routes
File:src/routes/status.ts
Airline Routes
File:src/routes/airline.ts
Get Airline Data
apps/api/src/routes/airline.ts
Get Products
apps/api/src/routes/airline.ts
Flight Routes
File:src/routes/flight.ts
Get Upcoming Flights
apps/api/src/routes/flight.ts
Start Flight
startedAt timestamp for a flight:
apps/api/src/routes/flight.ts
Flight Heartbeat
apps/api/src/routes/flight.ts
End Flight
endTime timestamp for a flight:
apps/api/src/routes/flight.ts
User Routes
File:src/routes/users.ts
Fetch Multiple Users
apps/api/src/routes/users.ts
Buy Product
apps/api/src/routes/users.ts
Error Handling
Centralized error handler catches all unhandled errors:apps/api/src/index.ts
Development
Scripts
Dependencies
apps/api/package.json
Database Integration
The API uses@skyteam/database package for all data operations:
Security Features
- Helmet: Sets security headers (XSS protection, CSP, etc.)
- CORS: Configurable cross-origin resource sharing
- Token Authentication: All routes protected by API key validation
- Input Validation: Request body validation before processing
- Error Sanitization: Generic error messages to prevent information leakage
Performance Optimizations
- Parallel Queries: Uses
Promise.all()for concurrent database operations - Connection Pooling: Database connection pooling via Prisma
- Deduplication: User fetch requests deduplicated to reduce queries
- Efficient Mapping: Uses
Mapfor O(1) lookups in data transformations
Deployment
Recommended deployment setup:- Hosting: Any Node.js platform (Railway, Render, Fly.io)
- Environment: Production environment variables
- Monitoring: Error tracking and performance monitoring
- Scaling: Horizontal scaling with load balancer