A Mad Libs–style game built for our wedding Guests at different tables scan a QR code, answer playful prompts, and contribute to a one-of-a-kind love letter — revealed at the sweetheart table.
- 🎯 Table-specific question flow (supports 7 tables + sweetheart table)
- 💡 16 creative, customizable blanks (adjectives, verbs, objects, etc.)
- 💌 Auto-generates a personalized letter from guest responses
- 📱 Mobile-friendly, no install required
- 🧼 Simple to deploy and easy to adapt for other occasions
| Layer | Tech |
|---|---|
| Frontend | React, Vite, CSS Modules |
| Backend | Node.js, Express, AWS Lambda |
| Storage | Amazon S3 bucket |
| Hosting | Vercel (frontend), Lambda (backend) |
| Dev Tools | Git, VS Code, React DevTools, QR utils |
- Guest opens the game and selects their table.
- They are guided through two fun prompts.
- Their answers are submitted via API to the backend.
- The Sweetheart Table has a password to unlock the final letter.
- Final letter is composed from all merged entries and displayed in a heartfelt, funny paragraph.
- All submissions are merged into one file:
submission.json - On every
POST /submit, new answers are merged with existing ones - Duplicate keys (e.g. same prompt ID) will overwrite older ones
- On
GET /results, the merged data is returned as a flat object
Frontend uses:
VITE_API_BASE=https://your-lambda-url.amazonaws.com
VITE_SWEETHEART_PASSWORD=your-secret-passwordcd frontend
npm install
npm run devIn server/, use serverless-http and zip-based AWS Lambda deployment.
- When backend changes:
- Zip the server/ contents (excluding node_modules)
- Upload to Lambda function via AWS Console
-- Test with:
curl -X POST https://your-lambda-url.amazonaws.com/submit \
-H "Content-Type: application/json" \
-d '{ "1": "spicy", "2": "dancing" }'
This app was crafted to bring smiles and connection to our special day.
But the architecture is reusable for:
- Birthday party Mad Libs
- Baby showers
- Inside-joke generator games
- Storytelling workshops
- Classroom or event icebreakers
MIT License — feel free to use, adapt, and remix.
🥂
Made with 💖 for our family and friends.