{"id":51892819,"url":"https://github.com/pol-cova/boppi","last_synced_at":"2026-07-26T06:03:57.296Z","repository":{"id":370973376,"uuid":"1298136201","full_name":"pol-cova/boppi","owner":"pol-cova","description":"Private daily moments turned into one tiny collaborative song.","archived":false,"fork":false,"pushed_at":"2026-07-12T10:44:31.000Z","size":121,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-12T12:07:55.361Z","etag":null,"topics":["bun","convex","hackathon","nextjs","social-app","typescript","vercel","web-audio"],"latest_commit_sha":null,"homepage":"https://boppi.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pol-cova.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-12T09:09:20.000Z","updated_at":"2026-07-12T10:44:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/pol-cova/boppi","commit_stats":null,"previous_names":["pol-cova/boppi"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/pol-cova/boppi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pol-cova%2Fboppi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pol-cova%2Fboppi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pol-cova%2Fboppi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pol-cova%2Fboppi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pol-cova","download_url":"https://codeload.github.com/pol-cova/boppi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pol-cova%2Fboppi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35902838,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-26T02:00:06.503Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bun","convex","hackathon","nextjs","social-app","typescript","vercel","web-audio"],"created_at":"2026-07-26T06:03:56.620Z","updated_at":"2026-07-26T06:03:57.285Z","avatar_url":"https://github.com/pol-cova.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# boppi\n\n[![Live demo](https://img.shields.io/badge/try_boppi-live-191919?style=flat-square\u0026logo=vercel\u0026logoColor=white)](https://boppi.vercel.app)\n[![Bun](https://img.shields.io/badge/built_with-Bun-f9f1e1?style=flat-square\u0026logo=bun\u0026logoColor=14151a)](https://bun.sh)\n[![Convex](https://img.shields.io/badge/backend-Convex-ff6b5b?style=flat-square)](https://convex.dev)\n\n![Boppi screenshot](public/boppi-screenshot.png)\n\n## Little moments. One tiny song.\n\nBoppi 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.\n\n**[Open Boppi →](https://boppi.vercel.app)**\n\n## Why it is fun\n\n- One little thing per person, per day\n- A playful shared room instead of a feed\n- A tiny song made from the room’s moments\n- A public, read-only link to share with friends\n- A public spot where little Bops can be discovered\n\n## Built with\n\nNext.js · React · TypeScript · Bun · Convex · Gemini · Strudel · Vercel\n\n## Run it\n\n```bash\nbun install\nbunx convex dev\nbun run dev\n```\n\nOpen [localhost:3000](http://localhost:3000).\n\n## The cool part: Gemini writes the music\n\nWhen 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.\n\nStrudel 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.\n\nTo enable Gemini, add this to the **production Convex deployment**—not `.env.local` and not a `NEXT_PUBLIC_*` value:\n\n```bash\nbunx convex env set GEMINI_API_KEY \"...\" --prod\n```\n\nGemini 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.\n\nStrudel 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\u0026apos;s license terms.\n\n## Links\n\n- [Live app](https://boppi.vercel.app)\n- [Make a public Bop](https://boppi.vercel.app/create)\n- [Visit the public spot](https://boppi.vercel.app/spot)\n- [GitHub](https://github.com/pol-cova/boppi)\n\nMade for close friends and ordinary good days.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpol-cova%2Fboppi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpol-cova%2Fboppi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpol-cova%2Fboppi/lists"}