# Signal Travel Concierge

An ultra-luxury travel platform: cinematic 3D homepage, interactive globe, AI trip planner,
advanced booking atelier, member suite and enterprise admin console.

**Stack:** Next.js 16 (App Router, Server Components) · TypeScript · Tailwind CSS 4 ·
Framer Motion · Three.js + React Three Fiber · Lenis smooth scroll ·
React Hook Form + Zod · Prisma + PostgreSQL · Docker.

## Quick start

```bash
npm install
npm run dev        # http://localhost:3000
```

No environment variables are required for the demo — every integration degrades gracefully:
the AI concierge and trip planner run on a local composer until `OPENAI_API_KEY` is set,
bookings validate and confirm without Stripe, and the newsletter accepts emails without Resend.

## Pages

| Route | What it is |
|---|---|
| `/` | Cinematic hero with interactive 3D globe (click gold markers), luxury search, 8 animated sections |
| `/destinations` | Filterable atlas with 3D-tilt floating cards |
| `/destinations/[slug]` | Full destination dossier: facts, visa, safety, hotels, experiences, gallery, 360° tour hook |
| `/planner` | AI Trip Planner — mood + nights + budget → day-by-day itinerary + packing list |
| `/booking` | 4-step booking atelier: journey → travelers (Zod-validated) → add-ons → payment, with dynamic pricing, promo codes (`SIGNAL10`), installments, QR ticket confirmation |
| `/dashboard` | Member suite: bookings, wishlist, documents, loyalty progress, 2FA settings |
| `/admin` | Enterprise console: KPI cards, animated revenue chart, destination mix donut, bookings table |

## API routes

- `POST /api/concierge` — AI chat (OpenAI when keyed, rule-based concierge otherwise)
- `POST /api/planner` — itinerary generator
- `POST /api/booking` — Zod-validated booking intake (Stripe/Resend/Twilio hooks documented inline)
- `POST /api/newsletter` — subscription (Resend-ready)

## Database

Full production schema in [prisma/schema.prisma](prisma/schema.prisma): users & roles,
membership tiers, destinations, hotels/rooms/availability (dynamic-pricing snapshots),
bookings, payments & installments, coupons, gift cards, wishlist, reviews, documents,
notifications, support tickets, referrals, audit logs.

```bash
docker compose up -d db redis
npx prisma migrate dev
```

## Design system

- Palette: Midnight `#050505` · Royal `#0047FF` · Gold `#D4AF37` · Emerald `#00C897` · Silver `#C9CED6`
- Typography: Space Grotesk (display) + Inter (body) via `next/font`. Satoshi/Clash Display can be
  added as local fonts (they are not on Google Fonts).
- Glassmorphism utilities (`.glass`, `.glass-strong`, `.glass-reflect`), aurora backgrounds,
  gold shimmer text, glow buttons, 3D tilt cards, custom gold cursor, luxury preloader,
  Lenis smooth scroll. Dark mode is default; light mode via the navbar toggle (persisted).

## Production notes

- SEO: metadata + OpenGraph + Twitter cards, Schema.org (`TravelAgency`, `TouristDestination`),
  dynamic `sitemap.xml`, `robots.txt`, canonical URLs.
- PWA: `manifest.webmanifest` + SVG icon; add a service worker (e.g. `@serwist/next`) for offline.
- Performance: Server Components by default, `next/image` AVIF/WebP, dynamic import for the
  Three.js bundle (never blocks first paint), lazy scroll-triggered sections.
- Security: headers in `next.config.ts`, Zod on every API boundary, role enum + audit log in schema.
- Deploy: `docker compose up` or Vercel. Set `output: "standalone"` in `next.config.ts` for the Docker image.
