An AI-powered digital tourism platform for exploring the culture, heritage, and eco-tourism destinations of North India. Built by team Codebreakers during the team round of IndiaSkills 2026 — Web Technologies.
NorthQuest surfaces popular destinations and hidden gems, generates personalized day-by-day trip itineraries with AI, and answers travel questions through a floating chat assistant.
- AI Trip Planner — generate a day-by-day itinerary from starting city, trip length, budget, and interests.
- Destination Explorer — browse and search destinations, filterable by "hidden gem" status, ranked by an eco-score.
- Travel Assistant Chatbot — a floating chat widget for quick, practical questions (seasons, budgets, routes, safety).
- Destination detail pages — dedicated page per destination at
/destination/[id].
- Framework: Next.js 16 (App Router) + React 19 + TypeScript
- Styling: Tailwind CSS 4
- Database: Supabase (Postgres) —
destinationsandtripstables - AI: Groq SDK (Llama models) for itinerary generation and the chat assistant
app/
page.tsx Landing page
explore/ Destination explorer
destination/[id]/ Destination detail page
trip-planner/ AI trip planner UI
api/
destinations/ GET destinations (search + hidden-gem filter)
generate-itinerary/ POST -> AI-generated itinerary, persisted to Supabase
travel-assistant/ POST -> AI chat assistant answers
components/
ChatbotFloating.tsx Floating "Ask NorthQuest AI" chat widget
DestinationCard.tsx Destination card UI
lib/
gemini.ts AI client (Groq SDK) — generateJson / generateText helpers
supabase.ts Supabase client factories (browser, server anon, service role)
types.ts Shared Destination / Itinerary types
env.ts requireEnv() helper
supabase/
schema.sql Table definitions, RLS policies, and seed data
scripts/
apply-schema.mjs Apply schema.sql to a Supabase Postgres instance
seed.mjs Seed destinations via the Supabase JS client
npm installCopy .env.example to .env and fill in the values:
cp .env.example .env| Variable | Description |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anon/public key |
SUPABASE_SERVICE_ROLE_KEY |
Supabase service role key (server-only; used to persist generated itineraries) |
SUPABASE_DB_URL |
Direct Postgres connection string, used by scripts/apply-schema.mjs |
GROQ_API_KEY |
API key for Groq |
GROQ_MODEL |
Optional model override (defaults to a Groq Llama model) |
Apply the schema (creates destinations and trips tables, RLS policies, and seed data) either by running supabase/schema.sql directly in the Supabase SQL editor, or via script:
node scripts/apply-schema.mjsOptionally re-seed destinations independently:
node scripts/seed.mjsnpm run devOpen http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start the Next.js dev server |
npm run build |
Production build |
npm run start |
Start the production server |
npm run lint |
Run ESLint |
