A beautiful, interactive photo booth web application built with Next.js that lets you capture memories with customizable frames and stickers.
- Live Camera Feed: Access your webcam to take photos in real-time
- 4-Photo Sessions: Capture 4 photos with a countdown timer between each shot
- 9 Unique Frames: Choose from various themed frames including:
- Lavender Doodle
- Bear Polaroid
- Film Vintage
- New Year Kawaii
- Sky Cloud
- Y2K Glitter
- Blue Stars
- Pink Hearts
- Panda Cute
- Draggable Stickers: Add and position 10+ cute stickers on your photo strip
- Custom Captions: Add personalized text to your photo strips
- High-Quality Export: Download your creation as a PNG image
- Node.js 20.x or higher
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone <repository-url>
cd lavender-booth- Install dependencies:
npm install- Run the development server:
npm run dev- Open http://localhost:3000 in your browser
- Allow Camera Access: Grant permission when prompted to use your webcam
- Select a Frame: Choose your favorite frame from the right panel
- Start Session: Click the "Start 💜" button to begin
- Pose: Get ready for 4 photos with a 3-second countdown between each
- Customize: Add stickers by clicking them, drag to reposition
- Add Caption: Type a custom message in the text field
- Download: Click "Download ✨" to save your photo strip
- Framework: Next.js 16 with App Router
- UI Library: React 19
- Language: TypeScript
- Styling: Tailwind CSS 4
- Image Export: html-to-image
- Draggable Elements: react-rnd
lavender-booth/
├── app/
│ ├── layout.tsx # Root layout
│ ├── page.tsx # Main page component
│ └── globals.css # Global styles
├── components/
│ ├── CameraView.tsx # Webcam capture component
│ ├── FrameSelector.tsx # Frame selection UI
│ ├── PhotoStrip.tsx # Photo strip with stickers
│ ├── TimerOverlay.tsx # Countdown timer
│ ├── StickerPanel.tsx # Sticker selection
│ └── BackgroundSelector.tsx
├── lib/
│ └── generateStrip.ts # Photo strip generation logic
├── public/
│ ├── frames/ # Frame images
│ ├── stickers/ # Sticker images
│ └── backgrounds/ # Background images
└── package.json
npm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLint
This application requires:
- Modern browser with WebRTC support
- Camera/webcam access
- JavaScript enabled
Tested on:
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
Contributions are welcome! Please feel free to submit a Pull Request.
- Frame and sticker assets from various sources
- Inspired by classic photo booth experiences
- Built with love and lavender vibes 💜
For issues or questions, please open an issue on the repository.
Made with 💜 by the Dreamy PhotoBooth team