I Built a Graveyard for My Dead Side Projects - With AI Eulogies & a 3D Cemetery A developer built DevGraveyard, a gothic memorial platform where developers can bury their abandoned side projects with AI-generated eulogies. The platform uses Google Gemini to write dramatic breakup letters based on GitHub commit data, and features a 3D cemetery built with Three.js and React Three Fiber. The project is live at devgraveyard.varshithvhegde.in. This is a submission for Weekend Challenge: Passion Edition Every developer has a graveyard of side projects β€” started with fire, abandoned quietly on a Tuesday. They deserved better than an empty GitHub repo gathering digital dust. DevGraveyard is a gothic memorial platform where developers give their abandoned passion projects a proper burial. Connect your GitHub, pick a dead repo, carve its epitaph β€” and watch Gemini AI write a dramatic breakup letter from you to the project. Here's what it does: My own ARweave repo had 56 commits, a 2-day peak streak, 30 commits on its best day. Cause of death: "Never Made it Past Localhost." Last words: "feat: overlay plane in 3D builder β€” drag/scale image on marker, position saved to DB and restored in AR viewer." It worked until it worked. πŸ”— Live β†’ devgraveyard.varshithvhegde.in A memorial for your abandoned side projects. They deserved better than an empty GitHub repo gathering digital dust. Live β†’ devgraveyard.varshithvhegde.in Every developer has a graveyard of passion projects β€” started with fire, abandoned quietly on a Tuesday. DevGraveyard gives them a proper burial. /graveyard-3d . Click tombstones…| Layer | Tech | |---|---| | Frontend | Next.js 14 App Router , TypeScript, Tailwind CSS, shadcn/ui | | Auth + Database | Supabase GitHub OAuth, Postgres, Row Level Security | | AI | Google Gemini gemini-2.5-flash | | 3D | Three.js + React Three Fiber + @react-three/drei | | Animations | Motion Framer Motion successor | | Deployment | Vercel | When you click "Bury a Project" , a 3-step wizard walks you through: This is the technical heart of the project. When you bury a repo, we paginate through the entire commit history via the GitHub API and compute what I call "obsession data" : // From src/lib/github/analyze.ts export function computePeakObsession commits: GitHubCommit { // commits per day β†’ longest consecutive streak // latest commit between midnight–5am β†’ "latest night session" // max commits in a single day β†’ "best day" // ... } These numbers feed directly into the tombstone β€” and into the Gemini prompt. A project that died after 30 commits on its best day tells a different story than one with 3 total commits. The eulogy prompt is carefully engineered to produce something specific, not generic: Write exactly 3 paragraphs. Format as a letter FROM the developer TO the project. Tone: dramatic, darkly funny, genuinely melancholic. Opening: "Dear {repo name}," Reference at least 2 of these real data points: - Peak obsession: 30 commits in a single day - Latest night session: 2:34 AM - Cause of death: "Never Made it Past Localhost" - Last commit message: "feat: overlay plane in 3D builder..." Close with: "Yours, but not anymore, β€” A Tired Developer" Max 250 words. No markdown. The results are genuinely surprising. Gemini knows you committed at 2 AM. It writes about that specific obsession. Here's what it produced for my ARweave project: "I remember the fervor, the peak obsession when I clocked 30 commits in a single day, mapping out every PLpgSQL schema and every front-end interaction. We built features that felt so robust within the confines of our little local development environment. You were a vibrant, if demanding, companion, demanding all my CPU cycles and mental bandwidth..." The eulogy reveals with a typewriter animation when first generated, then persists in Supabase forever. The 3D view at /graveyard-3d is a full Three.js scene built with React Three Fiber. The tombstone shape is a single ExtrudeGeometry from a THREE.Shape β€” a rectangle with absarc for the semicircular arch. Much cleaner than a box + half-cylinder: js function makeTombShape { const w = 0.34, h = 0.95; const shape = new THREE.Shape ; shape.moveTo -w, 0 ; shape.lineTo -w, h ; shape.absarc 0, h, w, Math.PI, 0, false ; // perfect semicircle shape.lineTo w, 0 ; return shape; } Animations in the scene: FlickerCandle β€” cone flame with per-frame scale noise + matching PointLight intensity flicker SoulWisps β€” glowing orbs float upward from tombstones with candles lit ResurrectPulse β€” an expanding ringGeometry on the ground below voted tombstones You can light candles and vote to resurrect directly from the 3D panel β€” it calls the real API and the stone reacts in real time. Every buried project joins the public memorial wall at /graveyard , sortable by newest, most mourned, or most resurrection votes. The entire aesthetic is built around one idea: this should feel like a real memorial, not a joke . Developers genuinely grieve abandoned projects. The tombstones use engraved text, chiseled dividers, moss at the base. The AI eulogy takes commit data seriously. The community features are real interactions β€” your candle is stored in a database, your RIP message has an author and a timestamp. The passion isn't just the theme. It's the subject matter. πŸ† Best Use of Google AI DevGraveyard uses Google Gemini gemini-2.5-flash as the emotional core of the product. The eulogy generation prompt is engineered to reference specific real data points from the user's commit history β€” producing output that feels genuinely personal rather than generic AI text. The key insight: the AI isn't just generating content , it's transforming raw GitHub telemetry commit counts, timestamps, last message into something that makes you feel the loss of a project you actually cared about. The eulogy is generated once per tombstone owner only , stored permanently in Supabase, and revealed with a typewriter animation. It costs one API call and lasts forever β€” the project's eulogy becomes part of its memorial. Built in a weekend. My ARweave repo will never see production. But now it has a tombstone. That's something.