A modern flight search and cost monitoring application built with Next.js and NestJS. FCM provides real-time flight information and cost tracking using the Amadeus API, wrapped in a user-friendly interface.
- Simple and advanced search options
- Multi-city routing support
- Real-time pricing updates
- Flexible date options
- Customizable search filters
- Save and name frequent searches
- Search history tracking
- Favorite searches feature
- Easy search reload
- GitHub and Google OAuth authentication
- Personalized search history
- User preferences
- Customizable alerts
- Modern Material UI design
- Responsive layout
- Real-time notifications
- Comprehensive error handling
- Node.js >= 20
- pnpm >= 9.15.5
- Docker and Docker Compose (for containerized deployment)
- Amadeus API credentials
- GitHub OAuth credentials
- Clone the repository
git clone https://github.com/yourusername/flight-cost-monitor.git
cd flight-cost-monitor
- Install dependencies
pnpm install
- Set up environment variables
# Create environment files
cp apps/fcm-api/.env.example apps/fcm-api/.env
cp apps/fcm-webui/.env.example apps/fcm-webui/.env
- Start development servers
# Start all services
pnpm dev
# Or start individual services
pnpm --filter @fcm/api dev
pnpm --filter @fcm/webui dev
- Build images
pnpm docker:build
- Start services
pnpm docker:up
flight-cost-monitor/
├── apps/
│ ├── fcm-api/ # NestJS backend service
│ └── fcm-webui/ # Next.js frontend application
├── packages/
│ ├── eslint-config/ # Shared ESLint configuration
│ ├── fcm-shared/ # Shared business logic and types
│ ├── fcm-shared-webui/# Shared UI components
│ ├── jest-config/ # Shared Jest configuration
│ └── typescript-config/# Shared TypeScript configuration
└── docs/ # Project documentation
- Next.js 15
- React 19
- Material UI 6
- TypeScript
- React Query for data fetching
- Next Auth for authentication
- NestJS 10
- TypeScript
- Prisma ORM
- JWT authentication
- Swagger/OpenAPI documentation
- Monorepo using Turbo
- pnpm for package management
- Docker containerization
- ESLint with flat config
- Jest for testing
- Authentication System - OAuth and JWT authentication setup
- Docker Deployment Guide - Complete guide for Docker setup and deployment
- `pnpm dev` - Start development servers
- `pnpm build` - Build all packages and applications
- `pnpm test` - Run unit tests
- `pnpm test:e2e` - Run end-to-end tests
- `pnpm lint` - Lint all packages
- `pnpm format` - Format code using Prettier
- `pnpm docker:build` - Build Docker images
- `pnpm docker:up` - Start Docker containers
- `pnpm docker:down` - Stop Docker containers
# Run commands for specific packages
pnpm --filter @fcm/api dev
pnpm --filter @fcm/webui build
FCM is optimized for Visual Studio Code with the following extensions:
- ESLint
- Prettier
- Docker
- TypeScript and JavaScript Language Features
# Add to root
pnpm add -w package-name
# Add to specific package
pnpm --filter package-name add dependency-name
Configure the following environment variables:
AUTH_GITHUB_ID=your_github_id
AUTH_GITHUB_SECRET=your_github_secret
AUTH_SECRET=your_secret_key
JWT_SECRET=your_jwt_secret
AMADEUS_CLIENT_ID=your_amadeus_id
AMADEUS_CLIENT_SECRET=your_amadeus_secret
Access the API documentation at:
- Development: http://localhost:3001/api/docs
- Production: https://your-domain.com/api/docs
# Run all tests
pnpm test
# Run specific package tests
pnpm --filter @fcm/api test
# Run all E2E tests
pnpm test:e2e
Coverage reports are generated in the `coverage` directory of each package.
- Fork the repository
- Create your feature branch (`git checkout -b feature/amazing-feature`)
- Commit your changes (`git commit -m 'Add some amazing feature'`)
- Push to the branch (`git push origin feature/amazing-feature`)
- Open a Pull Request
- Use TypeScript for all code
- Follow ESLint configuration
- Use Prettier for formatting
- Follow conventional commits
This project is licensed under the MIT License - see the LICENSE file for details.
For support, email support@example.com or join our Slack channel.
- Amadeus API for flight data
- Next.js team for the amazing framework
- NestJS team for the robust backend framework
- All contributors who have helped shape FCM