← Về thư mục
Application Context — Vietnam Wedding Guide v2
- Application Name: Vietnam Wedding Guide (VWG)
- Primary Domain:
weddinginvietnam.com (Managed on Cloudflare)
- Studio Subdomain:
studio.weddinginvietnam.com
- Secondary Domain:
vietnamweddingguide.com (Managed on Cloudflare, 301 Permanent Redirect to https://weddinginvietnam.com with HTTPS)
- Email Infrastructure (Cloudflare Email Routing + Resend):
info@weddinginvietnam.com: Public editorial & general inquiry email across UI/Footer/Forms. Forwarded via Cloudflare to vietnamweddingguide@gmail.com.
nhivo@vietnamweddingguide.com: Founder personal alias. Forwarded via Cloudflare to nhivo2504@gmail.com.
- Transactional / Inquiries Dispatcher (
/api/contact, /api/partnership): Dispatches from Vietnam Wedding Guide <info@weddinginvietnam.com> to vietnamweddingguide@gmail.com (or CONTACT_NOTIFICATION_EMAIL) with client's email in replyTo.
- Monorepo Structure:
frontend/: Next.js 16+ App Router, Tailwind CSS v4, TypeScript, Lucide Icons, Shadcn UI base
studio/: Sanity Studio v3 standalone workspace
- Key Modules & Routes:
/: Luxury editorial homepage featuring interactive Vietnam Wedding Map cartography (Sapa, Ha Long Bay, Da Nang, Ninh Van Bay, Nha Trang, Dalat, Saigon, Phu Quoc), dynamic Curated Venues marquee, Founder Nhi Võ story (9+ years hospitality), luminous gold partnership showcase highlighting dual .COM domain assets (zero-price), and CTA banner
/partnership: Strategic partnership & co-development landing page (licensing, monetization, tiers, governance, proposal form decomposed into 8 sub-modules in frontend/components/partnership/)
/services & /services/[slug]: Bespoke destination wedding consulting (Couple & B2B Advisory) with dynamic CMS packages, deliverables, process steps, and FAQs
/blog & /blog/[slug]: In-depth editorial wedding guides & planning framework with resolved authors & categories
/about: Brand philosophy and Founder Nhi Võ biography connected to CMS settings
/contact: Bride & groom destination inquiry form with dynamic services selection & concierge response
/api/partnership: Proposal submission API (Sanity CMS partnershipInquiry + Resend notification)
/api/contact: Direct inquiry API (Sanity CMS inquiry + Resend notification)
- Full system architecture documented in
ARCHITECTURE.md.
Tech Stack
- Framework: Next.js 16.2.10 (App Router, Webpack engine, React 19)
- CMS: Sanity Studio v3 (
@sanity/cli, @sanity/orderable-document-list, @sanity/vision)
- Styling: Tailwind CSS v4 (CSS-first,
@theme in globals.css)
- Architecture Pattern: Hybrid Dual-Rendering (Bespoke Editorial Views default + Page Builder Blocks override)
- Package Manager:
pnpm via corepack
- Hosting Target: Vercel
Brand Tokens & Design System
- Ivory:
#FAF8F5 (--color-brand-ivory) — Main background
- Sand:
#F3EFEA (--color-brand-sand) — Secondary sections, alternates
- Gold:
#C5A880 (--color-brand-gold) — Primary accent, CTAs, icons
- Gold Hover:
#B0936C (--color-brand-gold-hover)
- Dark:
#1C1917 (--color-brand-dark) — Main typography, dark footer
- Muted:
#78716C (--color-brand-muted) — Subtitles, captions
- Surface:
#FFFFFF (--color-brand-surface) — Card backgrounds
- Border:
#E7E2DB (--color-brand-border) — Dividers and borders
- Fonts:
Philosopher: Headings, titles, brand wordmark (--font-title)
Be Vietnam Pro: Body, UI text, metadata (--font-body)
Environment Variables
frontend/.env.local
NEXT_PUBLIC_SITE_URL: Production or local URL
NEXT_PUBLIC_STUDIO_URL: Studio URL (studio.weddinginvietnam.com or local http://localhost:3333)
NEXT_PUBLIC_SANITY_PROJECT_ID: Sanity Project ID
NEXT_PUBLIC_SANITY_DATASET: Sanity Dataset (production)
SANITY_API_READ_TOKEN: Sanity read token
studio/.env.local
SANITY_STUDIO_PROJECT_ID: Sanity Project ID
SANITY_STUDIO_DATASET: Sanity Dataset (production)
SANITY_STUDIO_PREVIEW_URL: Preview URL