Taghvimam
تقویمم (Taghvimam) یک پلتفرم تقویم با بکاند همگامسازی آفلاین و چندکاربره (Express + Prisma + PostgreSQL)، یک اپلیکیشن وب (React/Vite) و یک کلاینت اندروید است.
- مرجع API — بهصورت خودکار از اسکیمای Zod تولید میشود (منبع واحد): مرجع API.
- API تعاملی — تمام مسیرها را زنده امتحان کنید: Swagger UI.
- راهنماها — شروع به کار، معماری.
اینجا چه چیزی هست؟
| بخش | تکنولوژی |
|---|---|
بکاند (apps/api) | Express.js + TypeScript، Prisma + PostgreSQL، احراز هویت JWT، OTP پیامکی کاوهنگار، Firebase FCM |
وب (apps/calendar-web) | React 18 + Vite + Tailwind v3، TanStack Query، ساختار feature-sliced |
قراردادها (packages/contracts) | اسکیماهای Zod — منبع واحد برای تمام DTOهای API و اسکیمای OpenAPI |
| همگامسازی (فاز ۱) | همگامسازی آفلاین v2 — واترمارکِ نسخهٔ سراسری، کرسر HMAC، LWW، احراز هویت مبتنی بر دستگاه |
نگاهی به همگامسازی دوجهته
کلاینت اندروید و سرور تغییرات را از طریق /api/v2/sync/* همگام میکنند:
- هر رکورد یک
versionیکطرفه و یکuidتولیدشدهٔ توسط کلاینت دارد؛ - دریافت (pull) با یک کرسر امضاشده و نامشفاف هدایت می شود که نشانگر «آبِ بالا» را برای هر موجودیت نگه میدارد؛
- ارسال (push) هر آیتم را با قاعدهٔ «آخریننوشتهبرنده» (LWW) اعمال کرده و بازندهها را در جدول قابلبازیابی
SyncConflictذخیره میکند.
برای مدل کامل به اسpec طراحی همگامسازی مراجعه کنید.