An interactive web application that simulates the traditional Sri Lankan Pol Thel Pahana Paththuwa (coconut oil lamp lighting ceremony) for an online Awrudu Uthsawaya celebration.
- Interactive Oil Lamp β A real brass lamp image with 7 precise wick points, each individually clickable
- Flame Animation β Smooth flicker animation with glow effect when a wick is lit
- Celebration Overlay β Confetti burst and Sinhala New Year message when all 7 wicks are lit
- Live Sync β Pusher-based real-time state sharing compatible with serverless hosting (Vercel)
- State Persistence β Upstash Redis ensures lit wicks are remembered across sessions and restarts
- Background Music β Toggle traditional Awrudu audio
- Progress Bar β Visual tracker showing how many wicks have been lit
- Countdown Timer β Live countdown to the Sinhala New Year moment (April 13, 2026 at 6:17 AM)
- Responsive Design β Works on desktop and mobile
| Layer | Technology |
|---|---|
| Framework | Next.js 15 (App Router) |
| Styling | Tailwind CSS v4 + Vanilla CSS |
| Animations | Framer Motion |
| Real-time Events | Pusher Channels |
| Persistence | Upstash Redis |
| Language | TypeScript |
| Package Manager | pnpm |
pahana-app/
βββ app/
β βββ api/lamp/route.ts # Serverless API (Redis sync + Pusher trigger)
β βββ globals.css # Design tokens, animations, base styles
β βββ layout.tsx # Root layout & metadata
β βββ page.tsx # Main page β lamp, countdown, progress, controls
βββ components/
β βββ OilLamp.tsx # Lamp image + wick overlay positioning
β βββ Wick.tsx # Individual wick button + flame host
β βββ Flame.tsx # Animated SVG flame component
β βββ Celebration.tsx # All-lit overlay with confetti
β βββ ProgressBar.tsx # Wick lit progress indicator
β βββ AudioToggle.tsx # Background music on/off toggle
βββ hooks/
β βββ useLampState.ts # Pusher real-time hook (syncs with API)
βββ public/
β βββ lamp.png # Brass oil lamp source image (Γγ°γ€500px)
β βββ header-01.png # Sinhala title header image
β βββ header-02.png # Awrudu year header image
β βββ ... # Audio & other assets
- Node.js 18+
- pnpm
- Pusher Account (Free tier)
- Upstash Redis Database (Free tier)
Create a .env.local file in the pahana-app/ directory and add your keys:
# Pusher NEXT_PUBLIC_PUSHER_APP_KEY="your-key" NEXT_PUBLIC_PUSHER_CLUSTER="your-cluster" PUSHER_APP_ID="your-id" PUSHER_SECRET="your-secret" # Upstash Redis UPSTASH_REDIS_REST_URL="your-url" UPSTASH_REDIS_REST_TOKEN="your-token"
# Install dependencies pnpm install # Start the development server pnpm dev
Open http://localhost:3000 in your browser.
- Palette β Deep dark brown background (
#0f0500) with gold (#f5c842), amber, and orange accents - Typography β Cinzel (headings) + Noto Serif Sinhala (Sinhala script)
- Wick coordinates β Measured precisely from the Γγ°γ€500px lamp image and mapped as percentages onto the container for pixel-perfect flame placement
Light all 7 wicks to complete the ceremony and receive the New Year blessing:
ΰ·ΰ·ΰΆΆ ΰΆ ΰΆ½ΰ·ΰΆΰ· ΰΆ ΰ·ΰ·ΰΆ»ΰ·ΰΆ―ΰ·ΰΆ―ΰΆΰ· ΰ·ΰ·ΰ·ΰ· ! (Wishing you a Happy New Year!)