A vibrant, highly interactive web application for an artisan ice cream parlour built with Next.js (App Router), TypeScript, Tailwind CSS, and Framer Motion.
- π‘ 3D 360Β° Cylindrical Rotating Menu: Interactive virtual cylinder with mouse drag, touch swipe, and snap-to-front physics.
- π¨ Build Your Own Sundae Studio: Live graphical scoop stacking, waffle vessels, warm drizzles, crunch toppings, and "Surprise Me" generator.
- πͺ΅ 4-Scoop Tasting Flight Paddle: Wooden parlour paddle builder with curated pairings and waffle crisps for Rs. 950.
- πͺ Vintage Ice Cream Cart Catering: Event booking calculator with 3 package tiers and instant WhatsApp inquiry.
- ποΈ Table Reservation System: Velvet Lounge, Garden Patio, and Scoop Bar booking with instant confirmation references.
- π± 1-Tap WhatsApp Checkout: Auto-formatted order receipts sent directly to the parlour.
- π³ Stripe Checkout Integration: Online card payment support with fallback demo testing.
- π±π° Sri Lankan Rupee (LKR /
Rs.): Realistic pricing throughout the entire application. - π Celebration Confetti & Particle Effects: Satisfying delight micro-interactions on checkouts and bookings.
- πΈ Authentic Parlour Gallery: Curated gelato counter, parlour seating, and terrace photos with lightbox viewer.
npm installcp .env.example .env.localnpm run devOpen http://localhost:3000 to view the application.
src/
βββ app/
β βββ page.tsx β Homepage (3D Carousel, Sundae Studio, Tasting Flight, Catering)
β βββ menu/page.tsx β 360Β° Menu & Filter catalog
β βββ menu/[slug]/page.tsx β Individual flavor detail page
β βββ custom-sundae/ β Dedicated Sundae Studio builder
β βββ tasting-flight/ β Dedicated 4-Scoop Tasting Flight builder
β βββ catering/ β Dedicated Ice Cream Cart Event Catering page
β βββ book-table/ β Dedicated Table Reservation page
β βββ order/page.tsx β Cart, WhatsApp Order, & Stripe Checkout
β βββ order/success/ β Payment & Order Confirmation page
β βββ actions/ β Server actions (Stripe session creation)
βββ components/ β Interactive UI components
βββ lib/
βββ cart.tsx β Cart context with localStorage persistence
βββ data.ts β Artisan flavors & authentic parlour photos
βββ format.ts β Sri Lankan Rupee (LKR) formatting helper
βββ stripe.ts β Stripe payment client
- Push this repository to GitHub.
- Import the project into Vercel.
- Set environment variables if using live Stripe payments (
STRIPE_SECRET_KEY,NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY,NEXT_PUBLIC_APP_URL). - Deploy!