ENتواصل معنا

متاح لأعمال جديدة

المؤسسبانفكس

مصطفى بشير

مؤسس بانفكس — مهندس واجهات خلفية

أصمّم وأبني الأنظمة التي تعمل عليها المنشآت — الحسابات والمخزون والمال والقواعد التي تحتها.

تواصل مباشر

Mustafa Basheir

١١نظامًا بُني ويُشغَّل

مهندس واجهات خلفية

كيف وصلت إلى هنا.

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

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

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

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

ما الذي أفعله فعلًا.

ستة أمور، موصوفة بدقة تكفي لتعرف هل هي ما تحتاجه أم لا. وقائمة تقنيات ما كانت لتخبرك بذلك.

نماذج بيانات تصمد

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

محركات محاسبة ومخزون

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

واجهات برمجية مصنوعة لتُدمَج

موارد متوقَّعة، وتحقّق عند الحدّ، وأخطاء تخبرك بما تفعله حيالها، وخاصية عدم التكرار حيث سيعيد العميل المحاولة. فالنقطة التي تتصرف تصرفًا مختلفًا في النداء المطابق الثاني عطلٌ ينتظر اتصالًا سيئًا.

صلاحيات تصمد أمام المستخدمين

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

طوابير وعمّال ومهام طويلة

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

عربي وإنجليزي من الأساس

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

أعمال مختارة

١١ نظامًا، كلها من تشغيلي.

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

تصفية الأعمال بالحالة

سكاي فاينانس

قيد التطوير٢٠٢٥ — الآن

نظام متكامل: مبيعات ومشتريات ومخزون وتصنيع ونقاط بيع ورواتب وحسابات في منشأة واحدة.

دوريالمعمارية والواجهة الخلفية — نموذج البيانات ومحرك المحاسبة وواجهة البرمجة

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • Mongoose
  • Decimal.js
  • React
ماذا بداخله

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

فاتورة جو

قيد التطوير٢٠٢٥

فوترة جاهزة ضريبيًا بملف PDF ورمز تحقّق وواجهة برمجية.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

الفوترة أصعب مما تبدو لأن المستند أثر قانوني لا شاشة: فبعد إصداره لا يتغيّر، والتصحيح مستند جديد يشير إلى القديم. ورمز التحقق على كل فاتورة هو ما يتيح للمستلم أن يتثبّت منها عند المُصدِر بدل أن يثق بالورقة.

إيجل بي أو إس

قيد التطوير٢٠٢٦

نقاط بيع للتجزئة، ومعها الشراء من الموردين والمخزون الذي وراءها.

دوريالمعمارية والواجهة الخلفية — نقاط البيع والشراء والمخزون

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • Transactions
  • React
  • JWT
ماذا بداخله

مبني على محرك سكاي فاينانس نفسه، لكنه موجَّه إلى محل لا إلى مؤسسة. والقيود المثيرة فيه كلها عن الثقة عند الكاونتر: الجهاز لا يُسمح له بإرسال سعر أبدًا، ولا وجود لبيعة خارج وردية مفتوحة، والبيعة المعادة تُرجع الفاتورة التي أُنشئت أصلًا بدل الخصم مرتين، والمرتجع يحتاج صلاحية لا يملكها الكاشير — يمنحها المدير عند الكاشير دون تسجيل خروجه.

سكانورا

قيد التطوير٢٠٢٥

أكواد QR ديناميكية تعيد توجيهها بعد الطباعة، مع تحليلات المسح.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

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

تولايكون

قيد التصميم٢٠٢٦

أدوات PDF في المتصفح — دمج وتقسيم وترتيب وضغط وتحويل وحماية.

دوريالمعمارية والواجهة الخلفية — تصميم الطوابير وعقد الأدوات والأمان

بُني بـ
  • NestJS
  • BullMQ
  • Redis
  • MongoDB
  • S3
  • Astro
ماذا بداخله

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

فيرو

قيد التطوير٢٠٢٥

إدارة مشاريع ومهام مع تسجيل الوقت، بالتسعير لكل مقعد.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

أدوات المهام سهلة البناء ويصعب أن يستمر أحد في استخدامها. والجزء الذي يستحق الهندسة هو سجل الوقت: يجب أن يكون سريعًا كفاية ليكون صادقًا، ومنظَّمًا كفاية ليُفوتَر منه، والاثنان يشدّان في اتجاهين متعاكسين.

إيجل ستاي

قيد التطوير٢٠٢٥

إدارة فنادق: الاستقبال ومزامنة القنوات والتدبير الفندقي وحساب النزيل.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

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

إنكو كلينك

قيد التطوير٢٠٢٥

إدارة عيادات: المواعيد وملفات المرضى والوصفات والفوترة.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

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

إديو سفير

قيد التطوير٢٠٢٥

إدارة مدارس: الطلاب وأولياء الأمور والحضور والتقييم.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

الجزء الصعب ليس البيانات بل التقويم — الفصول والجداول والعطلات والدفعات تتحرك كل واحدة باستقلال، وكل تقرير تريده المدرسة فعلًا سؤال يُطرح عليها الأربعة دفعة واحدة.

إديو كلينك

قيد التطوير٢٠٢٥

سوق يدرّس فيه طلاب الجامعات بعضهم بعضًا.

دوريالمعمارية والواجهة الخلفية

بُني بـ
  • Node.js
  • Express
  • MongoDB
  • React
  • Tailwind
ماذا بداخله

السوق ذو الطرفين لديه مشكلة بداية باردة قبل أن تكون لديه مشكلة هندسية: فالمطابقة والجدولة والدفع أمور مباشرة إذا قورنت بإقناع أول مئة مدرّس بالحضور قبل وصول أول مئة طالب.

بانفكس

يعمل٢٠٢٦

الشركة: النطاق والهوية المشتركة ومواقع كل المنتجات.

دورينظام التصميم والبناء والنشر

بُني بـ
  • Astro
  • TypeScript
  • Tailwind
  • Sharp
  • Static
ماذا بداخله

أحد عشر موقعًا ثابتًا على نطاق واحد، تتشارك نظام تصميم واثنتي عشرة لوحة ألوان ولغتين تُبنى كل منهما صفحات منفصلة لا تُبدَّل وقت التشغيل. والمنتجات على مسارات فرعية لا نطاقات فرعية لترث سلطة النطاق، والمجموعة كلها تشحن نحو ثلاثة كيلوبايت من الجافاسكربت في الصفحة الكاملة.

كيف أعمل.

أربعة التزامات بدل أربع صفات. كل واحد منها تستطيع محاسبتي عليه، وتلاحظ إن أخللت به.

النموذج قبل الشاشات

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

الصحيح قبل المبهر

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

هو ملكك من أول التزام في المستودع

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

تعرف بالمشكلة مبكرًا

حين يتأخر تقدير أو يسوء قرار، تُخبَر وأنت لا تزال تملك خيارًا حياله. فالمفاجأة في موعد التسليم إخفاق في التواصل بدأ قبل أسابيع.

الأدوات التي ألجأ إليها.

اخترتها لأني شغّلت عليها أنظمة مدةً تكفي لأعرف كيف تفشل، وهذه مؤهّل مختلف عن مجرد استخدامها.

الواجهة الخلفية

  • Node.js
  • Express
  • NestJS
  • TypeScript
  • REST
  • JWT

البيانات

  • MongoDB
  • Mongoose
  • Redis
  • Transactions
  • Aggregation
  • Indexing

البنية التحتية

  • BullMQ
  • S3 / MinIO
  • Docker
  • Cron workers
  • Rate limiting

الواجهة الأمامية

  • React
  • Astro
  • Tailwind
  • Vite
  • RTL / i18n
أسئلة

ما يُسأل عنه قبل المراسلة.

عني وعن طريقة عملي. أما الأسئلة التجارية — السعر والعقود والملكية وما يحدث بعد الإطلاق — فمجابة في صفحة الشركة.

ما نوع العمل الذي تقبله؟
الواجهات الخلفية والمعمارية في الأنظمة التي تحتها قواعد حقيقية — حسابات ومخزون وفوترة ونقاط بيع وجدولة، وكل ما يكون فيه نموذج البيانات هو الجزء الصعب ويكون فيه للرقم الخاطئ ثمن. وأقلّ ما أنفع فيه العمل الذي أغلبه واجهة، وسأقول ذلك بدل أن أقبله.
هل هذه الأنظمة الأحد عشر تعمل فعلًا أم أنها نماذج أولية؟
كل بطاقة تذكر حالتها، وأغلبها يقول «قيد التطوير». هذا الموقع ومواقع المنتجات تعمل، أما المنتجات وراءها فتبنيها الشركة وتشغّلها لا أن تشحنها مرة وتتركها. وأفضّل أن أعرض عليك حالة تستطيع التحقق منها على ادعاء لا تستطيع.
لماذا يكاد كل شيء يكون Node و Express و MongoDB؟
لأني شغّلت أنظمة على هذه المجموعة مدةً تكفي لأعرف كيف تفشل، وهذه مؤهّل مختلف عن مجرد استخدامها. وتولايكون على NestJS و BullMQ و Redis للسبب نفسه — فمسألة الطوابير تحتاج إطار طوابير. التقنية تتبع المشكلة، غير أن أغلب مشكلاتي كانت على الشكل نفسه حتى الآن.
هل تكتب الواجهة الأمامية أيضًا أم الواجهة البرمجية فقط؟
الاثنتان، لكنهما ليستا سواء. عمل React و Astro في هذه المنتجات لي، وهذا الموقع لي حتى في الأنماط. لكن عمقي في جهة الخادم: النموذج والمحرك وعقد الواجهة البرمجية. وإن كان المشروع يحتاج مصمّمًا فهو يحتاج مصمّمًا، وتعيين واحد أرخص من أن تطلب مني أن أكونه.
هل أستطيع الاطلاع على الشيفرة؟
ليس علنًا — فهذه منتجات الشركة، وبعضها يحمل بيانات عملاء. لكني أشرح المهم منها في مكالمة: محرك المحاسبة، وحدود المعاملات، ونموذج الصلاحيات. وقراءة الشيفرة معًا اختبار للمهندس أصدق من مستودع تتصفحه سريعًا على أي حال.
كيف تُبقي أحد عشر نظامًا تعمل في وقت واحد؟
بأن أجعلها تتشارك أكبر قدر ممكن. إيجل بي أو إس مبني على محرك سكاي فاينانس لا على محرك خاص به، وكل مواقع هذا النطاق تتشارك نظام تصميم واحدًا وملف ألوان واحدًا وطبقة لغات واحدة، وكل موقع منها يُشحن HTML ثابتًا فلا يوجد ما يجب إبقاؤه حيًّا. فالعمل الذي لا يتوسّع هو العمل المكرَّر.
كيف يبدو أول أسبوعين في المشروع؟
بلا شيفرة تقريبًا. أجلس مع من سيستخدمون النظام، وأكتب ما هي السجلات وما الذي يجب ألا يناقض ما، ثم نتفق على ذلك كتابةً. وما تخرج به في نهايته نموذجٌ ونطاقٌ وافقتَ عليهما — وهما ما يجعل كل تقدير بعدهما يساوي شيئًا.
ما الذي لا تفعله؟
تطبيقات الجوال الأصلية، وتعلّم الآلة، وأنظمة تصميم لعلامة غيري، وكل ما أكون فيه المهندس الرابع على شيفرة لا رأي لي فيها. وأرفض كذلك العمل الذي يُحدَّد موعده قبل متطلباته — لا مبدأً، بل لأني سأخلفه.
هل تعمل بالعربية كما بالإنجليزية؟
بالاثنتين، والبرمجيات كذلك. كل منتج هنا ثنائي اللغة من المخطط إلى أعلى: الاتجاه من اليمين خاصية بنيوية في التخطيط لا ورقة أنماط من الاستثناءات، واللغتان تُبنيان صفحات منفصلة لا تُبدَّل وقت التشغيل. وإلحاق ذلك بواجهة مكتملة يكلّف أضعاف بنائه فيها من البداية.
أين أنت، وكيف تعمل مع من هم في مكان آخر؟
[المدينة، الدولة]، والعمل [عن بُعد / مختلط — حدّد أيّهما]. وعمليًا: تحديثات مكتوبة تقرأها في وقتك، ومكالمة حين يحتاج قرارٌ مكالمة، وبلا توقّع أن يجلس أحد في اجتماع ليسمع ما يسعه سطران.
شيء بنيته وساء. ماذا حدث؟
[أجب عن هذا بصدق وتحديد — ما القرار، وكم كلّف، وما الذي غيّرته بعده. هذه أكثر إجابة مقنعة في الصفحة، والوحيدة التي لا يجدها القارئ في مكان آخر. واتركها فارغة بدل أن تكتب تفاخرًا متواضعًا.]
كيف أبدأ محادثة تستحق وقتك؟
أرسل المشكلة لا المواصفات. ما الذي تفعله المنشأة، وأي جزء منه يؤلم الآن، وما الذي جرّبته بالفعل — ثلاث فقرات تكفي. أقرأ كل شيء وأرد على كل رسالة فيها مشكلة حقيقية، وإن كنت الشخص الخطأ قلت ذلك في أول رد لا في الثالث.

راسلني مباشرة.

ليس نموذجًا يصل إلى طابور. إن كنت تزن نظامًا — جديدًا أو موروثًا أو نصف مبنيّ — فأرسل السؤال بصيغته غير المرتّبة.

أقرأ كل شيء. وأرد على كل رسالة فيها مشكلة حقيقية.