AI-powered hotel booking assistant with natural language search, personalized recommendations, and trip itinerary generation.
- Conversational Search: Describe what you want in plain English
- Smart Intent Parsing: AI understands dates, budgets, preferences
- Hotel Booking: Complete booking flow with payment processing
- Itinerary Generation: AI-generated day-by-day trip plans
- Interactive Maps: View hotels and attractions on a map
- User Accounts: Save preferences and booking history
- Frontend: Next.js 14, React, TypeScript, Tailwind CSS
- Backend: Next.js API Routes
- Database: Supabase (PostgreSQL)
- AI: Claude 3.5 Sonnet (Anthropic)
- Hotels: Duffel Stays API
- Payments: Duffel Pay
- Geocoding: Mapbox
- Maps: Leaflet + OpenStreetMap
- Node.js 18+
- npm or yarn
- Supabase account
- Anthropic API key
- Duffel account
- Mapbox account
- Clone the repository:
git clone <repository-url>
cd honest-nomad- Install dependencies:
npm install- Copy environment variables:
cp .env.local.example .env.local-
Fill in your API keys in
.env.local -
Set up the database:
- Go to your Supabase project
- Run the SQL from
lib/supabase/migrations.sqlin the SQL editor
-
Configure OAuth providers in Supabase:
- Enable Google and Facebook authentication
- Add callback URLs
-
Start the development server:
npm run devSee .env.local.example for all required environment variables.
├── app/ # Next.js App Router pages and API routes
│ ├── api/ # API endpoints
│ ├── auth/ # Authentication pages
│ ├── booking/ # Booking pages
│ └── ...
├── components/ # React components
│ ├── chat/ # Chat interface
│ ├── hotels/ # Hotel display
│ ├── booking/ # Booking flow
│ ├── map/ # Map components
│ ├── itinerary/ # Itinerary display
│ └── ui/ # Base UI components
├── lib/ # Utility libraries
│ ├── supabase/ # Database client and functions
│ ├── claude/ # AI integration
│ ├── duffel/ # Hotel API integration
│ └── geocoding/ # Mapbox geocoding
├── hooks/ # React hooks
├── types/ # TypeScript types
└── public/ # Static assets
Add these files to complete the setup:
/public/logo.svg- App logo (512x512)/public/favicon.ico- Browser favicon/public/og-image.png- Social share image (1200x630)/public/markers/hotel.png- Map marker for hotels (32x32)/public/markers/attraction.png- Map marker for attractions (24x24)/public/images/hotel-placeholder.jpg- Default hotel image
- Push to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
See vercel.json for deployment settings.
POST /api/chat
- Main conversation handler
- Accepts natural language queries
- Returns search results, booking confirmations, etc.
POST /api/search
- Direct hotel search (bypass chat)
- Returns array of normalized hotel objects
POST /api/book
- Create a new booking
- Requires guest details and payment token
POST /api/itinerary
- Generate trip itinerary
- Returns day-by-day plan with activities
MIT