One Bite Candy
متجر حلويات إلكتروني: كتالوج وسلة وتوصيل للمنزل أو نقطة استلام مع تتبع شركة التوصيل، ولوحة إدارة كاملة.
- دَوري
- مطور Full Stack
- الفترة
- يونيو 2026 — أغسطس 2026
- الحالة
- مُنجز

One Bite Candy هو المتجر الإلكتروني لعلامة حلويات، ويعمل في الإنتاج على onebitecandy.com. يتصفح الزبون كتالوج الحلويات ويكوّن سلّته ثم يُتم طلبه بالدفع عند الاستلام، مختارًا بين التوصيل إلى المنزل أو الاستلام من أحد مكاتب stop-desk التابعة للناقل — وهي مكاتب استلام تشغّلها Ecotrack بواقع مكتب لكل بلدية.
أما البنية، فهي قاعدة كود TypeScript من طرف إلى طرف: متجر ولوحة إدارة بـ Next.js فوق واجهة برمجية بـ Node.js وقاعدة بيانات PostgreSQL. تُخزَّن وسائط المنتجات على Cloudflare R2، وتتبع جميع كيانات العمل قاعدة الحذف المنطقي، وتُنشر المنصة على خادم إنتاج عبر خط CI/CD.
المشكلة المطلوب حلّها
تنتظم شبكة التوصيل لدى Ecotrack حول مكاتب stop-desk، بحيث يقابل كل مكتب بلديةً واحدة — وأي صفحة إتمام طلب تعرض قائمة مكاتب قديمة، أو حقل استلام نصيًا حرًّا، تُنتج طلبات لا تستطيع شركة النقل تنفيذها. وبما أن الدفع كله يتم عند الاستلام، فإن فشل التسليم يعني عدم تحصيل أي مبلغ أصلًا. كانت المشكلة الحقيقية هي نمذجة جغرافيا مكاتب الناقل داخل المنصة وإبقاؤها متزامنة، بحيث لا تعرض صفحة إتمام الطلب إلا نقاط استلام قائمة فعلًا.

كيف بُني
تحتفظ المنصة بجدول مكاتب خاص بها يُزامَن من Ecotrack، ويقرأ منه مباشرةً مُنتقي مكتب الاستلام في صفحة إتمام الطلب: يختار الزبون بلديته فيحصل على المكتب الذي يشغّله الناقل فيها فعلًا، مع بقاء التوصيل المنزلي خيارًا بديلًا. وبعد شحن الطلب، تُتابَع حالته لدى الناقل مباشرةً عبر التكامل نفسه.
وحول هذا الجوهر، تدير لوحة الإدارة المنتجات والطلبات؛ وتُخزَّن وسائط المنتجات على Cloudflare R2 بدل خادم التطبيق؛ وتعتمد جميع كيانات العمل الحذف المنطقي، فحذف منتج لا يقطع أبدًا سجل الطلبات المرتبطة به. ويعمل النظام كله على خادم إنتاج مع خط CI/CD يتولى النشر.
ماذا يفعل
الكتالوج والسلة
يتصفح الزبائن تشكيلة الحلويات ويكوّنون سلة متعددة المنتجات قبل الانتقال إلى إتمام الطلب.
الدفع عند الاستلام
تُسجَّل الطلبات دون أي دفع إلكتروني؛ يدفع الزبون نقدًا لمندوب التوصيل عند تسلُّم الطرد.
منتقي مكتب الاستلام
جدول مكاتب مُزامَن من Ecotrack يغذي المُنتقي في صفحة إتمام الطلب، مع ربط كل مكتب ببلديته، فلا يختار الزبون إلا نقاط استلام يشغّلها الناقل فعلًا.
تتبع مباشر للشحنة
تمر الشحنات عبر تكامل Ecotrack، ويمكن متابعة حالة توصيل كل طلب لحظة بلحظة.
لوحة إدارة خلفية
واجهة إدارة مخصصة تدير كتالوج المنتجات ومسار الطلبات من البداية إلى النهاية.
حذف منطقي للبيانات
لا يُحذف أي كيان عمل نهائيًا: تُعلَّم السجلات فقط، فيبقى سجل الطلبات سليمًا حتى بعد سحب المنتجات من البيع.

نظرة أقرب

بُني باستخدام
الواجهة الأمامية
يقدّم Next.js صفحات الكتالوج والمنتجات مُصيَّرة من الخادم فتُحمَّل بسرعة وتبقى قابلة للفهرسة، بينما يتشارك المتجر ولوحة الإدارة قاعدة React واحدة.
يفرض TypeScript الأنواع على المسار كاملًا من بيانات إتمام الطلب حتى نداء واجهة الناقل، فتظهر الاختلافات مع بنى بيانات Ecotrack عند الترجمة لا أثناء طلب حقيقي.
يوحّد Tailwind تنسيق المتجر ولوحة الإدارة بمفردات أدوات مشتركة واحدة، مما يُبقي وتيرة التعديل سريعة والمظهر متسقًا على الواجهتين.
الخلفية
تتولى واجهة Node.js البرمجية مسار الطلبات ونداءات Ecotrack؛ فمزامنة المكاتب وإنشاء الشحنات أعمال إدخال/إخراج تناسب نموذجه غير المتزامن، وباللغة نفسها المستخدمة في الواجهة.
البيانات
يحفظ PostgreSQL المنتجات والطلبات وجدول المكاتب المُزامَن تحت قيود علائقية حقيقية، ويجعل تطبيق الحذف المنطقي — تعليم الصف بدل حذفه — أمرًا مباشرًا على جميع كيانات العمل.