Every abandoned repository was once a 2 AM obsession. You know the rhythm. The idea strikes around midnight. You scaffold the repo before your coffee goes cold. For eleven days you push code with the manic energy of someone who has finally cracked it. Then the sprint ends. Or the boiler breaks. Or you simply open the code on a Tuesday evening and the thread is gone.
Most developers carry this weight. It is not quite regret, more like a quiet roster of what-ifs. Your GitHub profile becomes an archive of good intentions. The creator of Side Project Cemetery built something that faces this directly. Their tool turns your public profile into a moonlit graveyard where every stale repo gets a headstone, a date of death, and occasionally a punchline.
The Graveyard Grows
Side projects die for mundane reasons. You needed to learn a new framework, so you built a CLI tool. You wanted to automate a spreadsheet, so you wrote a Python wrapper. The prototype worked well enough to solve your problem, and that was the end. There was no user waiting, no deadline screaming, no manager asking for a status update. Without external pressure, motivation has to carry the full load. When motivation dips, the project freezes.
Visit a typical developer’s GitHub and you will see the pattern. A rust-colored contribution graph for one repo. A README that ends with “TODO: write tests.” A commit history that falls off a cliff six months ago. We treat these repos like embarrassing souvenirs. We scroll past them quickly, as if unfinished code were something to hide. Side Project Cemetery takes the opposite stance. It says: bury them properly. Acknowledge them. Then, if you want, bring one back.
How the Cemetery Works
The interface is blunt and simple. You type in any GitHub username. The app queries the GitHub REST API, pulls every public repository, and filters for those without a push in the last one hundred and eighty days. Each result becomes a grave. You see the birth year, the death year, and an epitaph generated from the repo’s details.
Some epitaphs land gently:
- Written in JavaScript. Died of callback exhaustion.
Others offer a more generous reading of history:
- Not dead. Just aggressively on hold since 2025.
If you want more personality, you can enable the optional Gemini integration. The AI reads the repo’s language and context to draft custom epitaphs that feel specific rather than templated. There is also an optional ElevenLabs integration that reads the eulogy aloud, which sounds like a gimmick until you hear your own abandoned API wrapper described in a somber narrator voice. At that point, the absurdity breaks through the guilt, and guilt was the whole thing keeping the repo buried.
Rekindle: A Button Against Overwhelm
The graveyard is only half the point. The real feature hides beneath each headstone: a Rekindle button. Click it, and the app reads your README. It parses whatever you wrote about the project’s purpose, stacks it against the existing code, and writes a short pitch to remind you why you cared in the first place. Then it ends with one small, concrete action you could take tonight. Not a roadmap. Not a refactor plan. One task. Five minutes of work.
This matters because the hardest part of returning to an old project is not coding. It is remembering where you were and forgiving yourself for stopping. A long-dead project feels enormous. You assume you will need three hours just to understand the architecture again. The Rekindle button compresses that assumption into a single todo. The goal is to make your next commit feel five minutes away, because once you have a single diff in the history, momentum tends to return.
Why Keep the Stack This Simple
Technically, the project practices what it preaches. It is built with vanilla HTML, CSS, and JavaScript. It uses the GitHub REST API. There are no servers, no build steps, no framework-of-the-month to maintain. You could host it on GitHub Pages and walk away.
That minimalism is a feature, not laziness. A tool about resurrecting old code should not itself rely on a fragile dependency tree. If the creator abandons Side Project Cemetery for six months, the cemetery does not become another resident in its own graveyard. The code stays legible. No webpack configs to update, no Docker images to patch. It is a quiet argument for restraint in tooling: sometimes a static site and an API key are enough.
When the Button Actually Works
Người xây dựng thừa nhận rằng chính những dự án "đã chết" của họ đã lên tiếng nhắc nhở họ trong quá trình phát triển. Có một dự án đặc biệt từng là nỗi ám ảnh chỉ trong một đêm, được viết trong sự phấn khích tột độ rồi sau đó bị lãng quên. Họ đã sử dụng nút Rekindle trên dự án đó. Ứng dụng đã đọc tệp README, ghi nhớ ý tưởng cốt lõi và đưa ra một nhiệm vụ thực tế để hoàn thành. Nó đã hiệu quả. Họ đã tung ra phần còn thiếu ngay trong tuần đó.
Đây chính là luận điểm cốt lõi của công cụ này. Đam mê không mất đi. Nó chỉ đang ngủ tạm thôi. Hầu hết các kho lưu trữ (repositories) bị bỏ dở không phải là thất bại về mặt kỹ thuật. Chúng là sự thất bại về mặt ngữ cảnh. Bạn mất dấu mạch suy nghĩ vì mạch đó chỉ tồn tại trong đầu bạn, và rồi tâm trí bạn đã chuyển sang những mạch suy nghĩ khác. Side Project Cemetery giúp cụ thể hóa ngữ cảnh đó ra bên ngoài. Nó đọc tệp README để bạn không phải xây dựng lại con người trong quá khứ của mình từ con số không.
Chỉ số thực sự không phải là bạn hồi sinh được bao nhiêu repo. Mà là bạn ngừng cảm thấy áy náy về bao nhiêu cái. "Nghĩa trang" này mang lại cho chúng một nơi để nghỉ ngơi cho đến khi bạn sẵn sàng. Và khi bạn đã sẵn sàng, nó sẽ đưa cho bạn một chiếc xẻng cùng một chỉ dẫn duy nhất: bắt đầu từ đây.
Đừng để những ý tưởng của bạn mãi bị chôn vùi.
Hãy ghé thăm nghĩa trang tại https://pyaroslav.github.io/side-project-cemetery/, và đọc toàn bộ câu chuyện xây dựng dự án trên Dev.to tại đây.
