varqioSOFTWORKS / هندسة التجارة
المتجرمجرد البداية.
من أول منتج لآخر خطوة في الطلب. بنينا Varqio عشان تصميم المتجر والكتالوج والمخزون والدفع يشتغلوا كنظام واحد.



شاشات تجريبية · تصوّر للأجهزة
CATALOG × INVENTORY- المنتج
- Varqio من Softworks
- الدعم
- مستثمر ملاك غير مُعلَن
- التركيز
- التجارة في مصر
- الحالة
- بيتا · تأهيل تجريبي
الفكرة الأساسية
بيع المنتج لحظة واحدة. اللي حواليها هو النظام كله.
01 / المنصة
المتجر هو البداية.
فريق Softworks · هندسة تجارة إلكترونية · النسخة اللي ينفع تقراها ومعاك قهوة
الموضوع من بره بسيط: منتج، صورة، سعر، زرار «اشتري». من جوه بقى، المنتج له مخزون، والسعر ممكن يتغير، والخصم له حد، والدفع ممكن يرد متأخر، والتاجر لسه بيغيّر مكان الـHero وهو بيكلمك.
إحنا في Softworks بنينا Varqio عشان الأجزاء دي تتكلم نفس اللغة. مش اللغة بمعنى عربي وإنجليزي بس؛ نفس معنى الطلب والسعر والمسودة والنشر. لأن أجمل زرار في الدنيا مش هيحل خلاف بين رقمين كل واحد فيهم فاكر نفسه الصح.
دي دراسة حالة تقنية كاملة، بس بنَفَس مصري أخف. الإفيه استراحة صغيرة، والشرح هو الأساس. المواقف أمثلة توضيحية مبنية على الكود والاختبارات، مش محضر اجتماع متخيّل ولا حكايات عن عملاء ماحصلتش. والمنتج لسه في تأهيل لتجربة تجار محدودة؛ مفيش أرقام نمو معمولة عشان البوست يطلع حلو.
«عايزين متجر» كانت بداية الجملة بس
المتجر محتاج يتفتح، أكيد. بس التاجر كمان محتاج يعرف المنتج ناقص ولا موجود، الطلب اتدفع ولا لسه، الشحنة اتجهزت ولا مستنية، والتعديل اللي عمله اتنشر ولا موجود في المسودة بس.
لو كل إجابة محتاجة تبويب مختلف وشخص يفسرها، يبقى إحنا نقلنا التعقيد للتاجر. فبدأنا من الرحلة: جهّز الكتالوج، ظبط التصميم، راجع الشراء، تابع الطلب، وافهم اللي محتاج تدخل.
السياق المصري دخل في قلب الرحلة. جنيه مصري، دفع عند الاستلام، مناطق توصيل، وعربي محتاج ياخد مساحته في الواجهة. مش هنغيّر كلمة الدولار لجنيه ونقول خلصنا localization.
تعليقنا الأصلي: «الزرار اشتغل» خبر كويس. «الطلب كله مفهوم» خبر أحسن للتاجر.
إحنا بنينا إيه بالظبط؟
لوحة للتاجر، واجهة للعميل، API للتجارة، بيانات، ميديا، وشغل بيكمل في الخلفية. ومعاهم محرر متجر، قوالب وإصدارات، وأدوات مساعدة وتكامل.
التاجر يقدر يدير منتجات فعلية ورقمية، متغيرات ومخزون ومجموعات وعروض، ويشتغل على الطلبات والتوصيل والتحليلات. التصميم نفسه قابل للتخصيص من خلال أقسام وبلوكات وقوالب وإعدادات للشاشات.
وفيه Varq AI في الـworking tree، مع محادثات وstreaming واقتراحات واستخدام للرصيد. كل ده له حدود تمكين وتقييم. وجود باب في العمارة مش معناه إن كل الشقق اتسلّمت.
| الحاجة اللي بتبان | الشغل اللي وراها |
|---|---|
| قائمة منتجات | أنواع وvariants وأسعار ومراجع ومخزون |
| Canvas للتصميم | مستند منظم وrenderer وإعدادات وhistory |
| زرار نشر | فصل بين المسودة والإصدار الحي |
| حالة طلب | نتيجة تجارية وشغل تجهيز لسه ممكن يكون مستني |
| رسالة AI | سياق واقتراح وإصدار ورصيد |
| اختيار عربي | اتجاه ومحتوى مختلط ومقاسات ومساحات |
02 / النظام
نموذج واحد. مهام مختلفة.
مين بيعمل إيه؟ عشان مايبقاش كله بينادي على كله
لوحة التاجر مبنية بـNext.js، وواجهة المتجر كمان تطبيق Next.js. الاتنين بيتعاملوا مع خدمات TypeScript في الـAPI، والبيانات في MongoDB. الملفات ليها تخزينها، والشغل الطويل له workers.
فصل الواجهتين له سبب عملي. التاجر محتاج يقارن ويعدّل ويفلتر. العميل محتاج يكتشف ويشتري. مش لازم نفس شكل المكونات، لكن لازم نفس معنى البيانات.
المشترك عندنا هو العقود اللي محتاجة تتفق: مستند التصميم، تعريف الأقسام، طريقة تمثيل المنتج، وقواعد التعامل مع الطلب. مش بنعمل نسخة من منطق السعر في كل شاشة ونستنى النسخ تتصالح لوحدها.
تعليقنا الأصلي: لو كل طبقة قالت «أنا حسبتها بطريقتي»، آخر اليوم هنحتاج اجتماع مصالحة بين الـfrontend والـbackend.
البنية modular، وفيها توافق مع أجزاء قديمة. مش مسميين كل فولدر microservice عشان الرسمة تبقى مليانة أسهم. القيمة في إن مسؤولية كل جزء مفهومة.
الواجهة بتتغيّر. المعنى واحد.
اختار جزء من النظام عشان تشوف دوره والاتصالات بتاعته.
TypeScript API مسؤول عن تعريفات الكتالوج وانتقالات حالات الشغل. كل واجهة مش بتعيد تعريف قواعد التجارة لوحدها.
كل اتصالات النظام
- تعريفات القالب لوحة التاجر
- تعريفات القالب المتجر العام
- لوحة التاجر واجهة التجارة
- المتجر العام واجهة التجارة
- واجهة التجارة سجلات محفوظة
- واجهة التجارة الميديا والأصول
- واجهة التجارة المعالجة والمزوّدين
- CLI / MCP / Custom clients → واجهة التجارة
- المعالجة والمزوّدين → مزودو التجارة المضبوطون
اعرض مصدر الخريطة
Merchant dashboard → Commerce API ← Public storefront
Shared theme contracts → Dashboard + Storefront
Commerce API → MongoDB + Object storage + Workers
Workers → Configured providers
CLI / MCP / Custom clients → Commerce APIالـStack من غير حفلة أسماء
Next.js 15.5.27 وReact 18.3.1 للواجهات، TypeScript للعقود والمنطق، Express للـAPI، وMongoDB/Mongoose للبيانات. Tailwind وRadix لعناصر الواجهة، وdnd-kit للسحب والترتيب بالمؤشر واللمس والكيبورد.
LiquidJS لمسار القوالب المخصصة، Sharp لشغل الصور، وتخزين متوافق مع S3 للملفات. فيه SDK للـAI ومشروع MCP منفصل. Docker محليا عشان الداتا والخدمات يبقوا معروفين بدل «كانت شغالة عندي امبارح».
الاختبارات موزعة بين Jest وSupertest وMongoDB مؤقت وPlaywright وعقود Node. كل أداة ليها سؤال. الاختبار اللي بيفتح شاشة مش هو نفسه اللي بيحط ١٢ محاولة قدام خصم واحد.
المكتبة اللي موجودة في package.json مش وسام على صدر المشروع. لازم يبقى واضح بتعمل إيه، وإمتى بتشتغل، وإيه اللي لسه محتاج تقييم فعلي.
CHOSEN FOR THE WORK
كل أداة ليها دور.
من التفاعل على الشاشة لآخر عملية في الخلفية.
طبقة التجربة
تطبيقين ويب بيتعاملوا مع نفس تعريفات المنتج.
dnd-kit powers structured editing.
طبقة التجارة
خدمات للنطاق، حالات واضحة، وسجلات محفوظة.
Catalog · Orders · Payments · Inventory
الميديا وعرض القوالب
أصول محفوظة وطريقة مدعومة لعرض القوالب المخصصة.
S3-compatible storage · LiquidJS
التسليم والتحقق
بيئة محلية قابلة للتكرار واختبارات وأدوات نشر.
Supertest · Playwright · OpenNext support
تقنيات موثقة في المصدر. دعم النشر لا يعني اكتمال اعتماد كل بيئة.
03 / المحرر
اللي بتعاينه هو اللي بتنشره.
المعاينة اللي بتوعد بحاجة، والنشر اللي يطلع بحاجة تانية
دي لقطة توضيحية: التاجر عامل الصفحة في المحرر، المسافات مظبوطة والعنوان تمام. ينشر، يفتح الموبايل، يلاقي العناصر اتزحزحت. هو دلوقتي مش محتاج شرح عن CSS؛ هو محتاج الأداة تلتزم باللي ورّته له.
عشان كده، المعاينة في Varqio بتستخدم runtime المتجر نفسه. لوحة التاجر ماسكة المستند وأدوات التحرير، والـcanvas بيعرض المتجر الحقيقي في سياق preview. مش renderer تجريبي جوه المحرر وrenderer تاني في الإنتاج وكل واحد له مزاجه.
الأقسام والبلوكات ليهم registry مشترك. إعدادات التحكم، شكل المستند، وسلوك العرض لازم يمشوا على نفس التعريف. إضافة section جديدة مش معناها نحط اسمها في القائمة ونروح ننام.
«انا مش فاهم حاجة» — مقتطف من النص المعروض على ميم «صباحو كدب» في الدهليز.
تعليقنا على الموقف، مش اقتباس من الفيلم: «أنا نشرت نفس اللي كنت شايفه، إزاي الصفحة بقت قريبتها؟»
الإفيه هنا عن ارتباك التجربة. الحل الهندسي هو تقليل أسباب الاختلاف من الأصل: runtime واحد ومعنى واحد للمستند، وبعدها اختبار المعاينة والنشر فعلا.

الـAutosave: ما تمسحش الجديد وإنت بتحفظ القديم
تخيل التاجر كتب عنوان، طلب الحفظ اتبعت، وبعدها عدّل الوصف. رد العنوان رجع متأخر. لو أخدنا الرد وحطيناه مكان المستند الحالي، الوصف الجديد هيروح. النظام كده عمل Undo من غير ما حد يطلب.
التنفيذ الحالي بيقارن المستند الحالي باللي اتبعت. لو لسه مطابق، يقبل نتيجة الحفظ اللي ممكن تكون طبّعت بيانات. لو فيه تعديل أحدث، يحافظ عليه. الموضوع مش سرعة النت بس؛ ده ترتيب زمني لازم المنتج يفهمه.
الـhistory كمان مش ألبوم صور لكل حرف. الحركة الهيكلية، زي نقل section، فعل واضح. التعديلات الصغيرة المتقاربة ممكن تتجمع. ولما تختار عنصر تاني، ده اختيار، مش تعديل لازم يزاحم Undo.
تعليقنا الأصلي: زرار Save المفروض يقول «وصلت»، مش «رجعتك للي كنت كاتبه من شوية».
فيه فرق تاني مهم: المسودة مش النسخة المنشورة. التاجر يقدر يكمّل شغله من غير ما كل تعديل يظهر للعميل. والإصدارات بتخلي الرجوع لتصميم سابق مفهوم. استرجاع مسودة وتغيير النسخة الحية عمليتين مختلفتين، حتى لو الاتنين في كلامنا اليومي اسمهم «رجّع القديم».
اختبر الفكرة خطوة بخطوة.
الرد قديم. التعديل جديد.
- 01المسودة A بتتبعت
- 02التاجر بيعمل المسودة B
- 03A رجعت. B بتفضل.
المحرر بيبعت المستند الحالي للحفظ.
مثال TypeScript توضيحي لحماية التعديل الأحدث
// Illustrative model — not copied production code.
function acknowledgeSave<T>(
current: T,
submittedRevision: number,
currentRevision: number,
normalized: T,
): T {
// A late response must not erase a newer edit.
return currentRevision === submittedRevision
? normalized
: current;
}تخصيص المتجر من غير Copy-Paste ماراثون
ألوان وخطوط وأقسام وبلوكات وقوالب وميديا وتنقل. ده الجزء المتوقع. الجزء اللي بيظهر بعدين إن التاجر عنده نفس التركيب في كذا صفحة، وكل ما يعدّل حاجة لازم يلف عليهم.
المجموعات المتزامنة بتدي التكرار ده علاقة واضحة. عدّل الجزء المشترك، والتغيير يتعامل مع الارتباطات الموجودة. ولو صفحة حملة محتاجة تختلف، ينفع تفصل النسخة دي وتكمل عليها لوحدها.
ده مهم لأن إعادة الاستخدام مش معناها إن كل الصفحات تبقى توأم. صفحة منتج وصفحة حملة وصفحة محتوى ليهم أولويات مختلفة، حتى لو بيشاركوا جزء من الهوية.
الموبايل كمان مش screenshot مصغّرة من الديسكتوب. إعداداته ممكن ترث القيم الأساسية أو تعمل override للمسافات والعرض والظهور. نفس المستند، بس فاهم إنه بيتعرض في ظروف مختلفة.
تعليقنا الأصلي: «صغّرها وخلاص» تنفع مع صورة. مع واجهة فيها كلام وأزرار، الموضوع محتاج شغل تاني.
ONE STOREFRONT RUNTIME
04 / الكتالوج
أكتر من اسم وسعر.
المنتج مش اسمه وسعره وخلاص
تيشيرت بمقاسات مش زي ملف رقمي. واحد محتاج مخزون وتوصيل، والتاني محتاج طريقة تسليم. الاتنين ليهم عرض وسعر ووصف، لكن التنفيذ مختلف.
فيه متغيرات ومجموعات وتصنيفات وحقول مخصصة، وشغل استيراد وتصدير. الحقول اللي ليها أنواع واضحة بتخلي المعلومة قابلة للاستخدام بدل ما تبقى نص طويل محدش عارف يفسره غير اللي كتبه.
والطلب القديم لازم يحتفظ بمعناه. لو التاجر غيّر سعر المنتج بكرة، العميل اللي اشترى النهارده ماينفعش تلاقي تفاصيل طلبه اتغيرت مع الكتالوج. عشان كده فيه snapshots للشراء، منفصلة عن النسخة الحالية للمنتج.
تعليقنا الأصلي: المنتج ممكن يغيّر رأيه في السعر. الطلب القديم عنده ذاكرة.
شغل الـbulk كمان محتاج حالات. لو استيراد ملف وقف في النص، التاجر محتاج يعرف إيه حصل وإيه ناقص. مش كل عملية ينفع نقفل عليها شاشة loading ونسيبها تدعي.
نفس الكتالوج. مظهرين حقيقيين.

05 / المعاملة
كل عملية ليها حالتها.
الدفع رد مرتين. إحنا مش هنبيع نفس الطلب مرتين
المثال هنا توضيحي: مزود الدفع بعت نتيجة، النظام استقبلها، بس رد الاستلام ضاع في الطريق. المزود يعيد الإرسال. ده طبيعي في عالم الاتصالات؛ مش معناه إن العميل اشترى تاني.
التنفيذ عندنا فيه payment attempts وprovider events وحالات معالجة واسترجاع للشغل. الرسالة المتكررة المفروض توصل لنفس النتيجة التجارية، مش تفتح رحلة جديدة.
وفيه فرق بين نتيجة معروفة ونتيجة لسه مش مؤكدة. لما الاتصال يتقطع، ماينفعش نقرر من عندنا إن كل حاجة نجحت، وماينفعش نكرر أثر مالي لمجرد إننا مستعجلين نقفل الحالة. النظام محتاج يعبّر عن اللي يعرفه واللي لسه محتاج مراجعة.
دمج Kashier المسجل في تاريخ المشروع لمس الدفع والفواتير والأحداث والواجهة. التكامل عدى على كذا خدمة لأن العملية نفسها بتعدي على كذا معنى. مش إضافة صورة لوجو جنب وسيلة الدفع.
تعليقنا الأصلي: الرسالة قالت «أنا جيت تاني». النظام رد «فاكرك، شغلك متسجل».
الاختبار المحلي هنا له قيمته، بس مش بديل عن رحلة كاملة مع المزود. أي ادعاء عن نجاح فعلي عند طرف خارجي محتاج دليل منه، مش من شكل الشاشة عندنا.
١٢ checkout داخلين على خصم واحد
هنا عندنا مشكلة موثقة في اختبار محلي، مش مجرد موقف متخيّل. عرض استخدامه محدود كان ممكن يتخصص لأكتر من محاولة تحت التزامن، لأن قرار التخصيص اعتمد على قراءات منفصلة في الوقت.
تخيل شباك فيه تذكرة واحدة، وناس كتير سألت «لسه موجود؟» في نفس اللحظة. الإجابة وقت السؤال مش حجز. لازم لحظة التخصيص نفسها تحترم الحد.
التصحيح ربط المكان المرشح للحجز بالسعة الفعلية، وحافظ على التعامل مع التعارض وإعادة نفس النتيجة للمحاولة المتكررة وإعادة استخدام الحجز اللي اتحرر. وكمان منع إعادة استخدام مكان تاريخي خارج الحد الجديد لو السعة اتقللت.
«كابتن.. هو كله ضرب ضرب مفيش شتيمه» — النص المعروض على ميم «الناظر صلاح الدين» في الدهليز.
تعليقنا الأصلي على اختبار الضغط: «هو كله requests requests مفيش واحد يستنى؟»
المهم بعد الإفيه: ١٢ محاولة مختلفة قدام سعة واحدة، مع سيناريوهات إعادة المحاولة والتحرير وتغيير الحد. دي مواصفات قابلة للاختبار. جملة «الكوبون تمام» لوحدها مش هتشرح ولا تثبت ده.
«مدفوع» مش معناها «المندوب نازل حالا»
الطلب ممكن يكون مدفوع ولسه محتاج تجهيز. فيه قطعة محتاجة تخصيص من مخزن، وفيه خطوة توصيل مستنية. لو جمعنا كل ده في badge أخضر واحدة، هنخلّي التاجر يدور على الشغل اللي اختفى من الشاشة.
المخزون عنده معاني مختلفة: الموجود والمحجوز والمتاح والمخصص. التنفيذ فيه مواقع مخزون وحجوزات وتعديلات وخدمات للتوزيع والتجهيز. الهدف إن الرقم يجاوب على سؤال واضح.
التوصيل في مصر كمان له تفاصيله: المنطقة والخيارات المتاحة والدفع عند الاستلام ومتطلبات المزود. بنحافظ على منطق المنصة، وبنخلي الـconnector يترجم اللي محتاجه الطرف الخارجي.
تعليقنا الأصلي: الأوردر دفع، مبروك. الكرتونة لسه ماقفلتش نفسها.
القصة مش إننا زوّدنا حالات عشان النظام يبقى معقد. الحالات موجودة في الواقع؛ إحنا بنحاول نخلي الواجهة تقولها بشكل مفهوم.
03 / WORDS THAT CHANGE THE WORK
كل حالة ليها معنى.
- 01الموجود
- الوحدات الموجودة فعليًا في موقع.
- 02المحجوز
- مخزون مخصص لالتزام قائم.
- 03المتاح
- المخزون اللي لسه ممكن يتعرض للبيع.
- 04التنفيذ
- الشغل المتبقي للتجهيز والتسليم.

06 / التجربة
متصمم للي بيعمل الشغل.
المساعد الذكي لازم يبقى فاهم هو بيعدّل إيه
Varq AI مش مجرد صندوق شات مرمي جنب الصفحة. التنفيذ الحالي فيه سياق وأدوات واقتراحات منظمة وstreaming ومتابعة استخدام. في التصميم، التغيير المقترح بيروح لنفس المستند اللي التاجر بيشتغل عليه.
لو المساعد اقترح حاجة، والتاجر عدّل بعدها، الاقتراح بقى محتاج يتراجع على الحالة الجديدة. ماينفعش نقول «بس الـAI كان متحمس» ونرمي تعديل أحدث.
الرصيد كمان له دورة. فيه حجز وتسوية، وفيه نتيجة ممكن تبقى غير مؤكدة لو الطلب اتقطع. النجاح والفشل والتكلفة مش لازم يحصلوا في نفس اللحظة من منظور الواجهة.
«يا لهوي يا نهار ابيض» — النص المعروض على ميم «بنات في ورطة» في الدهليز.
تعليقنا الأصلي: لما اقتراح قديم يلاقي التاجر غيّر الصفحة كلها وهو لسه بيكتب المقدمة.
الحل مش سرعة الرد بس. الحل إن الاقتراح يبقى مرتبط بمستند وإصدار ومعنى واضح، وإن تطبيقه يكمّل رحلة المنتج. جودة الموديلات وزمنها وتكلفتها الفعلية محتاجين تقييم مزود حقيقي؛ مش هنطلّع نسبة توفير وقت من إحساسنا.
العربي محتاج مساحة، مش اعتذار
اسم منتج زي «كوباية سيراميك صناعة يدوية» مش هيتصرف زي كلمة Mug. والـSKU الإنجليزي جوه سطر عربي له اتجاه. والأسعار والحوارات والقوائم لازم يفضلوا مقروئين على الموبايل.
عشان كده، بنفكر في RTL والمحتوى المختلط وعرض النص وحالات الواجهة. الترجمة من غير تجربة فعلية ممكن تبقى سليمة لغويا ومُتعبة في الاستخدام.
لوحة التاجر فيها light وdark، وتصميم المتجر له هويته الخاصة، والمحرر له شكل Studio مستقل. الصور بتسجل اللي ظهر فعلا؛ مش هنلوّن screenshot ونقدّم اللون الجديد كأنه ميزة.
الصور هنا للديمو المحلي. منتجات Nile Atelier مجموعة خيالية، والمبالغ المعروضة أسعار ديمو. مفيش عميل حقيقي بنتباهى بمبيعاته، ومفيش شارت بنستخدمه كدليل نمو من غير قياس.
تعليقنا الأصلي: الديمو محتاج داتا تفهمك الشاشة. مش محتاج يدّعي إنه قفل التارجت.

تفاصيل محلية. مساحة مناسبة.
العربي والإنجليزي والأسعار بالجنيه جزء من تجربة المنتج. الشاشة الفعلية بتوضح الكتالوج في مساحة أصغر.
الكتالوج / موبايل · واجهة فعلية، بيانات عرض خيالية
07 / النسخة التجريبية
منتج حقيقي. وخطوة جاية واضحة.
الـGit بيحكي، وإحنا مش هنزوّد عليه مشاهد
التاريخ المتاح بيبدأ من baseline منظم في أغسطس، وبعده تجميع المنصة في monorepo، وبعده شغل Kashier في سبتمبر، وتصحيح تغليف OpenNext، وتحديثات الدومينات والعمال والتسعير.
الـbuilder الأحدث وresponsive groups وVarq AI موجودين في الـworking tree بعد آخر commit. يعني ينفع نحكي عنهم كتنفيذ حالي، بس ماينفعش نلصقهم بcommit أقدم عشان الجدول يبقى مرتب.
| المرحلة | اللي السجل بيثبته |
|---|---|
| أغسطس | تأسيس baseline وتشغيل محلي |
| ٨ سبتمبر | تجميع المنصة في monorepo |
| ١٠ سبتمبر | تكامل Kashier والدفع والفواتير |
| ١٥ سبتمبر | تصحيح tracing الخاص بـOpenNext |
| ١٦ سبتمبر | شغل الدومينات والعمال والمنطق التجاري |
| الشغل الأحدث | ميزات موجودة بعد آخر commit، ومتسجلة على الأساس ده |
مشكلة الـtracing مثال محترم على جملة «شغالة عندي» وهي مش كفاية. التطبيق ممكن يبني ملفات من الجذر الغلط لما يتجهز للنشر. التصحيح المسجل عدّل إعدادات جذور التطبيقات. شغل مش هياخد أحلى screenshot، بس من غيره الصورة مش هتوصل للمستخدم أصلا.
الاختبار الأخضر بيجاوب على سؤاله، مش كل أسئلة الحياة
الـbuild نجح؟ كويس، الكود اتبنى. اختبار متصفح نجح؟ كويس، الرحلة دي حصلت بالشروط دي. اختبار تزامن نجح؟ كويس، السيناريو ده احترم القواعد. ولا واحد فيهم يقول لوحده إن كل مزود وكل شاشة وكل حالة اتعتمدت.
عشان كده بنفصل الأدلة. اختبارات المنطق للدومين، MongoDB مؤقت للتعامل مع بيانات وتزامن حقيقيين في الاختبار، Playwright للتجربة، واختبارات مستقلة للمزود الخارجي.
ماجمعناش أرقام اختبارات قديمة وحطيناها كرقم جديد ضخم. ومااعتبرناش عدد الصفحات عدد ميزات خلصت. الصورة بتقول الشاشة اتعرضت؛ مش بتقول إن كل حالة تحميل أو خطأ أو بيانات طويلة اتراجعت.
تعليقنا الأصلي: الـtest قال «أنا تمام». ماقالش «اسألوني في أي حاجة».
آخر الحكاية لحد دلوقتي
اللي بنيناه هو منصة تجارة بتربط اللي التاجر بيعدّله باللي العميل بيشتريه وباللي التشغيل محتاج يعمله. واجهة ومحرر وكتالوج وطلبات ومخزون وتكاملات، وكل جزء له معنى وحدود.
أصعب الشغل ماكانش دايما أكتره ظهورا. رد حفظ قديم، نتيجة دفع متكررة، آخر استخدام لخصم، تصميم بيتعرض على موبايل، أو ملفات نشر اتجمعت من المكان الغلط. دي التفاصيل اللي بتفرق بين ديمو بيفتح ومنتج نقدر نكمل تأهيله بوضوح.
الخطوة الجاية استكمال قبول الرحلات والمزودين والأدلة المطلوبة للتجربة المحدودة. مش هنختصرها في جملة «كله جاهز» عشان الخاتمة تبقى حماسية.
لو عندك منتج شكله بسيط بس وراه شغل كتير، إحنا في Softworks بنحب نفهم الشغل ده ونبنيه صح. هات الرحلة اللي محتاجها تنجح؛ هنحوّلها لتصميم وبيانات وخدمات تفضل متفقة مع بعض.
أسئلة سريعة قبل ما القهوة تبرد
ده شرح تقني ولا بوست ميمز؟
شرح تقني. الميمز اختيارية، وكل فقرة لازم تفضل مفهومة لو شيلناها.
الجمل المكتوبة تحت الإفيهات من الأفلام؟
لأ. الاقتباس القصير له رابط مصدره. التعليق التقني مكتوب هنا ومتعلم بوضوح إنه تعليقنا، مش حوار سينمائي.
فيه صور للمراجع؟
الإشارات الثقافية منسوبة لمصادرها. صور الأفلام مش منشورة هنا؛ الرسومات التصوّرية الأصلية منفصلة عن شاشات المنتج الفعلية.
لو عايز أبعته لعميل رسمي؟
اختار النسخة المصرية المهنية أو النسخة الإنجليزية. نفس الوقائع والقرارات، بس درجة الهزار مختلفة.
08 / داخل المنتج
شوف التفاصيل بنفسك.
الكتالوج والمخزون، على الموبايل والديسكتوب. افتح الشاشات واستكشف التفاصيل.
أربع شاشات فعلية من بيئة محلية، ببيانات خيالية. افتح أي شاشة للتكبير.
4 شاشة
Webالكتالوج / فاتح
واجهة فعلية ببيانات Nile Atelier التجريبية. الأرقام ليست نتائج تجارية.
Webالكتالوج / داكن
واجهة فعلية ببيانات Nile Atelier التجريبية. الأرقام ليست نتائج تجارية.
Webالمخزون / داكن
واجهة فعلية ببيانات Nile Atelier التجريبية. الأرقام ليست نتائج تجارية.
موبايلالكتالوج / موبايل
واجهة فعلية ببيانات Nile Atelier التجريبية. الأرقام ليست نتائج تجارية.
