DEV Community

Cover image for I Built a Graveyard for My Dead Side Projects - With AI Eulogies & a 3D Cemetery
Varshith V Hegde
Varshith V Hegde Subscriber

Posted on

I Built a Graveyard for My Dead Side Projects - With AI Eulogies & a 3D Cemetery

DEV Weekend Challenge: Passion Edition Submission

This is a submission for Weekend Challenge: Passion Edition

What I Built

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.

01_landing_howItWorks

Here's what it does:

  • ⚰️ Bury a project — 3-step burial wizard: pick a repo → choose cause of death ("Never Made it Past Localhost", "Ran Out of Weekend", "It Was Complicated"...) → write an epitaph
  • 🪦 Real tombstone data — pulls your actual commit history: peak obsession streak, most commits in a single day, last commit message (your final words)
  • 🤖 AI Eulogy — Google Gemini writes a dramatic breakup letter from you to the project, referencing your real commit data
  • 🕯️ Community mourning — light candles, leave RIP messages, vote to resurrect projects
  • 🌐 3D Graveyard — a full Three.js interactive cemetery: bare trees, fireflies, flickering candles, soul wisps, resurrection pulse rings. Click any tombstone to interact

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.


Demo

🔗 Live → devgraveyard.varshithvhegde.in


Code

GitHub logo Varshithvhegde / devgraveyard

Give your abandoned passion projects a proper burial. A gothic graveyard for dead side projects.

⚰️ DevGraveyard

A memorial for your abandoned side projects. They deserved better than an empty GitHub repo gathering digital dust.

Live → devgraveyard.varshithvhegde.in


What is this?

Every developer has a graveyard of passion projects — started with fire, abandoned quietly on a Tuesday. DevGraveyard gives them a proper burial.

  • Bury a project — connect GitHub, pick a dead repo, choose a cause of death ("Never Made it Past Localhost", "Ran Out of Weekend", "It Was Complicated"...), write an epitaph
  • Real tombstone data — pulls your actual commit history: peak streak, most commits in a day, last commit message as "final words"
  • AI Eulogy — Google Gemini writes a dramatic breakup letter from you to the project, referencing your real commit data
  • Community mourning — light candles, leave RIP messages, vote to resurrect projects
  • 3D Graveyard — a full Three.js interactive cemetery at /graveyard-3d. Click tombstones…

How I Built It

The Stack

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

Step 1 — Burying a Project

When you click "Bury a Project", a 3-step wizard walks you through:

  1. Choose Victim — your GitHub repos load via the API. Already-buried repos show an "already buried" badge and are disabled so you can't bury the same project twice.
  2. Write the Epitaph — pick a cause of death from a curated list or write your own. Add an optional epitaph (100 chars max). In the background we fetch your full commit history.
  3. Confirm Burial — a live tombstone preview renders with your real data before you commit.

05_bury_cause_of_death

05_bury_cause_of_death


Step 2 — Commit History as Emotional Data

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"
  // ...
}
Enter fullscreen mode Exit fullscreen mode

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.


Step 3 — The AI Eulogy

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.
Enter fullscreen mode Exit fullscreen mode

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:

12_eulogy_complete

"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.


Step 4 — The 3D Graveyard

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:

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;
}
Enter fullscreen mode Exit fullscreen mode

Animations in the scene:

  • Tombstones rise from underground on load, staggered by index (ease-out cubic)
  • 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
  • 55 firefly particles with sine-wave drift
  • Fog, stars, bare winter trees, directional moonlight

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.

17_3d_info_panel


The Public Graveyard Wall

Every buried project joins the public memorial wall at /graveyard, sortable by newest, most mourned, or most resurrection votes.

18_graveyard_list


Design Philosophy

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.


Prize Categories

🏆 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.

⚰️ devgraveyard.varshithvhegde.in

Top comments (44)

Collapse
 
thormeier profile image
Pascal Thormeier

What a great, although grim and potentially sad idea, awesome job on the execution!

Next step would be to establish this as a service akin to Readthedocs. Something like automatic detection of BURIAL.md (a file that people can add to their projects to signal them as buried to people looking at the source code) in public repos and a nice rendering thereof. Perhaps this could be stablished as a semi-standard...?

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Great idea will see this

Collapse
 
eva-nomados profile image
Eva

This's brilliant and honestly hurts a little.The "Never Made It Past Localhost"cause of death hits way too close to home.I probably have about 30 repos right now gathering digital dust that deserve a proper gothic burial.Pulling the actual commit history data to make the eulogy specific is genius.Definitely going to go bury a few of my abandoned weekend projects today.

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Agreed 🫠

Collapse
 
uptimearchitect profile image
Uptime Architect • Edited

Okay this is spooky — I built a cemetery for abandoned repos for this same challenge (posted it yesterday - dev.to/uptimearchitect/side-projec... ), and seeing someone else land on "passion = the projects we abandoned" independently makes me feel very seen 😄 The 3D graveyard with candle lighting is beautiful, and community resurrection votes is a great twist. We took opposite roads on architecture — mine is zero-backend/no-login (type any username, get roasted) — which makes the comparison really fun. Great minds mourn alike. 🪦🔥

Collapse
 
varshithvhegde profile image
Varshith V Hegde • Edited

Woah it is spooky i haven't seen the one you did please add a link here I wanna see that 🙌🙌

Collapse
 
thevediwho profile image
Vaibhav Dwivedi

This is actually a nice "side project" i have seen in a while.

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Thank You😇

Collapse
 
blobdole profile image
Doug

I am too delusional for this to work for me.

My personal projects are rarely if ever "dead," they are on indefinite holds until I get back to them some day for sure.

Hey, maybe having a cool graveyard system would help me with that.

Collapse
 
jeffrin-dev profile image
Twisted-Code'r

Great idea man . How do you get thiese kind of ideas? I also have many such flaming starts and dusty lazy ending projects in my github. Creative way to think a idea there.
Haven't seen a project like this before . Keep going with that brainstorming ideas. ❤️

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Thanks bro

Collapse
 
julianneagu profile image
Julian Neagu

The "Never Made it Past Localhost" option got me. I have a few repos that would qualify without any debate.

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Nice

Collapse
 
dustinvk profile image
Dustin VanKrimpen

This is hilarious! Pouring one out for all the abandoned side projects 🫡

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Thank you it was fun building if you any fun idea to add to it let me know I will try to add it

Collapse
 
priya_digitalsolution_34 profile image
Priya Digital Solution

What a creative and unique idea! Turning abandoned side projects into a virtual cemetery with AI-generated eulogies is both funny and thought-provoking. Thanks for sharing such an original project!

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Thank you

Collapse
 
harshtankio profile image
Harsh tank

That's a Good One 👏

Collapse
 
varshithvhegde profile image
Varshith V Hegde

Thanks😇

Some comments may only be visible to logged-in visitors. Sign in to view all comments.