-- Romantic add-ons (e.g., candlelight dinner, couple massage) CREATE TABLE honeymoon_addons ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name VARCHAR(255), price DECIMAL(10,2), location_specific BOOLEAN DEFAULT FALSE, location_id UUID REFERENCES locations(id) );
{ "recommendations": [ { "packageId": "pkg_123", "name": "Maldives Romantic Escape", "destination": "Maldives", "durationDays": 7, "basePrice": 4200, "vibe": "beach", "matchScore": 98 } ] } Book a honeymoon with add-ons. honeymoon
profileId
const handleSubmit = async () => { await fetch("/api/honeymoon/profile", { method: "POST", body: JSON.stringify({ userId, ...profile }), headers: { "Content-Type": "application/json" } }); setStep(step + 1); }; -- Romantic add-ons (e
useEffect(() => { const interval = setInterval(() => { const diff = new Date(weddingDate) - new Date(); setDaysLeft(Math.ceil(diff / (1000 * 60 * 60 * 24))); }, 1000); return () => clearInterval(interval); }, [weddingDate]); setStep] = useState(1)
{ "profileId": "prof_abc", "packageId": "pkg_123", "checkIn": "2025-06-20", "checkOut": "2025-06-27", "addOnIds": ["addon_spa", "addon_dinner"] } Booking confirmation + total price. GET /api/honeymoon/booking/:bookingId Fetch booking details with itinerary and romantic tips. 4. Frontend UI Components (React + TailwindCSS) HoneymoonWizard.jsx – Step-by-step setup import { useState } from "react"; export default function HoneymoonWizard({ userId }) { const [step, setStep] = useState(1); const [profile, setProfile] = useState({ weddingDate: "", totalBudget: "", vibe: "relaxing" });
{ "userId": "uuid", "weddingDate": "2025-06-15", "preferredTravelStart": "2025-06-20", "preferredTravelEnd": "2025-06-30", "totalBudget": 5000, "vibe": "relaxing", "dietaryRestrictions": "vegetarian" } 201 Created with profile object. GET /api/honeymoon/recommendations Get AI-curated honeymoon packages based on profile.