Flight Search
Real Estate & Travel · React + Node (Express) · 17 @molecule/* packages
Kayak-like flight search with routes, price comparison, alerts, and multi-city trips — with built-in Stripe-backed subscription tiers
Try it
Opens instantly. Runs on sample data, so changes reset on reload.
What is inside
Screens (12)
- Landing
/ - Login
/login - Signup
/signup - ForgotPassword
/forgot-password - ResetPassword
/reset-password - Results
/search(signed in) - FlightDetail
/flight/:id(signed in) - Booking
/book/:id(signed in) - Trips
/trips(signed in) - PriceAlerts
/alerts(signed in) - Settings
/settings(signed in) - TripDetail
/trips/:id(signed in)
Data model (11 tables)
- airports — iata_code, icao_code, name, city, country, latitude, longitude, timezone, …
- flights — id, airline, airline_code, flight_number, origin_iata, origin_city, destination_iata, destination_city, …
- bookings — id, user_id, trip_id, confirmation_code, status, flight_id, passenger_count, total_cents, …
- bookmarks — id, userId, resourceType, resourceId, folder, createdAt, updatedAt
- devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
- flight_search_logs — id, user_id, origin, destination, depart_date, return_date, passengers, cabin, …
- notifications — id, user_id, type, title, body, icon, read, created_at
- price_alert_history — id, alert_id, user_id, observed_at, lowest_price_cents
- price_alerts — id, user_id, origin_iata, origin_city, destination_iata, destination_city, target_price_cents, current_lowest_cents, …
- trips — id, user_id, kind, confirmation_code, status, flight_payload, passenger_count, cabin, …
- payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
API (7 handlers)
- airports
api/src/handlers/airports.ts - alerts
api/src/handlers/alerts.ts - bookings
api/src/handlers/bookings.ts - flights
api/src/handlers/flights.ts - notifications
api/src/handlers/notifications.ts - preferences
api/src/handlers/preferences.ts - trips
api/src/handlers/trips.ts
Subscription tiers
free / pro / team — gated by: maxAirports, maxAlerts, maxFlights, advancedFeatures, canExport, retentionDays
Built from 17 @molecule/* packages
@molecule/api-cache-redis@molecule/api-cron-node-cron@molecule/api-database-postgresql@molecule/api-email-templates@molecule/api-emails-mailgun@molecule/api-entitlements@molecule/api-http-axios@molecule/api-payments-stripe@molecule/api-resource-bookmark@molecule/api-resource-payment@molecule/api-resource-user@molecule/api-search-meilisearch@molecule/app-billing-react@molecule/app-command-palette@molecule/app-data-table@molecule/app-date-range-picker@molecule/app-virtual-scroll
Required secrets
DATABASE_URLPostgreSQL connection stringMEILISEARCH_API_KEYMeilisearch API keyMAILGUN_API_KEYMailgun API key for price alerts
The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing