إعلان: مطلوب مطوّر TypeScript + Firebase (عاجل، تسليم الثلاثاء)
نبذة عن المشروع
نعمل على تطوير منصة SaaS متكاملة مرتبطة بمتاجر سِلّة (Salla) لإرسال دعوات تقييم العملاء وجمع المراجعات وإدارتها.
الكود الأساسي موجود (Next.js API Routes + TypeScript + Firebase Firestore/Admin).
المطلوب هو ضبط بعض المسارات الحرجة + إضافة اختبارات وضمان الجودة في وقت قصير جدًا (تسليم نهائي صباح/ظهر الثلاثاء).
المستقل سيعمل بالتنسيق المباشر مع مبرمج أساسي في الفريق (مسؤول عن البنية الكاملة — أنا شخصيًا) لضمان وضوح المطلوب وسرعة التنفيذ.
المهام المطلوبة
1) Endpoint resolve
تحسين منطق استخراج storeUid من href/الدومين.
دعم الروابط بدون بروتوكول.
استخدام فهرس domains/{base} أولًا ثم fallback على stores.
تحسين رسائل الأخطاء (400/404) + تغطية اختبارات Unit + Integration.
2) Webhooks سِلّة
مراجعة الأحداث (app.*, order.*) والتأكد من Idempotency عبر webhooks_salla/{sha256}.
تثبيت منطق إنشاء الدعوات (review_tokens + review_invites) كـ single-use.
تأكيد حالات التشغيل:
paid/delivered → إنشاء دعوة.
cancelled/refunded → إبطال التوكنات.
3) نظام التقييمات (Reviews)
إنشاء Endpoint review/submit لاستقبال التقييم:
إدخال { tokenId, rating, comment? }.
رفض إعادة استخدام التوكن (409).
تخزين المراجعة في reviews + تحديث ratings_summary.
Sanitization + حد أقصى للتعليق.
اختبارات Integration (happy path + errors).
4) Direct Send (بدل Cloud Run مؤقتًا)
إضافة فلاغ بيئة DIRECT_SEND_ENABLED=true.
عند التفعيل:
إرسال SMS/Email مباشر من الويبهوك مع timeout قصير (≈2.5 ثانية).
عند فشل قناة → fallback Outbox job لتلك القناة فقط.
عند الإيقاف: العودة للـ enqueueOutboxJob.
اختبارات: happy path، timeout → fallback، no-channels، quota denied.
5) اختبارات + CI + توثيق
كتابة Unit + Integration Tests باستخدام Jest + Firebase Emulator.
تحقيق تغطية ≥85% للملفات المستهدفة.
إعداد CI بسيط (GitHub Actions: lint → test → build).
تحديث README: تشغيل emulator + أوامر curl للتجربة.
معايير القبول
resolve: يرجّع storeUid صحيح بكل الحالات + أخطاء واضحة.
Webhook: idempotency مفعّلة بالكامل.
Reviews: التوكن يُستخدم مرة واحدة فقط، وتُحدّث الملخصات.
Direct Send: يعمل بفلاغ ENV + fallback صحيح لـ Outbox.
اختبارات ناجحة، تغطية ≥85%، CI أخضر.
README واضح وسهل التشغيل.
الجدول الزمني
الإثنين: تنفيذ المهام الأساسية + اختبارات أولية.
الثلاثاء (صباح/ظهر): تسليم نهائي بعد مراجعة مع المبرمج الأساسي.
المهارات المطلوبة
TypeScript + Next.js API Routes.
Firebase Firestore + Admin SDK + Emulator.
Jest/ts-jest (Unit + Integration).
خبرة مع Webhooks وIdempotency.
طريقة العمل
المستقل سيعمل بالتنسيق المباشر مع مبرمج أساسي في المشروع (متواجد للشرح والإجابة والتجارب).
التواصل سيكون سريع ومباشر لضمان تسليم المهام في الوقت المحدد.
المطلوب في العرض
أمثلة لاختبارات TypeScript كتبتها سابقًا (Unit + Integration).
خبرتك مع Firebase Emulator.
تأكيد الالتزام بالموعد النهائي *(الثلاثاء).*
أنا مطور TypeScript / Next.js بخبرة قوية في العمل مع Firebase (Firestore, Admin SDK, Emulator)، وبالأخص تصميم الـ API Routes وضبط الـ Webhooks مع ضمان Idempoten...
مساء الخير، أنا شوفت تفاصيل مشروعك وبصراحة ده بالظبط مجالي. عندي خبرة كويسة في React.js مع Firebase (Authentication, Firestore, Hosting, Cloud Functions)، واشتغ...