رفتن به محتوای اصلی
محمد مرزبانیبرنامه‌نویس و توسعه‌دهنده وب
مطالعه موردی 1405

ریپوکده؛ خانه‌ای برای کدهایی که قرار است رشد کنند

ریپوکده را ساختم تا کدها فقط یک مشت فایل پراکنده نباشند؛ هر پروژه خانه، تاریخچه و مسیر رشد خودش را داشته باشد.

محصول برای
محصول شخصی
وضعیت پروژه
در حال توسعه · 78%
هسته فنی
ASP.NET Core 10
نمای اصلی پروژه ریپوکده؛ خانه‌ای برای کدهایی که قرار است رشد کنند
تصویر اصلی محصول 01 / ریپوکده؛ خانه‌ای برای کدهایی که قرار است رشد کنند
در حال ساختBUILD LOG
چیزی برای پنهان‌کردن نداریم

این پروژه هنوز در حال ساخته‌شدن است؛ پیشرفتش را همین‌جا می‌بینید.

78%
  1. v@version

    اول معماری مخزن و دسترسی خصوصی شکل گرفت؛ بعد Git HTTP و تاریخچه Commit اضافه شد. Studio و آپلود مستقیم مرحله بعد بودند و پس از آن Wiki، Pull Request، مدیریت اعضا، پنل مستقل و زیرساخت ایمیل تکمیل شدند.

01معرفی پروژه

داستان شروع پروژه

قبل از اولین خط کد، باید می‌فهمیدیم دقیقاً چه چیزی می‌خواهیم بسازیم.

ریپوکده از یک سؤال خیلی ساده شروع شد: چرا برای نگه‌داشتن کدهای خودم باید بین چند ابزار مختلف بچرخم؟ یک جا سورس بود، یک جا توضیحات، یک جای دیگر نسخه‌ها و برای یک تغییر کوچک هم باید سراغ ترمینال می‌رفتم.

دلم می‌خواست جایی داشته باشم که هم Git را درست و استاندارد بفهمد و هم اگر کسی اهل دستورهای خط فرمان نبود، بتواند از داخل مرورگر فایل بسازد، کد را تغییر بدهد، پروژه آماده‌اش را آپلود کند و در نهایت یک Commit واقعی داشته باشد.

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

02فرایند فکر

پشت تصمیم‌هایی که گرفتیم

به‌جای پریدن روی اولین جواب، کمی بیشتر با خود مسئله ماندیم.

01 چالش

چه چیزی باید حل می‌شد؟

سخت‌ترین بخش، ساختن چند صفحه شبیه GitHub نبود. مسئله اصلی این بود که مخزن خصوصی واقعاً خصوصی بماند؛ یعنی نه از Raw، نه Archive، نه Git pack و نه با حدس‌زدن آدرس بتوان به کد رسید. از طرف دیگر Studio و آپلود مستقیم هم باید روی همان تاریخچه واقعی Git کار می‌کردند، نه اینکه یک کپی جدا از فایل‌ها بسازند.

02 راه‌حل

چطور به پاسخ رسیدیم؟

هسته مخزن را از رابط سایت جدا کردم و تمام راه‌های خواندن و نوشتن کد را از یک لایه مجوز عبور دادم. Clone و Push با Git HTTPS کار می‌کنند، Studio می‌تواند فایل بسازد و ویرایش کند، آپلود پروژه Commit واقعی تولید می‌کند و Branch، Tag، Wiki، Pull Request و همکاران هم روی همان مخزن قرار گرفته‌اند. برای فایل‌های خصوصی فقط پنهان‌کردن دکمه کافی نیست؛ خود پاسخ سرور هم بدون دسترسی صادر نمی‌شود.

03خروجی نهایی

اثر پروژه

نتیجه را باید در استفاده واقعی دید، نه در یک اسلاید زیبا.

نسخه فعلی یک پایه قابل استفاده دارد: ثبت‌نام و تأیید ایمیل، مخزن عمومی و خصوصی، Clone و Push، توکن دسترسی، Studio، آپلود پروژه، تاریخچه Commit، Branch و Tag، Wiki، Pull Request، مدیریت اعضا و پنل مدیریت مستقل. قدم بعدی بهترکردن همکاری تیمی، نسخه‌بندی خودکار و اجرای کاملاً ایزوله پروژه‌هاست.

04ابزار ساخت

فناوری‌های پروژه

این ابزارها را برای نیاز پروژه انتخاب کردیم، نه برای پرکردن یک فهرست.

  • 01ASP.NET Core 10
  • 02SQL Server
  • 03Git HTTP
  • 04Nginx
  • 05Linux
  • 06Maildir
  • 07Postfix
  • 08Dovecot