هر مخزن رها شده‌ای، زمانی یک وسواس ساعت ۲ صبح بوده است. ریتم آن را می‌شناسید. ایده حوالی نیمه‌شب به سراغتان می‌آید. قبل از اینکه قهوه‌تان سرد شود، ساختار اولیه مخزن را آماده می‌کنید. یازده روز با انرژی دیوانه‌وار کسی که بالاخره راه حل را پیدا کرده، کد Push می‌کنید. سپس اسپرینت تمام می‌شود. یا بویلر می‌ترکد. یا خیلی ساده، یک عصر سه‌شنبه کد را باز می‌کنید و آن رشته‌ی فکری از دست رفته است.

اکثر توسعه‌دهندگان این بار را به دوش می‌کشند. این دقیقاً پشیمانی نیست، بیشتر شبیه فهرستی بی‌صدا از «اگرها» است. پروفایل GitHub شما به آرشیوی از نیت‌های خوب تبدیل می‌شود. سازنده Side Project Cemetery چیزی ساخته است که مستقیماً با این مسئله روبرو می‌شود. ابزار آن‌ها پروفایل عمومی شما را به گورستانی مهتابی تبدیل می‌کند که در آن هر مخزن قدیمی، یک سنگ قبر، یک تاریخ مرگ و گاهی یک شوخی دارد.

گورستان بزرگ‌تر می‌شود

پروژه‌های جانبی به دلایل پیش‌پاافتاده می‌میرند. نیاز داشتید یک فریم‌ورک جدید یاد بگیرید، پس یک ابزار CLI ساختید. می‌خواستید یک صفحه گسترده را خودکار کنید، پس یک Python wrapper نوشتید. نمونه اولیه به اندازه کافی خوب بود که مشکل شما را حل کند و تمام. هیچ کاربری منتظر نبود، هیچ ضرب‌الاجلی فریاد نمی‌زد، هیچ مدیری برای گزارش وضعیت سوال نمی‌کرد. بدون فشار خارجی، انگیزه باید تمام بار را به دوش بکشد. وقتی انگیزه افت می‌کند، پروژه متوقف می‌شود.

به GitHub یک توسعه‌دهنده معمولی سر بزنید تا این الگو را ببینید. یک نمودار مشارکت به رنگ زنگ‌زده برای یک مخزن. یک README که با «TODO: write tests» تمام می‌شود. یک تاریخچه commit که شش ماه پیش ناگهان سقوط کرده است. ما با این مخازن مثل یادگاری‌های خجالت‌آور برخورد می‌کنیم. سریع از کنارشان رد می‌شویم، انگار که کد ناتمام چیزی برای پنهان کردن است. Side Project Cemetery موضع متفاوتی دارد. می‌گوید: آن‌ها را درست دفن کنید. به آن‌ها اعتراف کنید. سپس، اگر خواستید، یکی را دوباره زنده کنید.

گورستان چگونه کار می‌کند

رابط کاربری صریح و ساده است. هر نام کاربری GitHub را تایپ می‌کنید. اپلیکیشن GitHub REST API را فراخوانی می‌کند، تمام مخازن عمومی را می‌گیرد و آن‌هایی را که در ۱۸۰ روز گذشته هیچ push ای نداشته‌اند، فیلتر می‌کند. هر نتیجه به یک قبر تبدیل می‌شود. سال تولد، سال مرگ و کتیبه‌ای که از جزئیات مخزن تولید شده است را می‌بینید.

برخی کتیبه‌ها ملایم هستند:

  • نوشته شده با JavaScript. مرده بر اثر فرسودگی callback.

برخی دیگر روایت خوش‌بینانه‌تری از تاریخ ارائه می‌دهند:

  • نمرده است. فقط از سال ۲۰۲۵ به شدت در حالت تعلیق قرار دارد.

اگر شخصیت بیشتری می‌خواهید، می‌توانید ادغام اختیاری Gemini را فعال کنید. هوش مصنوعی زبان و زمینه مخزن را می‌خواند تا کتیبه‌های سفارشی بنویسد که به جای کلیشه‌ای بودن، خاص به نظر برسند. همچنین یک ادغام اختیاری ElevenLabs وجود دارد که مرثیه را با صدای بلند می‌خواند؛ چیزی که تا زمانی که صدای روایتگر غمگین را در توصیف API wrapper رها شده خودتان نشنوید، شبیه یک ترفند تبلیغاتی به نظر می‌رسد. در آن لحظه، پوچی و مضحک بودنِ ماجرا، بر احساس گناه غلبه می‌کند، و در واقع همین احساس گناه بود که مخزن را دفن نگه داشته بود.

Rekindle: دکمه‌ای در برابر کلافگی

گورستان تنها نیمی از ماجراست. ویژگی اصلی زیر هر سنگ قبر پنهان شده است: دکمه Rekindle. روی آن کلیک کنید و اپلیکیشن README شما را می‌خواند. هر آنچه درباره هدف پروژه نوشته‌اید را تجزیه و تحلیل می‌کند، آن را با کد موجود تطبیق می‌دهد و یک توضیح کوتاه (pitch) می‌نویسد تا به شما یادآوری کند چرا در وهله اول به آن اهمیت می‌دادید. سپس با یک اقدام کوچک و ملموس که می‌توانید امشب انجام دهید، تمام می‌شود. نه یک نقشه راه (roadmap). نه یک برنامه refactor. فقط یک وظیفه. پنج دقیقه کار.

این موضوع اهمیت دارد زیرا سخت‌ترین بخش بازگشت به یک پروژه قدیمی، کدنویسی نیست. بلکه به یاد آوردن این است که کجا بودید و بخشیدن خودتان برای متوقف کردن کار است. یک پروژه بسیار قدیمی، عظیم به نظر می‌رسد. تصور می‌کنید که فقط برای درک دوباره معماری آن به سه ساعت زمان نیاز دارید. دکمه Rekindle این تصور را به یک وظیفه (todo) واحد تبدیل می‌کند. هدف این است که کاری کنید commit بعدی شما تنها پنج دقیقه با شما فاصله داشته باشد، زیرا وقتی اولین diff را در تاریخچه ثبت کنید، تمایل به ادامه دادن (momentum) معمولاً بازمی‌گردد.

چرا پشته (Stack) را تا این حد ساده نگه داریم؟

از نظر فنی، این پروژه به آنچه تبلیغ می‌کند، عمل می‌کند. با HTML، CSS و JavaScript خالص (vanilla) ساخته شده است. از GitHub REST API استفاده می‌کند. هیچ سروری، هیچ مرحله ساخت (build) و هیچ «فریم‌ورکِ ماه» برای نگهداری وجود ندارد. می‌توانید آن را روی GitHub Pages میزبانی کنید و بروید.

این مینیمالیسم یک ویژگی است، نه تنبلی. ابزاری برای احیای کدهای قدیمی نباید خودش به یک درخت وابستگی شکننده متکی باشد. اگر سازنده Side Project Cemetery را برای شش ماه رها کند، این گورستان به یکی دیگر از ساکنان گورستان خودش تبدیل نمی‌شود. کد خوانا باقی می‌ماند. خبری از به‌روزرسانی webpack configs یا وصله کردن Docker images نیست. این یک استدلال آرام برای خویشتن‌داری در ابزارسازی است: گاهی اوقات یک سایت استاتیک و یک API key کافی هستند.

وقتی دکمه واقعاً کار می‌کند

The builder admits that their own dead projects called them out during development. One in particular had been a single-night obsession, written in a blur of excitement and then forgotten. They used the Rekindle button on it. The app read the README, remembered the premise, and handed back a real task to finish. It worked. They shipped the missing piece that same week.

This is the core argument of the tool. Passion does not die. It naps. Most abandoned repositories are not failures of engineering. They are failures of context. You lost the thread because the thread was only living in your head, and your head moved on to other threads. Side Project Cemetery externalizes that context. It reads the README so you do not have to reconstruct your past self from scratch.

The real metric is not how many repos you resurrect. It is how many you stop feeling weird about. The cemetery gives them a place to rest until you are ready. And when you are ready, it hands you a shovel and a single instruction: start here.

Stop letting your ideas stay buried.

Visit the cemetery at https://pyaroslav.github.io/side-project-cemetery/, and read the full build story on Dev.to here.