المشكلة
كل من يربّي حيوانًا أليفًا تساءل يومًا عمّا يعنيه ذلك النباح حقًا. والتطبيقات التي تدّعي ترجمة لغة الحيوانات إما ألعاب بنكات جاهزة، وإما تعد بعلم غير موجود. وكانت فكرة Dicitencell AI أن يكون صادقًا ومضحكًا في الوقت نفسه. فهو مترجم يعترف بأنه يخمّن، ويقرأ السياق، ويجيب بلهجة نابولي. وكان عليه أيضًا أن يكون جاهزًا للتوسع إلى تطبيق مدفوع وتطبيق iOS.
ما الذي بنيته
بنيت تطبيق ويب تسجّل فيه صوت حيوانك الأليف، فيخبرك التطبيق بما «قاله»، بجدية تامة ومع نكتة في الختام.
- من الحيوان إلى الإنسان — سجّل حتى 15 ثانية في المتصفح واختر السياق. فيعيد المحرك شعورًا، ونية محتملة، وقراءة جادة للسلوك، ونكتة من سطر واحد بلهجة نابولي، ودرجة ثقة، وملاحظة سلامة عند الحاجة.
- من الإنسان إلى الحيوان — اكتب ما تريد قوله واحصل على نصائح بشأن النبرة والإيماءة وأمر قصير، إضافة إلى نباح أو مواء مُركَّب. تُولَّد الأصوات بالكود وتُوسم بوضوح على أنها محاكاة.
- سبعة مستويات من لهجة نابولي — من «خفيف» إلى «كلب الحي» و«القط الأرستقراطي».
- ملفات الحيوانات الأليفة — تدخل الصور والسلالة والطباع والعادات مباشرة في الموجّه، فلا يحصل القط الكسول والجرو المفرط النشاط على العبارة نفسها. ويكتمل المسار بسجل للترجمات وتهيئة أولية من ست خطوات.
- محرك ذكاء اصطناعي قابل للتبديل — يتعامل التطبيق مع واجهة واحدة. ويطلب محوّل Claude صيغة JSON صارمة ويتحقق منها عبر Zod. وإذا غاب المفتاح أو جاءت الإجابة مشوهة، يتولى محرك محاكاة المهمة، فيحصل المستخدم دائمًا على إجابة.
- لوحة الإدارة — يُدار المستخدمون ومفاتيح API من داخل التطبيق. وإعدادات صوت ElevenLabs ومدفوعات Stripe جاهزة بالفعل للمرحلة التالية.
التقنيات المستخدمة
Next.js 14 مع App Router، وTypeScript في الوضع الصارم، وReact 18، وTailwind CSS. ويوفر Supabase قاعدة Postgres والمصادقة والتخزين. ويضم المخطط 15 جدولًا، جميعها بأمان على مستوى الصفوف، فلا يستطيع المستخدمون قراءة إلا حيواناتهم وترجماتهم. ويعمل الذكاء الاصطناعي على Anthropic Claude عبر SDK الرسمية، ومن جهة الخادم فقط. ويتحقق Zod من المدخلات ومن مخرجات الذكاء الاصطناعي؛ وتغطي اختبارات Vitest المحرك.
لماذا بهذه الطريقة
بنيته بنهج API أولًا. فكل المنطق موجود في خدمات الخادم خلف مسارات REST، وواجهة الويب مجرد عميل واحد. وتطبيق SwiftUI المخطط لهاتف iPhone سيستدعي المسارات نفسها بدلًا من إعادة كتابة المنطق. والوصول المدفوع يعمل بالطريقة نفسها: خطة داخلية (مجانية، ومميزة، ومشرف) محفوظة في قاعدة البيانات، ويقتصر دور Stripe أو StoreKit على ضبطها.


