AeroStats AI is my personal drone telemetry and machine-learning portfolio project. It turns supported flight logs into replayable routes, performance analysis, weather-aware context, and ML models that improve as my flight history grows.
The project starts honestly with no preloaded flights, fabricated metrics, or fake confidence labels. Real results appear only after telemetry is imported and the validation requirements are met.
I built AeroStats AI to demonstrate a complete data and ML workflow around real drone flights:
- Ingest and normalize flight telemetry
- Persist private flight data and model artifacts
- Replay routes with synchronized charts and event markers
- Compare battery drain, speed, altitude, signal quality, and route efficiency
- Join historical and forecast weather using GPS and timestamps
- Train and validate battery, risk, and anomaly models
- Explain prediction confidence and limitations
- Dashboard: an overview of the entire flight history, totals, efficiency trends, risk distribution, and recent flights.
- Flights: the searchable library of individual flights. Each flight opens into the detailed replay and telemetry experience.
- Forecast: future weather windows ranked using location, weather conditions, past flight patterns, and trained models when available.
- Model: training status, validation evidence, predictions, confidence, feature importance, and anomaly results.
flowchart LR
U["Flight log"] --> F["Next.js frontend"]
F --> API["FastAPI backend"]
API --> P["Parse + normalize"]
P --> DB["Supabase Postgres + Storage"]
DB --> FE["Feature engineering"]
FE --> ML["ML training<br/>+ validation"]
API --> W["Open-Meteo weather"]
ML --> F
W --> F
- Next.js, TypeScript, Tailwind CSS
- FastAPI, pandas, NumPy, scikit-learn
- Supabase Postgres and private Storage
- Leaflet and Recharts
- Open-Meteo
- Vercel and Render
AeroStats AI includes:
- Battery drain regression
- Segment-level battery analysis
- Weakly supervised flight-risk classification
- Isolation Forest anomaly detection
- Weather-aware flight-window ranking
The app does not claim high confidence without sufficient flight count, usable telemetry, feature completeness, held-out validation, and acceptable uncertainty.
Flight logs can expose sensitive GPS locations. Uploaded data is private, service-role credentials remain backend-only, executable uploads are rejected, and private flight files are excluded from Git.
AeroStats AI provides decision-support estimates only. It does not guarantee flight safety. Always follow local drone regulations, official airspace guidance, visual-line-of-sight requirements, and weather advisories.
CSV and JSON telemetry are supported. DJI Fly FlightRecord TXT logs through version 12 are decoded locally with dji-log-parser-js, normalized for AeroStats AI, and sent to the backend together with the original source file for private storage. Newer encrypted DJI logs require DJI OpenAPI keychain support before they can be imported.
DJI and DJI Fly are trademarks of DJI. AeroStats AI is independent and is not affiliated with or endorsed by DJI.
- Encrypted DJI v13+ keychain decoding
- Durable model-artifact rehydration after backend cold starts
- Expanded model evaluation and calibration views
- Coordinate anonymization controls for portfolio screenshots
Copyright (c) 2026 Immanuel Gnanaseelan. All rights reserved.
This repository is source-available for portfolio review only. No permission is granted to copy, modify, distribute, sublicense, or reuse the code, design, branding, or assets without prior written permission.
Third-party dependencies remain subject to their respective licenses. DJI log decoding uses the MIT-licensed dji-log-parser project.