Skip to content
kamlin-egPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

كاملين للنظافة الفائقة

موقع عربي RTL باستخدام Astro وReact، مع Worker للخادم وقاعدة D1 على Sites.

الموقع: https://kamlin-cleaning-eg.equalpixie8.chatgpt.site لوحة الإدارة: https://kamlin-cleaning-eg.equalpixie8.chatgpt.site/admin/

التشغيل والبناء

npm ci
npm run db:generate  # عند تعديل db/schema.ts فقط، ولا تُعدّل الترحيلات السابقة
npm run build
npm test

build يولد واجهة Astro ثم حزمة Worker بموارد الواجهة المضمنة، مع بيانات نشر Sites والترحيلات. npm run dev يعاين واجهة Astro فقط ولا يشغّل APIs المركزية. تكامل Astro/React وإعداد Cloudflare الأصلي محفوظان، لكن نشر اللوحة المركزية يتم عبر حزمة Worker، وليس مجلد static وحده.

الصفحات

الرئيسية /، الخدمات /services/ وتسع صفحات تفاصيل، الأسعار /prices/، الحجز /booking/، الخصوصية /privacy/، الإدارة /admin/، صفحة 404 وخريطة موقع.

لوحة الإدارة

الدخول عبر حساب ChatGPT المصرح له، وليس بكلمة مرور مكتوبة في ملفات الواجهة. منصة الاستضافة تتحقق من الدخول، والخادم يتحقق من حساب المسؤول في كل API. البريد المسموح مضبوط في إعداد خادم ADMIN_EMAIL، ويربط أول دخول معرّف المستخدم الثابت في جدول admin_users.

  • تعديل أسماء ووصف وبنود الخدمات وأسعار البداية؛ السعر الفارغ يعني «حسب المعاينة».
  • حفظ مركزي مع رقم إصدار لمنع الكتابة فوق تعديلات جلسة أخرى.
  • عرض 30 حجزًا في الصفحة، مع فلترة حسب الحالة.
  • الحالات: جديد، تم التواصل، مؤكد، مكتمل، ملغي.
  • حذف الحجز نهائيًا بعد تأكيد من المسؤول.
  • بيانات العملاء لا تُعرض من APIs عامة.

الأسعار الأولية في src/data/services.ts تُستخدم عندما لا يوجد تخصيص محفوظ. بعد أول حفظ من اللوحة تصبح بيانات D1 هي المصدر المعتمد. تظهر التعديلات بعد تحديث الصفحة دون إعادة نشر. رسائل واتساب اختيارية، والحجز يُحفظ مركزيًا أولًا، ولا يُعد تأكيدًا للسعر أو الموعد.

إعدادات الخادم

ADMIN_EMAIL: بريد حساب ChatGPT المسموح بإدارة الموقع، سر في إعدادات الاستضافة. RATE_LIMIT_SECRET: قيمة عشوائية سرية لتجزئة مفاتيح حد الطلبات. DB: ربط D1 في .openai/hosting.json. لا تضع هذه القيم في المصدر أو ملفات الواجهة. تسجيل الدخول والخروج وcallback تديرها منصة Sites؛ لا تنشئ جلسة أو كلمة مرور بديلة.

الملفات المهمة

المسار الوظيفة
src/components/AdminPanel.tsx واجهة إدارة الأسعار والحجوزات
src/pages/admin.astro صفحة الإدارة
src/components/BookingForm.tsx إرسال مركزي مع منع تكرار نفس الطلب عند إعادة المحاولة
server/worker.mjs APIs والصلاحيات وتحديث HTML العام من البيانات المركزية
server/validation.mjs التحقق من الحقول على الخادم
scripts/build-worker.mjs ربط الواجهة والخادم في حزمة النشر
db/schema.ts وdrizzle/ مخطط قاعدة البيانات وترحيلاتها
tests/admin.test.mjs اختبار Worker وD1 محليًا عبر Miniflare

حد الطلبات العامة: حتى 10 طلبات في الساعة لكل عنوان وصول متاح (أو رقم هاتف عند غيابه)، مع حقل مضاد للروبوتات وموافقة إلزامية والتحقق من المنشأ. لا يوجد دفع إلكتروني أو رسائل تسويقية تلقائية أو رفع صور في هذه النسخة.

النشر

أعد بناء الحزمة الكاملة، ثم ادفع المصدر واحفظ نسخة وانشر عبر Sites مع الحفاظ على project_id وD1 والجمهور الحالي. نشر ملفات Astro الثابتة وحدها يفقد حماية اللوحة وAPIs والحفظ المركزي. بعد تحديث GitHub وحده يجب إعادة النشر على Sites حتى تُطبّق تغييرات الكود؛ تعديل الأسعار من اللوحة لا يحتاج إعادة نشر.

عند تغيير نطاق الموقع حدّث astro.static.config.mjs وpublic/robots.txt. لا تعدّل ترحيلات تم تطبيقها؛ أضف ترحيلات جديدة فقط.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages