# ✅ التشيك لست الشاملة — diyaa.de > نظرة عامة على **كل شي** لازم يتبنى، مقسّم لمراحل. للمهام القابلة للتنفيذ حالاً شوف [`TODO.md`](./TODO.md). > `[ ]` = ناقص · `[~]` = جزئي/موجود ناقص · `[x]` = جاهز --- ## المرحلة 0 — الأساس (Foundation) - [x] مشروع Next.js 14 + TS + Docker + Traefik + Makefile - [x] i18n عربي/إنجليزي + ثيم فاتح/غامق - [x] وضع coming-soon - [x] تهيئة **Tailwind CSS** (نقل متغيّرات الثيم لإعداد Tailwind) - [x] تهيئة **shadcn/ui** (`components/ui/`) - [x] إعداد **PostgreSQL** بـ docker-compose + volume - [x] إعداد **Prisma** + `schema.prisma` أولي + أول migration - [x] `lib/db.ts` (Prisma client singleton) ## المرحلة 1 — المصادقة ولوحة التحكم (Admin core) - [x] **Auth.js** (Credentials) + جدول User + كلمة سر مشفّرة - [x] هيكل `app/admin/` محمي بالجلسة - [x] Layout للوحة التحكم (سايدبار، عناصر مشتركة) - [x] فورمات أساسية (React Hook Form + Zod) قابلة لإعادة الاستخدام > ⚠️ **قرار 2026-08-05 (الخيار A):** الداتابيس صارت `Project` موحّد (PORTFOLIO/APP/WEBSITE/DESIGN) + `Melody` منفصل. المخطط القديم `Work/App` بينستبدل — شوف مهمة refactor بـ `TODO.md`. ## المرحلة 1.5 — إصلاحات معلّقة (من مراجعة 2026-08-05) - [x] 🐞 إصلاح `.env.example`: `live` → `full` + اعتماد قيمة `maintenance` - [x] إعادة تشكيل `schema.prisma` للخيار A (`Project` موحّد + `Melody`) + migration جديد - [x] مواءمة CRUD التصنيفات مع `CategoryKind = PROJECT | MELODY` ## المرحلة 2 — التصنيفات (Categories) - [x] موديل Category - [x] CRUD تصنيفات من لوحة التحكم - [x] مواءمة الأنواع للخيار A (PROJECT / MELODY) - [ ] تصنيفات المشاريع (شعارات، بروشورات، مواقع، متاجر، أدوات AI…) - [ ] تصنيفات الألحان (عربي، شرقي…) ## المرحلة 3 — رفع الملفات (Media) - [x] `lib/upload.ts` — رفع لـ volume على الـ VPS - [x] معالجة صور بـ `sharp` (webp + أحجام) - [x] رفع صوت للألحان - [x] التحقق من نوع/حجم الملف + أسماء ملفات آمنة - [ ] **حذف الملف الفعلي عند حذف المحتوى** + `altText` للصور - [x] مكوّن رفع قابل لإعادة الاستخدام (صور + صوت) ## المرحلة 4 — المشاريع: أعمال + مواقع + تصاميم (Project) - [x] موديل `Project` موحّد + migration - [x] **باك اند: إضافة/تعديل/حذف مشروع** + اختيار `type` + تصنيف + صور + تقنيات + `isFeatured`/`sortOrder` - [x] **فرونت اند: صفحة الأعمال** (شبكة + فلترة بالتصنيف) + تفاصيل `[slug]` - [x] **فرونت اند: صفحة المواقع** (Next.js/WordPress) + سكرين شوتس - [x] **فرونت اند: صفحة التصاميم** (شعارات/بروشورات/هويات) ## المرحلة 5 — التطبيقات (Apps · type=APP) - [x] **باك اند: إضافة تطبيق Swift** مع سكرين شوتس + حقول iOS - [x] حقول: App Store / TestFlight / رقم الإصدار / رابط الدعم / سياسة خصوصية التطبيق - [x] **فرونت اند: قسم التطبيقات** + معرض سكرين شوتس بصفحة التفاصيل ## المرحلة 6 — الألحان (Melodies) - [x] موديل Melody + migration - [x] **باك اند: إضافة لحن جديد** + تصنيف + ملف صوت + غلاف + سماح/منع تحميل - [x] **فرونت اند: قسم الألحان** + **مشغّل صوت** قابل لإعادة الاستخدام - [x] المشغّل: تشغيل/إيقاف + تقديم/تأخير + مستوى صوت + مدة + تحميل اختياري - [x] تصنيفات الألحان (عربي/شرقي) بالفلترة ## المرحلة 7 — الإيميلات و SMTP - [x] `lib/email.ts` — Nodemailer + إعداد **SMTP** - [x] قوالب **React Email** (تأكيد تواصل، تنبيه للمالك) + قالب نصي بديل - [x] ربط نموذج التواصل → حفظ بالداتابيس + إرسال إيميل - [x] **Honeypot + Rate limiting** لنموذج التواصل - [x] متغيّرات SMTP بـ `.env.example` ## المرحلة 8 — الصفحات الرسمية - [x] سياسة الخصوصية (ar/en) - [x] شروط الاستخدام (ar/en) - [x] **Impressum** (إلزامي قانونياً بألمانيا — دومين `.de`) - [x] روابط الصفحات بالـ footer ## المرحلة 9 — الاحصائيات (Analytics) — عدّادات داخلية أولاً - [x] عدّادات داخلية بسيطة: زيارات الصفحات، فتح المشاريع، تشغيل الألحان، نقر روابط المشاريع، عدد رسائل التواصل - [x] لوحة احصائيات مصغّرة داخل الأدمن - [ ] (لاحقاً فقط لو لزم) Umami self-hosted للتحليلات المتقدمة ## المرحلة 10 — coming-soon و الصيانة - [x] وضع coming-soon أساسي - [ ] وضع **صيانة** منفصل (رسالة صيانة + رجوع للأدمن) - [ ] تحكّم بالأوضاع من env بشكل موثّق ## المرحلة 11 — البنية التحتية والتشغيل - [ ] تحديث **Makefile**: `db-up`, `migrate`, `seed`, `studio`, أوامر لوكال + سيرفر - [x] docker-compose: خدمة postgres + volume البيانات - [ ] تطبيق migrations تلقائياً عند النشر - [ ] نسخ احتياطي للداتابيس (backup) موثّق ## عابرة لكل المراحل (Cross-cutting) - [ ] كل شي **مكوّنات قابلة لإعادة الاستخدام** - [ ] كل المكتبات **محليّة** (بدون CDN وقت التشغيل) - [ ] الفرونت اند مطابق لمعايير **Tailwind + shadcn** - [ ] تحديث `PROJECT-STATE.md` بعد كل خطوة كبيرة - [ ] نقل المهام المنجزة من `TODO.md` لقسم Ready