Skip to content

sagars2004/Concourse

Repository files navigation

Concourse (Built by Sagar Sahu)

License: MIT

Open source. This project is licensed under the MIT License — see the LICENSE file in the root of the repository for the full text. You may use, copy, modify, and distribute this software under the terms of that license.


Your AI-powered airport food concierge. Enter your flight number and get time-aware, gate-smart food recommendations with an AI guide. Built for the DigitalOcean Gradient AI Hackathon 2026.

Features

  • Flight lookup — Enter flight number (e.g. AA 203); get airline, terminal, gate, and boarding time (AviationStack API or stub).
  • Time-aware recommendations — Food options ranked by walk time with green/yellow/red confidence.
  • Preference filters — Dietary, cuisine, price, service, and meal filters (stored in session or DigitalOcean Managed DB).
  • Terminal map — Mapbox GL map with gate and vendor markers (when token is set).
  • Chat with Concourse — AI persona powered by DigitalOcean Gradient (when configured).
  • Trip planner — Plan pre-boarding steps with your available time.

DigitalOcean tools and integrations used

  • DigitalOcean Gradient (AI Platform): model inference for chat and agent workflows.
  • Gradient Knowledge Bases (RAG): airport + vendor dataset loaded for retrieval.
  • DigitalOcean Functions: tool endpoints the agent can call (forwarding into the app’s API routes).
  • DigitalOcean App Platform: deployment target for the Next.js web app.
  • DigitalOcean Managed PostgreSQL (optional): persistence for searches and recommendation analytics via DATABASE_URL.
  • DigitalOcean Spaces (optional): object storage for static assets and future dataset hosting.

Prerequisites

  • Node.js 18.x or 20.x
  • npm (comes with Node)

Download and run the application

1. Clone the repository

git clone https://github.com/YOUR_USERNAME/concourse.git
cd concourse

(Replace YOUR_USERNAME with the actual GitHub org or username.)

2. Install dependencies

npm install

3. Environment variables

Copy the example env file and edit it with your values (all variables are optional for local run; the app uses stubs when keys are missing):

cp .env.example .env.local

Edit .env.local and add any keys you have. See Environment variables below for a full list.

4. Run the app

Development (local):

npm run dev

Then open http://localhost:3000 in your browser.

Production build (run locally):

npm run build
npm start

The app will be available at http://localhost:3000.

Environment variables

Variable Required Description
AVIATIONSTACK_API_KEY Yes aviationstack.com — live flight lookup. If unset, stub flight data is used.
NEXT_PUBLIC_MAPBOX_TOKEN Yes Mapbox — terminal map. If unset, map shows a placeholder.
DATABASE_URL No PostgreSQL connection string (e.g. DigitalOcean Managed Database). If unset, search/analytics persistence is skipped.
NEXT_PUBLIC_SUPABASE_URL No Supabase project URL (if using Supabase for preferences).
SUPABASE_SERVICE_ROLE_KEY No Supabase service role key.
DO_GRADIENT_API_KEY or GRADIENT_MODEL_ACCESS_KEY Yes DigitalOcean Gradient — AI chat. If unset, chat uses stub responses.
GRADIENT_AGENT_ENDPOINT Yes Gradient agent API endpoint (for agent orchestration).
GRADIENT_AGENT_ACCESS_KEY Yes Gradient agent access key.
GRADIENT_TRIP_PLANNER_ENDPOINT Yes Trip planner agent endpoint.
GRADIENT_TRIP_PLANNER_ACCESS_KEY Yes Trip planner agent access key.
CONCOURSE_APP_URL Yes Public URL of your app (for DigitalOcean Functions / webhooks).
GPU_RERANK_URL No Optional GPU inference server URL for reranking (see docs/GPU_INFERENCE_DROPLET.md).

Without any of these, the app still runs with stub or mock data so you can use it locally immediately after npm install and npm run dev.

Deploy on DigitalOcean App Platform

  1. Push the repo to GitHub (ensure it is public if you want it detectable as open source).
  2. In DigitalOcean, go to AppsCreate App → connect the GitHub repo and branch.
  3. Configure as a Web Service:
    • Build command: npm run build
    • Run command: npm start
  4. In SettingsApp-Level Environment Variables, add the same variables you use in .env.local (e.g. AVIATIONSTACK_API_KEY, NEXT_PUBLIC_MAPBOX_TOKEN, DATABASE_URL, Gradient keys, etc.).
  5. Deploy. The app will be available at the URL DigitalOcean provides.

Optional: Database (PostgreSQL)

To persist flight searches and recommendation analytics:

  1. Create a DigitalOcean Managed Database (PostgreSQL) or use any PostgreSQL instance.
  2. Set DATABASE_URL in .env.local (or in App Platform env) to the connection string.
  3. On first use, the app creates the required tables automatically (see src/lib/db.ts).

Optional: Supabase (preferences)

To persist user preference filters in Supabase:

  1. Create a project at supabase.com.
  2. Run the schema in supabase/schema.sql (if present) in the SQL Editor.
  3. Set NEXT_PUBLIC_SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY in .env.local.

Demo flow

  1. Enter a flight number (e.g. AA 203) and click Search.
  2. Confirm flight details; edit gate if needed.
  3. Adjust preference filters; recommendations update.
  4. Use the terminal map and trip planner to plan your time.
  5. Ask Concourse questions in the chat (stub or Gradient, depending on config).

Tech stack

  • Frontend: Next.js 16 (App Router), React 19, Tailwind CSS, Shadcn-style UI
  • APIs: Next.js API routes, AviationStack (flight data), optional Supabase / PostgreSQL
  • AI: DigitalOcean Gradient (chat + agents)
  • Map: Mapbox GL JS

License

This project is open source under the MIT License. See LICENSE in the repository root for the full text.

About

AI-powered airport food concierge that helps first-time travelers find the best dining options near their gate, with real-time flight awareness and time-sensitive routing so you never miss your boarding call.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors