Overview
Aero is an open-source flight tracking platform built with a modern monorepo architecture. We welcome contributions from the community to help improve the platform.Prerequisites
Before you begin, ensure you have the following installed:- Node.js 20+ and pnpm 9.15.1+
- Flutter SDK 3.6.0+
- PostgreSQL database
- Redis server
- Bun runtime (for scripts and scraper)
- Android Studio (for Wear OS development)
- Dart SDK (for OpenAPI client generation)
Monorepo structure
The Aero monorepo is organized into the following components:Getting started
Set up the API server
The API server is the core backend service:Edit Run database migrations:Start the development server:The API will be available at:
.env and configure your environment variables:- API Server:
http://localhost:3000 - API Docs:
http://localhost:3000/docs - Scalar Reference:
http://localhost:3000/reference
Set up the mobile app
The Flutter mobile app connects to the API:
The native configuration is currently only set up for Android builds.
Development workflow
API development
The API server supports hot reload for rapid development:Flutter development
Database management
The API uses Prisma ORM for database management:Code standards
TypeScript/NestJS (API)
- Use TypeScript strict mode
- Follow NestJS module structure
- Use dependency injection
- Document all endpoints with Swagger decorators
- Write unit tests for services
- Use Prettier for formatting (configured in
.prettierrc) - Use ESLint for linting (configured in
.eslintrc.js)
Dart/Flutter (Mobile App)
- Follow Dart style guide
- Use Flutter best practices
- Implement proper state management
- Write widget tests for critical components
- Use meaningful variable and function names
- Document complex logic
Git workflow
-
Create a feature branch from
main: -
Make your changes and commit with clear messages:
-
Push your branch and create a pull request:
- Ensure all tests pass and address review comments
Testing
API tests
Flutter tests
API keys and external services
Aero integrates with several external services:- Aviation Stack API - Flight search between airports
- RapidAPI (AeroDataBox) - Comprehensive flight data
- FlightAware API - Real-time flight tracking
You’ll need to subscribe to these services and obtain API keys for full functionality.
Additional resources
- OpenAPI Client Generation - Regenerate the Dart API client
- Web Scraper - Scrape airline data
- Data Management Scripts - Import and migrate data
Getting help
If you encounter issues or have questions:- Check existing GitHub issues
- Review the API documentation at
http://localhost:3000/docs - Create a new issue with detailed information
- Join the community discussions