پلتفرم مدیریت پروژه و تیکتینگ سپرو وب
پلتفرم چندمستأجری که مدیریت پروژه، تیکتینگ، همکاری با کارفرما و مستندسازی را در یک محیط جمع میکند؛ محصولی که سپرو وب برای ادارهٔ پروژههای خودش ساخته است.
- نوع پروژه: پلتفرم چندمستأجری مدیریت پروژه و تیکتینگ
- کارفرما: محصول داخلی سپرو وب
- نقش سپرو وب: طراحی و پیادهسازی کامل؛ شامل جداسازی داده در سطح پایگاه داده، ماشین وضعیت تیکت، سوابق فقطافزودنی و صف اعلانها
- وضعیت: در حال توسعه و استفادهٔ داخلی
چرا این پلتفرم را ساختیم
ادارهٔ پروژههای سفارشی نرمافزاری با ابزارهای پراکنده — پیامرسان برای گفتوگو، صفحهٔ گسترده برای مالی، ایمیل برای فایل — بهسرعت به تاریخچهای مبهم و مسئولیتهای گمشده ختم میشود. هدف، یک محیط واحد بود که هم تیم و هم کارفرما در آن یک روایت مشترک از پروژه ببینند.
آنچه طراحی و پیادهسازی کردیم
موتور عملیاتی پلتفرم، تیکتینگ است: انواع تیکت قابل تعریفاند، تغییر وضعیت هر تیکت با یک ماشین وضعیتِ سمت سرور کنترل میشود تا پرشهای نامعتبر ممکن نباشد، و هر تیکت یک گفتوگوی رشتهای با قابلیت اشاره به افراد، پیوست فایل و تاریخچهٔ کامل تغییرات دارد.
هر پروژه یک فضای کاری مستقل است: تیکتها، منابع و مستندات نسخهبندیشده، اطلاعات مالی، قراردادهای فقطافزودنی و تغییرناپذیر، و یک جریان فعالیت. هشت نقش کاربری در یک برنامهٔ مشترک کار میکنند و تمام دسترسیها از یک نقطهٔ کنترل واحد عبور میکند؛ علاوه بر آن، پایگاه داده خودش نیز مرز دسترسی را در سطح سطر اعمال میکند تا یک لایهٔ محافظ دوم وجود داشته باشد.
اعلانها هم درون برنامه و هم از طریق ایمیل ارسال میشوند؛ پیامها ابتدا در یک صف نوشته و سپس توسط یک زمانبند ارسال میشوند تا خطای موقت سرویس ایمیل باعث گمشدن اعلان نشود. فایلها بهصورت خصوصی نگهداری و فقط با پیوند امضاشده و زماندار قابل دریافتاند.
مقیاس پروژه
- مدل دادهٔ ۳۲ جدولی با ۱۷ مهاجرت نسخهبندیشده
- ۸ نقش کاربری با یک نقطهٔ کنترل دسترسی واحد و لایهٔ محافظ در سطح پایگاه داده
- ماشین وضعیت تیکت، قراردادهای فقطافزودنی و صف اعلان با زمانبند
معماری فنی
پلتفرم روی Next.js 16 و React 19 با TypeScript ساخته شده و لایهٔ داده Prisma 7 روی PostgreSQL است. ورود هم با گذرواژه و هم با پیوند یکبارمصرف ایمیلی ممکن است و در برابر تلاشهای مکرر، قفل حساب و محدودسازی نرخ درخواست فعال میشود. ایمیلها با Resend و قالبهای React Email ارسال میشوند، خطاها با Sentry پایش میگردند و کارهای زمانبندیشده با Vercel Cron اجرا میشوند.
آنچه این پروژه دارد.
- تیکتینگ با انواع قابل تعریف و ماشین وضعیت سمت سرور
- گفتوگوی رشتهای با اشاره به افراد، پیوست و تاریخچهٔ کامل
- فضای کاری مستقل برای هر پروژه با تیکت، منابع و مالی
- قراردادهای فقطافزودنی و تغییرناپذیر
- هشت نقش کاربری با یک نقطهٔ کنترل دسترسی واحد
- جداسازی دادهٔ هر مستأجر در سطح پایگاه داده
- اعلان درونبرنامهای و ایمیلی از طریق صف پایدار
- ذخیرهسازی خصوصی فایل با پیوند دریافت امضاشده