This is a submission for Weekend Challenge: Passion Edition
What I Built
Every developer has one: the side project you started with real love, pushed afew passionate commits to, and then... life. The tab closed. The flame wentquiet. Mine is spark, an intentionsetting app I started for my partner and me as the new year turned. One commit.190 days of silence.
Rekindle is a coach for exactly that repo. Paste a dormant GitHub projectand it gives you three things:
- A diagnosis: why the flame died, read honestly from your commit cadenceand the gap between README ambition and what got built.
- A rekindle plan: three steps, the first one deliberately small enough todo in under 15 minutes tonight.
- A corner speech: a roughly 90-word hype speech about YOUR project, byname, delivered out loud like a cornerman between rounds.
The theme is passion. This is the tool for the week after the passion: the onethat gets you to open the project again.
Demo
Live app: https://rekindle-sooty.vercel.app
Try it on any public GitHub repo you've gone quiet on. If you just want to seea result instantly, this linkrenders a frozen real result (a live run against my abandoned spark repo,with the real ElevenLabs audio). Everything else is computed live per request.
Code
OrionArchitekton
/
rekindle
Your abandoned side project misses you. Gemini diagnoses why the flame died; ElevenLabs delivers the comeback speech. DEV Weekend Challenge: Passion Edition.
🔥 Rekindle
Your abandoned side project misses you.
Paste a dormant GitHub repo. Rekindle reads its README, recent commits, and top-level files, then delivers three things:
- A diagnosis: why the flame died, read honestly from the commit cadence and the gap between README ambition and reality.
- A rekindle plan: three steps, the first one small enough to do in under 15 minutes tonight.
- A corner speech: a roughly 90-word hype speech about YOUR project, by name, spoken out loud like a cornerman between rounds.
Built for the DEV Weekend Challenge: Passion Edition because passion is also the love that fuels late-night side projects, and every developer has one whose flame went quiet.
How it works
GitHub URL --> GitHub API (README, commits, tree)
|
v
Gemini 2.5 Flash (temperature 0, JSON output)
| diagnosis + embers + plan + hype speech
v
ElevenLabs TTS --> your…How I Built It
Next.js 16 (App Router) with two server routes and a deliberately smallsurface:
GitHub URL --> GitHub API (README, last commits, file tree)
|
v
Gemini 2.5 Flash (temperature 0, JSON output, thinking off)
| diagnosis + embers + plan + hype speech
v
ElevenLabs TTS --> the corner speech, out loud
Google AI does the reading. /api/rekindle snapshots the repo (metadata,README excerpt, last 10 commits, top-level files) and hands it to Gemini 2.5Flash with temperature: 0, responseMimeType: application/json, and thinkingdisabled, so output is fast, stable, and cheap. The interesting part wasthe failure I hit first: with thinking enabled, Gemini's reasoning tokens countagainst maxOutputTokens, so my 2048 cap silently truncated the JSON mid-fieldand my parser (correctly) rejected it. Thinking off + a bigger cap fixed it.The model output is schema-validated and length-clamped server-side; anythingmalformed renders as an error, never as half-parsed UI.
ElevenLabs does the believing. The hype speech only lands when you hear it.One catch: a public TTS endpoint on a server-side key is a free-for-all walletdrain, so /api/rekindle HMAC-signs the speech text it generates and/api/speak refuses anything unsigned (I verified the refusal with aforged-token test, and rate limits sit on both routes). Nobody gets to use mykey as a generic text-to-speech proxy.
Honest demo mode. /?demo=1 server-renders a frozen result so the demo isdeterministic. The frozen content is a real captured output from a live run,checked in with its matching real audio, and the page discloses it.
Unit tests cover the pure core (URL parsing, prompt build, defensive JSONparse). Built end-to-end in a Claude Code session (Claude Fable 5); the committrailers carry the co-author record, and I made the calls on idea, scope, andsubmission.
Prize Categories
Best Use of Google AI and Best Use of ElevenLabs: Gemini 2.5 Flashreads the repo and writes the diagnosis, plan, and speech as strict JSON;ElevenLabs (eleven_multilingual_v2) turns the speech into the voice in yourcorner. The two are chained: what Gemini writes about your specific repo isexactly what ElevenLabs says out loud.
Thanks for reading. Now go run npm install on the one you know I'm talkingabout. 🔥


Top comments (0)