التقنيات

النسخة التقنية.

هذه الصفحة للشركات لا للعملاء. لا باقات ولا أسعار — بل البنية، والقرارات التي اتخذتها في مواجهة بديل معقول، وما كلّفني كل قرار. أبرمج منذ ٢٠٢١، تعلّمت بنفسي، وأعمل وحدي عبر الطبقات كلها.

أنت واقف على المثال

هذا الموقع ليس معرضاً لعمل غيري. الصفحات العامة بثلاث لغات، والواجهة البرمجية، وقاعدة البيانات، ولوحة الإدارة خلفها — كلها تطبيق واحد كتبته وأشغّله. لا منشئ مواقع ولا نظام إدارة محتوى خارجي في أي جزء منه.

إطار العمل
TanStack Start و React 19 ومسارات قائمة على الملفات
الواجهة البرمجية
Elysia تحت ‎/api مع Eden Treaty كعميل مُنمَّط
البيانات
PostgreSQL عبر pg، وSQL خام بمعاملات، بلا ORM
التحقق
Valibot على الحدود، مشترك بين العميل والخادم
الحالة والنماذج
React Query لبيانات الخادم و TanStack Form للإدخال
الحركة
CSS مع IntersectionObserver وأحداث المؤشر، بلا مكتبة
الاستضافة
Vercel اليوم؛ والخطوة التالية جهاز Hetzner في ألمانيا

أربعة قرارات وثمنها

كل واحد منها اتُّخذ في مواجهة خيار معقول. والنصف المثير ليس ما اخترته، بل ما كلّفني اختياره — ولذلك هو مكتوب هنا أيضاً.

SQL خام بمعاملات بدل ORM

تطبيق واحد، وقاعدة بيانات واحدة، ومشغّل واحد. الـ ORM يضع طبقة تحويل ولهجة ترحيل بيني وبين استعلام أستطيع قراءته أصلاً. في هذا الحجم هذه أجزاء متحركة بلا مقابل.

ما يكلّفه

كتابة أكثر، ولا إعادة هيكلة مجانية للمخطط. أكتب الترحيلات بيدي وأبقي الاستعلامات قريبة من الجداول.

لوحة إدارة خاصة بي لا نظام محتوى خارجي

طلبات التواصل ونصوص الصفحات والعملاء والفواتير تعيش في نظام واحد بنموذج محتوى واحد، لا موزّعة بين مزوّد وقاعدة بيانات. وكون المنصة مبنية بالكامل بيدي هو بيت القصيد في المعرض أساساً.

ما يكلّفه

أبني المحرّر بنفسي بدل أن أثبّت واحداً جاهزاً. وإلى أن يكتمل، تبقى النصوص في ملفات مُنمَّطة — وهذا صادق لا مريح.

خادم ألماني أديره بنفسي بدل البقاء على serverless

بيانات العملاء والطلبات والفواتير مكانها جهاز في ألمانيا، وهذا يجعل جواب الـ GDPR قصيراً. ومهام cron والخلفية تعمل هناك أصلاً، وقاعدة بيانات محلية بلا مشكلة تجميع اتصالات يُبنى حولها.

أين يقف هذا القرار

هذا قرار، لا واقع بعد: الموقع يعمل اليوم على Vercel، والانتقال إلى Hetzner مع Coolify هو مهمة البنية التحتية التالية. وحين يتم، تصبح النسخ الاحتياطية والتحديثات الأمنية مسؤوليتي — لقطات، و pg_dump ليلي، وتحديثات تلقائية، واستعادة جرّبتها فعلاً لا افترضتها.

طبقة حركة بلا مكتبة رسوم

المحاولة الأولى كانت بـ GSAP و ScrollTrigger و Lenis. كانت تنهار عند كل انتقال من الصفحة الرئيسية داخل التطبيق، وتحرّك أقساماً لم يوافق عليها أحد. حذفتها وأعدت بناء كل شيء على انتقالات CSS و IntersectionObserver و ResizeObserver وأحداث المؤشر.

ما كلّفه

أسبوع عمل ذهب هدراً، ومنحنيات تسارع أكتبها الآن بيدي. وفي المقابل لا تُرسل الصفحة أي زمن تشغيل للرسوم، ولا ينكسر شيء عند الانتقال.

ما أطلقته

متجر إلكتروني بكتالوج مفلتر من ٥٠٠ منتج، ودفع Stripe، وطلبات، وصفحات الدعم التي يحتاجها متجر ألماني قانونياً. ومنصة كتابة بمحرّر ورفع صور وتعليقات وتفاعلات وإشعارات. ونظام إدارة عقارات، قيد البناء، على بنيته يقوم هذا الموقع.

شاهد المشاريع