FlightGorilla

A full-stack flight search platform that juggles 500+ airports, plans multi-leg trips with a RAPTOR-powered brain, locks things down with JWT + RBAC, and went from a 4s dashboard nap to a 500ms caffeine rush thanks to Redis.
About
FlightGorilla started as a simple question: “How hard can flight search really be?”
Answer: very.
So I built the whole thing from scratch.
It handles 500+ airports worldwide and supports multi-leg, multi-city itineraries without melting down. At the core, there’s a RAPTOR-based routing engine that actually thinks about layovers, timing, and price instead of just guessing and hoping for the best.
The frontend is built in Angular and keeps things clean and responsive. Behind the scenes, Node.js and Flask microservices do the heavy lifting, with PostgreSQL managing all the messy relational chaos that comes with flights, bookings, and users.
Security isn’t an afterthought. JWT auth with refresh tokens, CSRF protection, and role-based access control across 20+ endpoints keep everything locked down properly. No mystery permissions. No accidental admin powers.
Performance was where things got interesting. The dashboard originally took 4 seconds to load — which is internet eternity. Adding Redis caching brought that down to 500ms. Same data. Much less waiting. Much less suffering.
Everything runs in Docker, because if it works on my machine but nowhere else, it doesn’t count.
FlightGorilla is less about booking a trip and more about proving I can design, secure, optimize, and ship a real system that behaves under pressure.
Key Features
- •Covers 500+ airports with real-time search
- •RAPTOR-powered multi-leg route optimization
- •JWT auth with refresh tokens + CSRF protection
- •Role-based access control across 20+ endpoints
- •Redis caching that cut latency from 4s to 500ms
- •Fully containerized with Docker
Challenges & Solutions
- →Making inconsistent airline APIs behave like adults
- →Optimizing complex multi-leg calculations without frying the server
- →Building strong security without turning the system into molasses
- →Handling high-volume concurrent searches