Boppi is a private room for 2–4 friends—or a one-person public Bop. Add a photo, a feeling, and a vibe. Together, they become a tiny song you can share.
- One little thing per person, per day
- A playful shared room instead of a feed
- A tiny song made from the room’s moments
- A public, read-only link to share with friends
- A public spot where little Bops can be discovered
Next.js · React · TypeScript · Bun · Convex · Gemini · Strudel · Vercel
bun install
bunx convex dev
bun run devOpen localhost:3000.
When someone adds a moment, Gemini looks at the image and caption. When a Bop is made, Gemini acts as the tiny music director: it chooses the mood, writes a safe Strudel pattern with melody, bass, and rhythm, and saves that code with the shareable Bop.
Strudel then performs the code in the browser. That means the music is immediate, remixable, and does not need an ElevenLabs audio file or API call. The app still works without Gemini using a built-in fallback pattern.
To enable Gemini, add this to the production Convex deployment—not .env.local and not a NEXT_PUBLIC_* value:
bunx convex env set GEMINI_API_KEY "..." --prodGemini calls happen in the Convex background action after a photo or standalone Bop is created. Convex handles the room, database, realtime updates, and storage either way.
Strudel is pinned as @strudel/web@1.0.3 and is licensed under AGPL-3.0-or-later. If you distribute this integration, keep the source and follow Strudel's license terms.
Made for close friends and ordinary good days.
