ریپوکده؛ خانهای برای کدهایی که قرار است رشد کنند
ریپوکده را ساختم تا کدها فقط یک مشت فایل پراکنده نباشند؛ هر پروژه خانه، تاریخچه و مسیر رشد خودش را داشته باشد.
- محصول برای
- محصول شخصی
- وضعیت پروژه
- در حال توسعه · 78%
- هسته فنی
- ASP.NET Core 10
این پروژه هنوز در حال ساختهشدن است؛ پیشرفتش را همینجا میبینید.
-
v@version
اول معماری مخزن و دسترسی خصوصی شکل گرفت؛ بعد Git HTTP و تاریخچه Commit اضافه شد. Studio و آپلود مستقیم مرحله بعد بودند و پس از آن Wiki، Pull Request، مدیریت اعضا، پنل مستقل و زیرساخت ایمیل تکمیل شدند.
داستان شروع پروژه
قبل از اولین خط کد، باید میفهمیدیم دقیقاً چه چیزی میخواهیم بسازیم.
ریپوکده از یک سؤال خیلی ساده شروع شد: چرا برای نگهداشتن کدهای خودم باید بین چند ابزار مختلف بچرخم؟ یک جا سورس بود، یک جا توضیحات، یک جای دیگر نسخهها و برای یک تغییر کوچک هم باید سراغ ترمینال میرفتم.
دلم میخواست جایی داشته باشم که هم Git را درست و استاندارد بفهمد و هم اگر کسی اهل دستورهای خط فرمان نبود، بتواند از داخل مرورگر فایل بسازد، کد را تغییر بدهد، پروژه آمادهاش را آپلود کند و در نهایت یک Commit واقعی داشته باشد.
ریپوکده هنوز در حال رشد است، اما قرار نیست یک ویترین نمایشی باشد. سورس پروژههای خودم هم قرار است همینجا زندگی کند و هر قابلیتی که اضافه میشود، اول روی استفاده واقعی امتحان شود.
پشت تصمیمهایی که گرفتیم
بهجای پریدن روی اولین جواب، کمی بیشتر با خود مسئله ماندیم.
چه چیزی باید حل میشد؟
سختترین بخش، ساختن چند صفحه شبیه GitHub نبود. مسئله اصلی این بود که مخزن خصوصی واقعاً خصوصی بماند؛ یعنی نه از Raw، نه Archive، نه Git pack و نه با حدسزدن آدرس بتوان به کد رسید. از طرف دیگر Studio و آپلود مستقیم هم باید روی همان تاریخچه واقعی Git کار میکردند، نه اینکه یک کپی جدا از فایلها بسازند.
چطور به پاسخ رسیدیم؟
هسته مخزن را از رابط سایت جدا کردم و تمام راههای خواندن و نوشتن کد را از یک لایه مجوز عبور دادم. Clone و Push با Git HTTPS کار میکنند، Studio میتواند فایل بسازد و ویرایش کند، آپلود پروژه Commit واقعی تولید میکند و Branch، Tag، Wiki، Pull Request و همکاران هم روی همان مخزن قرار گرفتهاند. برای فایلهای خصوصی فقط پنهانکردن دکمه کافی نیست؛ خود پاسخ سرور هم بدون دسترسی صادر نمیشود.
اثر پروژه
نتیجه را باید در استفاده واقعی دید، نه در یک اسلاید زیبا.
نسخه فعلی یک پایه قابل استفاده دارد: ثبتنام و تأیید ایمیل، مخزن عمومی و خصوصی، Clone و Push، توکن دسترسی، Studio، آپلود پروژه، تاریخچه Commit، Branch و Tag، Wiki، Pull Request، مدیریت اعضا و پنل مدیریت مستقل. قدم بعدی بهترکردن همکاری تیمی، نسخهبندی خودکار و اجرای کاملاً ایزوله پروژههاست.
فناوریهای پروژه
این ابزارها را برای نیاز پروژه انتخاب کردیم، نه برای پرکردن یک فهرست.
- 01ASP.NET Core 10
- 02SQL Server
- 03Git HTTP
- 04Nginx
- 05Linux
- 06Maildir
- 07Postfix
- 08Dovecot