A beautiful, romantic web platform that transforms wedding photography into an interactive experienceβencouraging guests to capture heartfelt moments and help couples collect unforgettable memories.
- Wedding-Specific Photo Prompts: Generate romantic, meaningful photo challenges for wedding guests
- QR Code Generation: Beautiful, print-ready QR codes for table cards and wedding programs
- Mobile-First Experience: Seamless photo upload experience without app installation
- Real-Time Gallery: Elegant, unified gallery for couples to view all wedding memories
- Guest Engagement: Transform shy guests into active participants in the love story
- Instant Sharing: Share galleries and individual photos with friends and family
- Node.js 18+ and npm
- PostgreSQL database (we recommend Neon)
- Cloudflare R2 or S3-compatible storage
- Email service (Resend recommended)
-
Clone the repository
git clone https://github.com/your-username/event-foto-prompts.git cd event-foto-prompts/photo-prompt-app -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Fill in your database URL, storage credentials, and email service configuration.
-
Initialize the database
npx prisma migrate deploy npx prisma generate
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
- Frontend: Next.js 15 with App Router, React 19, TypeScript
- Styling: Tailwind CSS with shadcn/ui components
- Database: PostgreSQL with Prisma ORM
- Authentication: NextAuth.js with magic link support
- File Storage: Cloudflare R2 (S3-compatible)
- Deployment: Vercel
- Email: Resend for transactional emails
- Testing: Vitest for unit and integration tests
- Create an Event: Sign up and create your wedding photo challenge
- Customize Prompts: Add romantic photo prompts for your guests
- Generate QR Codes: Download beautiful QR codes for your wedding materials
- Share & Enjoy: Watch as guests upload photos throughout your special day
- Scan QR Code: Use any camera app to scan the QR code at the wedding
- View Prompt: See the romantic photo challenge
- Upload Photo: Take and upload your photo with an optional caption
- Add Your Name: Let the couple know who captured the moment
Run the test suite:
npm run testWatch mode for development:
npm run test:watchThe application is designed to be deployed on Vercel with zero configuration:
- Connect your repository to Vercel
- Set environment variables in your Vercel dashboard
- Deploy: Vercel will automatically build and deploy your application
photo-prompt-app/
βββ src/
β βββ app/ # Next.js App Router pages
β βββ components/ # Reusable UI components
β βββ lib/ # Utility functions and configurations
β βββ hooks/ # Custom React hooks
βββ prisma/
β βββ schema.prisma # Database schema
β βββ migrations/ # Database migrations
βββ public/ # Static assets
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js for the amazing React framework
- Prisma for the excellent database toolkit
- Tailwind CSS for the utility-first CSS framework
- shadcn/ui for the beautiful component library
Build a beautiful, romantic web platform specifically for weddings that transforms wedding photography into an interactive experienceβencouraging guests to capture heartfelt moments, connect with each other, and help couples collect unforgettable memories effortlessly.
β’ Wedding guests often stick to familiar faces or take generic photos, missing opportunities to capture unique perspectives.
β’ Couples struggle to collect all the special moments from their wedding day and end up with scattered photo collections from different guests.
β’ Traditional wedding photography focuses on formal shots, missing candid interactions and guest perspectives.
β’ Generate elegant, shareable URLs (printed as QR codes) for wedding photo challenges.
β’ Present guests with romantic, wedding-specific photo prompts (e.g. "Capture the couple's first dance" or "Photo with someone you just met").
β’ Allow instant mobile uploads with personal captions and guest names.
β’ Provide couples with a beautiful, unified gallery to cherish and share all their wedding memories.
β’ Romance-focused: Every interaction is designed for the wedding experience with elegant, loving language.
β’ Guest engagement: Transforms shy guests into active participants in the couple's love story.
β’ Seamless experience: Mobile-first flow with no app installationβperfect for all wedding guests.
β’ Curated memories: Pre-designed wedding-specific prompts capture moments professional photographers might miss.
β’ Unified love album: One beautiful gallery containing every guest's perspective of the special day.
- Wedding setup: Create romantic photo challenges with wedding-specific prompts.
- Elegant QR codes: Print-ready codes for table cards, wedding programs, or signage.
- Romantic prompts: Guests scan β see heartfelt photo challenges β upload with love.
- Beautiful gallery: Couples view all wedding photos in an elegant, shareable album.
- Personal touches: Guest names, captions, and romantic messaging throughout.
- Couple (Wedding Hosts)
- Create wedding photo challenge
- Customize romantic prompt list
- Distribute QR codes to guests
- Enjoy beautiful gallery of all wedding memories
- Wedding Guest
- Scan QR code at reception
- Read romantic photo prompt
- Capture moment, upload with optional caption and name
- Become part of the couple's love story
- Number of weddings using the service
- Guest participation rate (% of guests who upload photos)
- Average photos per wedding
- Couple satisfaction and referral rate
- Repeat usage for anniversaries/related celebrations
- MVP β core wedding flows: photo challenge creation, QR codes, romantic prompts, uploads, elegant gallery
- Wedding Enhancements β anniversary reminders, guest book integration, professional photographer collaboration
- Love & Growth β wedding vendor partnerships, anniversary celebrations, family event expansion
Goal: Get to a good MVP fast, with a tech stack that is easy to maintain and scale. Choose cheap and well tested options. Choose tools that are well understood by AI so that AI can help us with the development.
- Frontend framework
- CSS / component library
- Backend framework
- Database
- Object storage
- Hosting / CDN
- Authentication
- QR-code generation
- CI/CD & DevOps
- Documentation of final decisions Note see "Tech stack spec.md" for more details
- Initialize Git repos (frontend & backend)
- Configure CI/CD pipelines (done later, or maybe not needed when using Vercel)
- Provision database & object storage (done locally for now)
-
POST /eventsβ create event (slug, type, settings) -
POST /events/:slug/promptsβ create new prompt -
PUT /events/:slug/prompts/:promptIdβ update prompt -
DELETE /events/:slug/prompts/:promptIdβ delete prompt -
GET /events/:slug/promptsβ fetch next prompt -
POST /events/:slug/uploadsβ handle image + metadata - Serve generated QR as SVG/PNG
- Organizer Dashboard (list/create events)
- Event-creation wizard (slug, type, prompts)
- Guest upload page (prompt display + upload form)
- Public gallery page (grid of uploads)
- Deploy MVP to staging & production
- Mobile-first QA & cross-browser testing
- Soft launch with pilot users
- Collect initial feedback & bug reports
- URL-Slug is a technical term, we should use a more user friendly term for it, and also make it mor clear what it is (also maybe shwo the whole url)
- clicking on "Create Event" should show a loading indicator
- clicking on "create event" should, if successful redirect to the event dashboard, on mobile (on desktop, at least just now, it worked). I think it does but in the actually deployed version Im redirected to the auth/signin page, even though I should be logged in
- magic link email is not sent in deployed state (maybe we need more logs to debug this)
- I created an api key, put it into the env vars on vercel
- newly created events are not visible in the dashboard (I see in the db that these events were created and are correctly associated with the email)
- Moderation & approval queue
- Analytics dashboard (scans, uploads, per-prompt stats)
- Bulk export (ZIP of images, PDF of QR cards)
- Social-share integrations (pre-formatted cards)
- Gamification: badges, leaderboards, point system
- Custom branding & white-label domains
- Multilingual UI support
- Public API & third-party webhooks
- UI/UX refinements & accessibility audit
- Performance optimizations & caching
- Comprehensive user onboarding & docs
Next Steps:
- Assign owners & rough timelines to each sub-task.
- Kick off Tech-Stack evaluation sprint.
- Schedule weekly syncs to track MVP progress.