16 KiB
16 KiB
🗺️ الوضع الحالي للموقع — diyaa.de
الهدف من الملف: أي agent يقرأه بيعرف الوضع الحالي للموقع بدون ما يقرأ الكود. آخر تحديث: 2026-08-05
نظرة عامة بسطر
موقع Next.js 14 شخصي، ثنائي اللغة (عربي/إنجليزي)، حالياً بوضع coming-soon، منشور عبر Docker + Traefik على VPS خاص (STRATO). قاعدة PostgreSQL وPrisma ومصادقة الأدمن ومخطط Project/Melody وCRUD المشاريع والتطبيقات والألحان ورفع الوسائط وقسم الألحان العام ومشغّل الصوت ونموذج التواصل والصفحات الرسمية والإحصائيات الداخلية صارت مهيّأة.
✅ الموجود فعلياً حالياً
الإطار والأدوات
- Next.js 14.2 (App Router) + React 18 + TypeScript (strict).
- إخراج
standaloneللنشر عبر Docker. - Tailwind CSS 3.4 مهيّأ عبر
tailwind.config.jsوpostcss.config.js، مع ربط ألوان وظلال وخطوط الثيم بمتغيّرات CSS الحالية. - shadcn/ui مهيّأ عبر
components.json، مع مكوّنات UI محلية أساسية فيcomponents/ui/وأداةcnفيlib/utils.ts. - PostgreSQL 16 مضاف إلى
docker-compose.ymlمع volume دائم، شبكة داخلية، وفحص صحة. - Prisma 6.19 مضاف مع
prisma/schema.prisma، migration أولى، وlib/db.tsكـ singleton. - Auth.js Credentials مضاف مع جلسات JWT، تشفير كلمات السر بـ
bcryptjs، وmiddleware يحمي/admin/. - Admin layout مضاف مع سايدبار، ترويسة صفحات مشتركة، وفورم reusable مبني على React Hook Form وZod.
- Categories CRUD مضاف داخل لوحة الأدمن مع تحقق Zod ودعم أنواع PROJECT / MELODY.
- Project/Melody schema مضاف عبر migration جديدة، مع أنواع المشاريع وحقول التطبيقات وحقول الترتيب والنشر.
- Project CRUD + public directories مضاف للمشاريع الأساسية والتطبيقات، مع صفحات الأعمال والمواقع والتصاميم والتطبيقات وفلترة حسب التصنيف وصفحات تفاصيل حسب slug.
- Melody CRUD + public directory مضاف مع إدارة الصوت والغلاف والتصنيف والنشر والتحميل، وصفحات قائمة/تفاصيل عامة ومشغّل صوت reusable.
- Media upload مضاف مع تخزين دائم على volume، معالجة الصور إلى WebP عبر sharp، وحفظ ملفات الصوت بصيغتها الأصلية، ومربوط بنماذج المشاريع والألحان.
- Contact messaging مضاف مع نموذج عام ثنائي اللغة، حفظ
ContactMessage، إرسال إشعار للمالك وتأكيد للمرسل عبر Nodemailer/SMTP، وقالب HTML بـ React Email مع بديل نصي. - Contact protection مضاف عبر Honeypot وتحديد المعدل بخمسة طلبات لكل عنوان مصدر خلال عشر دقائق.
- Legal pages مضافة بالعربي والإنجليزي: الخصوصية، شروط الاستخدام، وImpressum، مع روابط في الفوتر وحقول الهوية القانونية من
.env. - Internal analytics مضافة عبر
AnalyticsEventوendpoint محمي بالتحديد والتحقق، مع عدّادات للزيارات وفتح المشاريع وتشغيل الألحان ونقر الروابط ورسائل التواصل ولوحة أدمن مختصرة. - ترويسات أمان مضبوطة بـ
next.config.js(Referrer-Policy, X-Frame-Options, nosniff, Permissions-Policy). - alias
@/*→ جذر المشروع (بـtsconfig.json).
التنسيق (Styling) — ⚠️ الانتقال بدأ
- Tailwind CSS شغّال عبر PostCSS، وtokens الثيم متاحة كألوان وظلال وخطوط ضمن
tailwind.config.js. - مكوّنات shadcn/ui الأساسية مضافة محلياً وقابلة لإعادة الاستخدام؛ قواعد المكوّنات العامة الحالية ما زالت موجودة في
app/globals.cssكطبقة انتقالية بانتظار ترحيلها للـ utilities. - في نظام theme (فاتح/غامق) عبر
[data-theme]ومتغيرات CSS + مكوّنThemeToggle.
التعدّد اللغوي (i18n)
- لغتان:
arوen(lib/i18n.ts). - المحتوى مخزّن كـ dictionaries:
content/ar.ts،content/en.ts، بأنواع منcontent/types.ts. - اتجاه تلقائي RTL للعربي / LTR للإنجليزي.
- بوضع coming-soon: بيُجبر الموقع على الإنجليزي فقط.
الإعدادات والأوضاع
- كل الإعداد عبر متغيرات بيئة (
lib/site.ts). - ثلاثة أوضاع معتمدة:
NEXT_PUBLIC_SITE_MODE = coming-soon | maintenance | full؛ وضع الصيانة حالياً قيمة محجوزة إلى حين تنفيذ واجهته في T-14. - بيانات المالك: الاسم "Diyaa"، إيميل، LinkedIn، GitHub — كلها من env.
الصفحات الموجودة (app/)
app/[locale]/page.tsx— الرئيسية (Hero).app/[locale]/about/page.tsx— نبذة.app/[locale]/contact/page.tsx— تواصل مع نموذج حفظ وإرسال الرسائل.app/[locale]/legal/— الخصوصية، شروط الاستخدام، وImpressum بالعربي والإنجليزي.app/admin/(protected)/analytics/page.tsx— ملخص الإحصائيات الداخلية لآخر 30 يوماً.app/api/analytics/route.ts— endpoint تسجيل الأحداث العامة مع Zod وrate limiting.app/[locale]/melodies/— قائمة الألحان العامة مع فلترة التصنيفات وصفحات التفاصيل.app/not-found.tsx— 404.app/api/health/route.ts— health check للـ Docker.app/robots.ts+app/sitemap.ts— SEO.- صور OG/Twitter/icon جاهزة.
المكوّنات الموجودة (components/)
SiteHeader · SiteFooter · HeroSection · ComingSoonPanel · BottomNav · ThemeToggle · LanguageSwitcher · ContactForm
النشر والبنية التحتية
- Dockerfile متعدّد المراحل (deps → builder → runner) بمستخدم غير-root.
- docker-compose.yml مربوط بشبكة Traefik خارجية، مع labels للـ HTTPS (
Host(diyaa.de), websecure, LetsEncrypt). - Makefile بأوامر:
build·start·stop·restart·logs·ps(مع فحص.envوCOMPOSE_PROJECT_NAME). - healthcheck عبر
/api/health. - سكربتات npm:
dev·build·start·lint·typecheck·check.
❌ الناقص (لسا ما تبنى)
| المجال | الحالة |
|---|---|
| Tailwind + shadcn/ui | 🟡 Tailwind وshadcn/ui مهيّآن؛ ترحيل المكوّنات العامة من CSS القديم لسا ناقص |
| قاعدة بيانات (PostgreSQL + Prisma) | 🟡 مخطط Project/Melody وmigration جاهزان؛ CRUD المحتوى وباقي الداتا ناقصان |
| باك اند / لوحة تحكم (Admin) | 🟡 layout وdashboard وCRUD التصنيفات والمشاريع والتطبيقات والألحان جاهزة؛ إدارة التواصل وباقي المحتوى لسا ناقصة |
| مصادقة (Auth) للأدمن | 🟡 Auth.js Credentials وحماية /admin/ جاهزان؛ إدارة المحتوى لسا ناقصة |
| معرض الأعمال + التصنيفات | 🟡 Project CRUD والصفحات العامة للأعمال والمواقع والتصاميم جاهزة؛ المحتوى المنشور ناقص |
| قسم التطبيقات (Swift/Next.js) مع سكرين شوتس | 🟡 CRUD وحقول iOS ومعرض السكرين شوتس جاهزين؛ محتوى التطبيقات المنشور ناقص |
| قسم الألحان + مشغّل + تصنيفات | 🟡 CRUD وقائمة/تفاصيل عامة ومشغّل وفلترة جاهزة؛ المحتوى المنشور لسا ناقص |
| إيميلات + SMTP | 🟡 التكامل والقوالب والنموذج جاهزة؛ يلزم وضع بيانات SMTP الحقيقية في .env |
| الاحصائيات (Analytics) | 🟡 عدّادات داخلية وواجهة أدمن جاهزة؛ لا توجد تحليلات خارجية متقدمة |
| الصفحات الرسمية (سياسة الخصوصية، الشروط...) | 🟡 الصفحات والروابط جاهزة؛ يلزم تعبئة بيانات الهوية ومراجعة النصوص قانونياً |
| رفع الملفات (صور/صوت) | 🟡 API وvolume ومعالجة الصور ومكوّن الرفع وربطه بالمشاريع والألحان جاهز؛ حذف الملفات الفعلية لسا ناقص |
🧭 خريطة المجلدات الحالية
diyaa.de/
├── app/
│ ├── [locale]/ # الصفحات المترجمة (home, about, contact, melodies)
│ ├── api/health/ # health check
│ ├── api/auth/ # Auth.js handlers
│ ├── api/upload/ # رفع ملفات محمي للأدمن
│ ├── api/uploads/ # تقديم الملفات المرفوعة
│ ├── admin/ # login + layout + dashboard محميان بالمصادقة
│ │ └── (protected)/categories/ # صفحات وإجراءات CRUD للتصنيفات
│ │ └── (protected)/projects/ # صفحات وإجراءات CRUD للمشاريع
│ │ └── (protected)/melodies/ # صفحات وإجراءات CRUD للألحان
│ ├── [locale]/work/ # الأعمال المنشورة + [slug]
│ ├── [locale]/apps/ # التطبيقات المنشورة + [slug]
│ ├── [locale]/websites/ # المواقع المنشورة + [slug]
│ ├── [locale]/designs/ # التصاميم المنشورة + [slug]
│ ├── globals.css # متغيرات CSS + الثيم
│ ├── layout.tsx · robots.ts · sitemap.ts · not-found.tsx
├── components/ # مكوّنات الواجهة الحالية
│ └── ui/ # مكوّنات shadcn/ui الأساسية
├── prisma/ # schema.prisma + migrations (Project/Melody)
├── content/ # قواميس الترجمة (ar/en) + الأنواع
├── lib/ # auth · db · upload · i18n · site config · metadata · utils · validations
├── components/admin/ # shell · page header · reusable form
├── components/public/ # project/melody cards, details, directory, audio player
├── middleware.ts # حماية مسارات admin
├── public/ # أصول ثابتة
├── docs/ # 📚 التوثيق (هون)
├── Dockerfile · docker-compose.yml · Makefile
└── .env.example
📌 Changelog (خطوات كبيرة)
- 2026-08-03 — إنشاء منظومة التوثيق بمجلد
docs/(STATE, STACK, ARCHITECTURE, CHECKLIST, TODO, IDEAS) +AGENTS.md. توثيق الوضع الحالي كقاعدة انطلاق. - 2026-08-05 — إنجاز T-01: تهيئة Tailwind CSS وPostCSS وربط tokens الثيم الحالية مع الحفاظ على الوضعين الفاتح والغامق.
- 2026-08-05 — إنجاز T-02: تهيئة shadcn/ui وإضافة Button وCard وInput وDialog وSelect وForm كمكوّنات محلية قابلة لإعادة الاستخدام.
- 2026-08-05 — إنجاز T-03: إضافة PostgreSQL 16 إلى Docker، مخطط Prisma الأولي، migration
init، وعميل قاعدة البيانات singleton. - 2026-08-05 — إنجاز T-04: إضافة Auth.js Credentials، تشفير كلمات السر، حماية
/admin/، صفحة تسجيل الدخول، وseed آمن لمستخدم الأدمن. - 2026-08-05 — إنجاز T-05: إضافة layout لوحة الأدمن، سايدبار، عناصر صفحات مشتركة، وفورم عام قابل لإعادة الاستخدام.
- 2026-08-05 — إنجاز T-06: إضافة تحقق Zod وCRUD للتصنيفات داخل لوحة الأدمن مع دعم أنواع PROJECT / MELODY.
- 2026-08-05 — إنجاز T-07: إضافة volume للملفات المرفوعة، تخزين محلي، معالجة صور بـ sharp، endpoint محمي، ومكوّن رفع reusable للصور والصوت.
- 2026-08-05 — إنجاز T-16: استبدال Work/App بـ Project موحّد، تحديث CategoryKind إلى PROJECT/MELODY، إضافة حقول iOS والترتيب والنشر، وتطبيق migration الجديدة.
- 2026-08-05 — إنجاز T-08: إضافة CRUD المشاريع في الأدمن، رفع الصور من النموذج، وصفحات الأعمال والمواقع والتصاميم مع الفلترة والتفاصيل.
- 2026-08-05 — إنجاز T-09: إضافة CRUD تطبيقات APP وحقول iOS، فلتر التطبيقات في الأدمن، وقسم عام مع معرض السكرين شوتس وروابط التطبيقات.
- 2026-08-05 — إنجاز T-10: إضافة CRUD الألحان مع رفع الصوت والغلاف والتحكم بالتحميل، الصفحات العامة والتفاصيل، فلترة التصنيفات، ومشغّل صوت reusable بعناصر التحكم الأساسية.
- 2026-08-05 — إنجاز T-11: ربط نموذج التواصل بحفظ الرسائل وإرسال إشعار للمالك وتأكيد للمرسل عبر SMTP، إضافة قوالب React Email وبديل نصي، وحماية Honeypot وRate limiting.
- 2026-08-05 — إنجاز T-12: إضافة صفحات الخصوصية وشروط الاستخدام وImpressum بالعربي والإنجليزي، ربط الفوتر، وإضافة إعدادات الهوية القانونية.
- 2026-08-05 — إنجاز T-13: إضافة
AnalyticsEventوmigration، تتبع الزيارات والتفاعلات الأساسية، endpoint محمي، ولوحة إحصائيات داخل الأدمن. - 2026-08-05 — إنجاز T-17: تصحيح
.env.exampleواعتماد أوضاعcoming-soonوmaintenanceوfullفي طبقة إعدادات الموقع، مع إبقاء واجهة الصيانة ضمن T-14. - 2026-08-05 — مراجعة + قرارات (
REVIEW-2026-08-05.md): بعد مقارنة تشيك لست ChatGPT مع الواقع، اعتُمد: (1) مخطط الخيار A —Projectموحّد +Melodyمنفصل يستبدلWork/App؛ (2) الاحصائيات عدّادات داخلية أولاً بدل Umami؛ (3) إبقاء نظام التوثيق الحالي (6 ملفات)؛ (4) تبنّي إضافات: Impressum، حقول iOS، Honeypot/Rate-limit، تفاصيل مشغّل الألحان، فصل صفحات المواقع/التصاميم؛ (5) رصد باگ.env.example(live→full) وغيابmaintenance. أُضيفت مهام T-16 (refactor المخطط) وT-17 (إصلاح env). (المراجعة موثّقة، وT-16/T-17 أُنجزتا؛ واجهة الصيانة الفعلية لسا متروكة لـ T-14.) - (قبل التوثيق) — موقع coming-soon ثنائي اللغة منشور عبر Docker + Traefik.
تعليمات تحديث هذا الملف
عند إنجاز أي feature: حدّث جدول "الموجود" و"الناقص"، وأضف سطر بالـ Changelog. خلّي هالملف يعكس الواقع لا الطموح.