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



- الملكية
- Softworks بالكامل
- دورنا
- تصميم وهندسة المنتج
- المنتج
- مساحة تعلم على الويب
- الحالة
- نسخة تجريبية
الفكرة اللي ربطت المنتج
المعرفة مش مجرد ملفات محفوظة.
الملاحظة تشرح. السؤال يختبر. المرجع يدي سياق. والتقويم يحدد الخطوة الجاية. بنينا Knownly عشان العلاقات دي تفضل موجودة، من أول ما تفتح المادة لحد ما تقفل يومك.
مكان للمادة
خلي الخيوط متوصلة.
بداية الحكاية: المذاكرة محتاجة سياق تقدر ترجع له
ممكن يبقى عند الطالب كل اللي محتاجه للمادة، وبرضه يقضي وقت طويل قبل ما يبدأ. المحاضرة في ملف، والشرح في ملاحظة، والأسئلة في محادثة، والتسليم متسجل في مكان تاني. كل مرة بيرجع يذاكر، بيجمع الصورة من الأول.
Knownly بيحط الصورة دي في مساحة ثابتة. كل مادة أو هدف تعلّم ليه Space، وجوّاها الملاحظات والمصادر المرتبطة بيها. الملاحظة نفسها تقدر تجمع شرح، وسؤال للمراجعة، وكروت مذاكرة، وأدوات بصرية. المواعيد والمهام بتفضل متصلة بالمادة اللي تخصها.
إحنا في Softworks اشتغلنا على العلاقة بين الأجزاء دي. الطالب محتاج يقرأ فكرة، يجربها، يسأل عنها، وبعدها يعرف هيراجعها إمتى. عشان الرحلة دي تبقى مفهومة، لازم شكل البيانات وطريقة عرضها يتحركوا في نفس الاتجاه.
الدراسة دي مبنية على الكود اللي اتراجع، وتغييرات محددة في تاريخ التطوير، وتشغيل محلي موثّق. السيناريوهات اللي بنشرح بيها القرارات أمثلة توضيحية، مش حوادث عملاء بنحكي إنها حصلت. وأي ميزة موجودة في فرع تطوير منفصل هنقول ده بوضوح.
| جانب المشروع | التفاصيل |
|---|---|
| المنتج | مساحة تعلّم لتنظيم المادة والشغل عليها |
| الفريق | فريق هندسة البرمجيات في Softworks |
| الرحلة الأساسية | مادة ← ملاحظات ومصادر ← تدريب ومساعدة ← خطة مذاكرة |
| نطاق الشغل | تطبيق ويب، API، قاعدة بيانات، أدوات داخل المحرر، ومعالجة في الخلفية |
| التقنيات الأساسية | Next.js، React، TypeScript، Fastify، PostgreSQL، Drizzle، Redis، BullMQ |
| دليل المراجعة | كود، فروق commits، builds، اختبارات تكامل محلية، وصور من التطبيق |
تقدر تبدأ من نموذج المنتج، أو تدخل على المعمارية، أو تروح مباشرة لـحكايات التطوير الموثّقة.
المشكلة كانت في العلاقة بين المعلومات
خلّينا ناخد مثال من قواعد البيانات. الطالب عنده شرح عن normalization، ورسمة بتوضح الكيانات، وسؤال بيسأله اسم الكورس يتحط فين، وتسليم مطلوب الأسبوع الجاي. كل واحدة من الحاجات دي مفيدة، بس قيمتها بتبان أكتر لما تبقى مرتبطة بالباقي.
لو العلاقة دي عايشة في ذاكرة الطالب بس، اسم الملف بيتحوّل لأداة تنظيم، ومحادثة الذكاء الاصطناعي بتتحوّل لكشكول مؤقت، والمواعيد بتبقى أرقام منفصلة عن الشغل المطلوب. وقتها التطبيق مخزّن المعلومات، لكن المستخدم لسه مسؤول إنه يركّب معناها كل مرة.
عشان كده بنينا النموذج حوالين علاقات واضحة. الصفحة عارفة هي تبع أنهي Space. المصدر ليه مكان وحالة معالجة. المهمة مرتبطة بالمادة. والمحادثة تقدر تتحدد بسياق الصفحة المفتوحة بدل ما كل الأسئلة تتراكم في سجل عام واحد.
القرار ده كمان حط علينا مسؤولية في الواجهة. إضافة أداة جديدة لازم تفضل محافظة على سهولة القراءة والكتابة. وجود أدوات كتير مش سبب إن الملاحظة تبقى مزدحمة أو إن الطالب يحتار يبدأ منين.
نموذج المنتج: Space، Page، Material، ووقت للشغل
الـ Space هي الوحدة اللي بتلمّ الموضوع. ليها عنوان ووصف وهوية بصرية وترتيب وحقول مرتبطة بالتقدم. وفيه مساحة شخصية معمولة بنفس النموذج، عشان الملاحظات العامة ما تحتاجش نظام موازي بقواعد مختلفة.
الـ Page هي مكان الشغل الفعلي. الهوية، والترتيب، وعلاقة الصفحة بالصفحة الأم متخزنين بشكل relational. محتوى الملاحظة نفسه متخزّن في JSONB، عشان يقدر يشيل blocks مختلفة من غير ما شكل قاعدة البيانات يتغيّر مع كل أداة جديدة.
الـ Material بيمثل المرجع: نص، ملف، لينك، أو مجلد. المرجع ليه بياناته وحالة معالجته، وده مختلف عن الملاحظة اللي الطالب بيكتبها. مجرد وصول الملف للتخزين مش معناه إن النص اللي جواه بقى جاهز للاستخدام.
المهام والتقويم بيضيفوا عامل الوقت. المادة مش بس معلومات مطلوب نفهمها؛ أوقات بيبقى فيه تدريب أو تسليم لازم يتعمل. ربط الموعد بالمادة بيسهّل الانتقال من «أنا بذاكر إيه» لـ«إيه الخطوة الجاية».
مساحة دراسية من بيانات العرض التجريبي. شوفها بالوضع الداكن.
رحلة المذاكرة
من «كانت فين؟» لـ «فهمتها».
رحلة كاملة من القراءة لقرار المذاكرة
في العرض التجريبي، نور طالب خيالي عنده مواد مختلفة. بيفتح Database Systems، ويلاقي ملاحظات المادة والمطلوب منه قريب. يدخل على شرح العلاقات بين Student وCourse وEnrollment، وبعد القراءة يجاوب سؤال صغير موجود في نفس الملاحظة.
لو محتاج توضيح، يفتح المحادثة الجانبية من غير ما يسيب الصفحة. السياق هنا معروف: هو بيشتغل على ملاحظة معينة جوّه مادة معينة. وبعد ما يراجع الفكرة، يقدر يرجع للتقويم ويشوف جلسة المذاكرة أو المهمة المرتبطة بيها.
كل شاشة ليها وظيفة مختلفة في الرحلة. صفحة المادة بتدي نظرة عامة. المحرر بيساعد على التركيز. أسئلة المراجعة بتحوّل القراءة لتفاعل. المحادثة بتدي مساحة للاستفسار. والتقويم بيربط الشغل بالوقت المتاح.
الصور بتثبت إن الرحلة دي قابلة للعرض والمراجعة في التطبيق المحلي. ما بتثبتش إن درجات الطلبة اتحسنت أو إنهم وفّروا عدد ساعات معين. النوع ده من النتائج محتاج دراسة استخدام حقيقية، وقياس قبل وبعد، وتعريف واضح للنتيجة اللي بنقيسها.
جوه النظام
مسؤوليات واضحة. وشغل متصل.
منطق المنتج
كل خاصية متقسمة لمسارات وخدمات ومستودعات بيانات. محرك السياق يجهز المدخلات قبل ما يوصلها لمزود الذكاء الاصطناعي.
مخطط مفاهيمي: الواجهة ← API ← البيانات والطابور. العامل يتصل بالبيانات والتخزين ومزود الذكاء الاصطناعي حسب المهمة.
Next.js / React / TypeScript
Fastify / PostgreSQL / Drizzle
BullMQ / R2 / OpenRouter
المعمارية: حدود واضحة بين أجزاء التطبيق
Knownly متقسم لتطبيق Next.js للواجهة، وتطبيق Fastify للـ API. كل واحد ليه dependencies وlockfile وأوامر تشغيل منفصلة. طلبات المتصفح بتمرّ من طبقة API في تطبيق الويب لحد خدمات الـ backend.
جوا الـ backend، تنظيم الموديولات بيفصل routes عن services وعن repositories. الـ route بتتعامل مع الطلب، والـ service بتعبّر عن سلوك الميزة، والـ repository بتتعامل مع البيانات. الفصل ده بيساعدنا نعرف التغيير مكانه فين، ونراجع أثره على بقية الرحلة.
PostgreSQL شايلة البيانات اللي لازم تفضل موجودة. تخزين الملفات منفصل عن قاعدة البيانات. Redis مستخدمة في حالة مؤقتة وتنسيق الشغل، وBullMQ بتنظم مهام تقدر تكمل بعد انتهاء الطلب اللي بدأها.
الوصف الأدق هنا هو تطبيق متقسم لموديولات ومعاه workers. الكود اللي اتراجع ما يثبتش إن عندنا مجموعة microservices مستقلة في النشر والتشغيل. إحنا بنستخدم المصطلح اللي يشرح النظام الموجود، عشان القارئ يقدر يقيّم القرارات على أساس صحيح.
الـ Tech Stack، وكل اختيار بيعمل إيه
| التقنية | استخدامها | أثرها على بناء المنتج |
|---|---|---|
| Next.js 16 وReact 19 | الصفحات والتفاعل والتنقل | شكل عام مشترك، وشاشات متخصصة لكل مهمة |
| TypeScript | تعريف الأنواع والعقود | اكتشاف جزء من أخطاء الربط بدري |
| Fastify 5 | HTTP API وتركيب الموديولات | تنظيم واضح لطبقة استقبال الطلبات |
| PostgreSQL وDrizzle | البيانات والاستعلامات والمهاجرات | علاقات ثابتة مع مرونة في محتوى الملاحظة |
| Redis وBullMQ | التنسيق والمهام الخلفية | الشغل الطويل ما يبقاش مربوط بعمر طلب واحد |
| BlockNote | محرر الملاحظات والـ blocks | أدوات المذاكرة تعيش جوّه المستند |
| Excalidraw | الرسم والمساحات البصرية | شرح الفكرة بالنص والرسم |
| TanStack Query | تحميل بيانات الخادم وتحديثها | إدارة cache مرتبطة بطبيعة كل ميزة |
| Zustand | حالة الواجهة والألواح والمحرر | فصل التفاعل المؤقت عن سجلات البيانات |
| Tailwind وRadix | التنسيق وأساسيات التفاعل | لغة بصرية متناسقة بين الشاشات |
| KaTeX وPlotly | المعادلات والرسوم البيانية | تمثيل مناسب للمحتوى التقني |
| S3-compatible storage | تخزين الملفات | R2 في الإعداد العادي وMinIO في العرض المحلي |
القائمة بتوصف النسخة اللي راجعناها. وجود مكتبة في المشروع مش لوحده دليل على سرعة أو قابلية توسع معينة. وحتى نجاح الـ build ما بيلغيش أهمية مراجعة توافق dependencies؛ التثبيت المحلي أظهر peer warnings، واتسجلت ضمن حدود التحقق.
إيه اللي خصّصناه للمنتج
استخدمنا BlockNote كأساس، وبنينا فوقه schema خاصة بأدوات المذاكرة. الـ quiz ليه أسئلة واختيارات وإجابة وشرح. الـ flashcards ليها سؤال وإجابة بتظهر وقت المراجعة. لوحة Kanban ليها أعمدة وكروت. كل نوع محتوى بيتفسّر ويتعرض من خلال renderer مناسب له.
التخصيص شمل كمان التنقل بين المواد، وربط المحادثة بالسياق، وحالات الحفظ، وتوليد مسار تعلّم، ونسخ المساحات العامة، وتفضيلات الشكل. دي الأجزاء اللي بتحوّل مكتبات عامة لتجربة مناسبة لطبيعة المنتج.
وفي المقابل، جمعنا بعض الأدوات في مكان أنسب. الـ frontend الحالي بيعتبر مجموعة من أنواع الصفحات القديمة deprecated، وبيوجّه المستخدم إنه يضيف الأدوات جوّه الملاحظة. وجود اسم نوع قديم في constants مش معناه إنه لسه شاشة مستقلة مدعومة.
النتيجة التصميمية إن الملاحظة تقدر تستوعب أنشطة أكتر، مع تقليل عدد الأماكن اللي الطالب لازم يتنقل بينها. ده قرار في شكل المنتج، وله أثر مباشر على تخزين المحتوى وطريقة تحميله.
شوف مصدر المخطط
flowchart LR
A[Next.js workspace] --> B[API layer]
B --> C[Fastify modules]
C --> D[(PostgreSQL)]
C --> E[Object storage]
C --> F[AI adapters]
C --> G[(Redis / BullMQ)]
G --> H[Workers]
H --> D
H --> E
H --> Fملاحظة بتعمل أكتر
مساحة للتفكير. وعناية بكل تعديل.
مسودة جديدة
لسه فيه تعديل محتاج يتحفظ. مؤشر الحفظ ما يعلنش نجاح قبل التأكيد.
شرح مبسّط لمنطق مؤشر الحفظ؛ مش اختبار كتابة متزامنة أو ضمان حفظ بدون إنترنت.
تحدي المحرر: أدوات مختلفة في مستند واحد
سيناريو توضيحي: الطالب كتب شرح، وحط سؤال تحته، وبعدها محتاج رسمة. التلاتة لازم يفضلوا جزء من نفس الصفحة، رغم إن كل واحد فيهم ليه شكل بيانات وطريقة تفاعل مختلفة.
استخدام blocks بيدي كل جزء هوية وحدود. النص بيتعامل كنص. السؤال بيتعامل كسؤال. واللوحة البصرية ليها payload خاص بيها. الصفحة بتحتفظ بترتيب الأجزاء، وكل renderer مسؤول إنه يفهم البيانات اللي تخصه.
التحميل مهم برضه. مش كل مرة الطالب يقرأ فقرة لازم يتحمل معاه كل أدوات الرسوم والجداول. عشان كده فيه renderers متخصصة بتتحمل بشكل ديناميكي، ومعاها حالات تحميل. ده اختيار واضح في الكود، لكن ما حطّيناش رقم تحسن في حجم التحميل من غير benchmark.
وحالة المحتوى نفسها لازم تبقى مفهومة. لو التوليد لسه شغال، الصفحة تعرض حالة مناسبة. لو النتيجة فشلت، يبقى فيه سلوك مختلف عن المحتوى الجاهز. الفصل بين الحالات دي بيخلي الواجهة أصدق وأسهل في الفهم.
تحدي الحفظ: آخر تعديل هو اللي يحدد الحالة
سيناريو توضيحي: نور كتب جملة، وقف لحظة، وبعدها كمل. أول طلب حفظ لسه بيرجع، وفي نفس الوقت فيه محتوى أحدث. لو أول طلب خلّص وكتبنا «اتحفظ» من غير ما نبص على ترتيب التغييرات، الواجهة ممكن تدي انطباع غلط.
الـ autosave hook بيستنى ثانية بعد آخر تغيير متجدول، وبيحتفظ بأحدث محتوى لسه محتاج يتحفظ. كل جدولة ليها sequence. لما طلب يخلص، الكود بيتأكد إن النتيجة تخص الترتيب الحالي قبل ما يغيّر مؤشر الحفظ.
كمان فيه محاولة لحفظ المحتوى المعلّق وقت cleanup أو page hide. دي بتغطي مسارات انتقال عادية، لكن مش ضمان إن أي إغلاق مفاجئ للمتصفح هيوصل آخر بايت للخادم. ولا معناها إن المحرر بقى بيدعم شغل offline أو تحرير متزامن بين أكتر من شخص.
في التحقق المحلي، تعديل من المتصفح اتخزن واتقرا بعد reload. بعدها رجعنا نص العرض لحالته النظيفة عشان الصور تفضل مناسبة للنشر. بنفرّق هنا بين اللي اختبرناه فعلاً، وبين حالات محتاجة اختبار أوسع.
// Simplified explanation of the indicator guard.
// Not a production source extract or write-conflict control.
let latestSequence = 0;
async function saveDraft(content: NoteBody) {
const sequence = ++latestSequence;
showSaveState("pending");
try {
await persist(content);
if (sequence === latestSequence) showSaveState("saved");
} catch {
if (sequence === latestSequence) showSaveState("error");
}
}توضيح مبسّط. مش مقتطف كود إنتاج أو محرك لحل تعارض الكتابة.
السياق والشغل في الخلفية
السياق المناسب، في الوقت المناسب.
معالجة الرد وتخزين المحادثة جزء من رحلة المنتج.
المخطط بيشرح اختيار السياق. مفيش طلب AI حقيقي بيتبعت من هنا.
تحدي المصادر: وصول الملف غير جاهزية النص
الملف ممكن يبقى اتحفظ، لكن النص اللي جواه لسه ما اتستخرجش. لو اعتبرنا الحالتين واحدة، المستخدم مش هيفهم ليه شايف المصدر لكن المساعد مش قادر يستخدمه في السؤال.
Knownly بيفصل بيانات المصدر عن الملف وعن النص المستخرج. العامل اللي بيشتغل في الخلفية يقدر يحدّث الحالة مع تقدم المعالجة. المصدر يفضل موجود ومعروف مكانه، من غير ما نعلن إن محتواه جاهز قبل ما يبقى جاهز.
الفصل ده بيساعد في بناء سياق الذكاء الاصطناعي. الكود يقدر يختار مصادر مكتملة، ويحدد عددها، ويحدد كمية النص اللي ياخدها من كل مصدر. كده السؤال ما يتحولش تلقائيًا لإرسال كل ملفات المادة في كل مرة.
مصادر الصور هنا نصوص تجريبية متزرعة في قاعدة البيانات. ده بيوضح التنظيم والواجهة. مش دليل إننا اختبرنا كل نوع ملف، أو دقة OCR، أو استخراج المحتوى من كل مصدر خارجي.
تحدي الذكاء الاصطناعي: «اشرح دي» لازم يبقى ليها مرجع
سؤال الطالب بيتغيّر مع مكانه. وهو جوّه ملاحظة، «اشرح دي» غالبًا راجعة للفكرة المفتوحة. وهو جوّه التقويم، السؤال ممكن يبقى عن ترتيب المذاكرة حسب التسليمات. التعامل مع الاتنين بنفس السياق يضيّع معلومات مفيدة.
Knownly بيبني سياق حسب نوع المحادثة. فيه سياق للملاحظة، وللمادة، وللتقويم، وللتفاعل العام. النص اللي جاي من annotations على رسومات ممكن يدخل في السياق لما يكون موجود بشكل قابل للقراءة.
الكود بيحط حدود لعدد المصادر وأطوال النصوص. الهدف إن المدخلات تبقى مقصودة ومناسبة للمهمة. السياق الأكبر مش بالضرورة السياق الأنسب، وتحديد الميزانية بيخلّي قرارات الاختيار واضحة وقابلة للمراجعة.
الرد بيتعرض تدريجيًا، وسجل المحادثة ليه مسار تخزين. في العرض المحلي، نفس رحلة الواجهة والـ API بتشتغل، لكن الرد جاي من stub مكتوب مسبقًا ومعلن إنه تجريبي. ده يسمح نراجع العرض والبث والحفظ من غير ما ندّعي جودة موديل حي.
الرد الظاهر scripted. شوف نفس التكوين بالوضع الداكن.
تحدي المهام الخلفية: النتايج مش لازم توصل كلها مع بعض
سيناريو توضيحي: مسار تعلّم فيه كذا صفحة. صفحة خلصت، وصفحة رجعت بمحتوى فاضي، وصفحة محتاجة إعادة محاولة. لازم تنظيم المسار يفضل مفهوم، وكل صفحة يبقى ليها وضع نقدر نشرحه.
فيه workflows بتنشئ ترتيب الصفحات، وبعدها بتستخدم jobs لتوليد المحتوى. عدد المهام اللي العامل بيشغلها في نفس الوقت محدود. سياسة إعادة المحاولة واضحة. وبعد آخر فشل، الصفحة تقدر تحتفظ بحالة فشل مع إمكانية المحاولة من الواجهة.
وفيه helper تاني للتوليد بيستخدم settled results، فيحتفظ بالصفحات الناجحة ويعمل fallback للصفحات اللي ما نجحتش. وجود الآليتين محتاج وصف دقيق؛ ما ينفعش نقول إن كل مسار توليد في المشروع شغال بنفس الخطوات بالضبط.
الدرس إن الفشل الجزئي محتاج مكان في نموذج المنتج. الـ spinner لوحده ما بيشرحش اللي حصل. حالة مفهومة مع خطوة تالية بتخلي المستخدم يعرف يكمل إزاي. ده تصميم لسلوك المنتج قبل ما يكون اختيار مكتبة queues.
تصميم يساعدك تركز
نسيب المساحة للمادة نفسها.

شكل الواجهة يخدم نوع الشغل
الشريط الجانبي بيخلّي المواد قريبة، والصفحة الحالية واخدة المساحة الأساسية. أدوات الإضافة موجودة قريب من مكان الكتابة، والمحادثة تقدر تظهر جنب النص اللي بتناقشه. كده كل أداة بتدخل وقت الحاجة ليها.
التقويم ليه كثافة مختلفة عن الملاحظة. في التقويم محتاج تشوف أيام ومواد والتزامات في نفس اللحظة. في المحرر محتاج مساحة تقرأ فيها وتكتب. استخدام نفس التكوين لكل شاشة كان هيخلي واحدة منهم أقل ملاءمة لمهمتها.
المنتج فيه خمس اختيارات للشكل: light وdark وSolarized وNord وDracula. الصور الحالية بتوثّق شاشات مختارة في light وdark. وجود الاختيارات التانية ما يساويش إن كل مكوّن اتراجع بصريًا في كل وضع.
التقويم متعبّي ببيانات العرض. نسخة الوضع الداكن.
الأدلة والخطوة الجاية
أساس تقدر تراجعه بنفسك.
الدليل يخص المصدر وتجربة محلية. مفيش ادعاءات نمو أو نتائج تعليمية غير مقاسة.
إزاي خلّينا الشغل قابل للمراجعة
جهّزنا تشغيل محلي بخدمات PostgreSQL وRedis وتخزين متوافق مع S3. البيانات التجريبية فيها ٨ مواد، و٤٨ ملاحظة، و٤٠ مصدر، و٢٤ مهمة، و٢٤ حدث في التقويم، بالإضافة للمساحة الشخصية اللي التطبيق بيعملها.
الأرقام دي بتوصف حجم بيانات العرض. مش عدد مستخدمين، ومش دليل على انتشار أو تأثير تعليمي. فائدتها إنها تخلي التنقل والقوائم والتقويم وأدوات المذاكرة يبانوا في حالات فيها محتوى كفاية للمراجعة.
التحقق شمل build للـ backend، وlint وproduction build للواجهة، وتطبيق migrations، واختبار رحلة API، ومراجعة من المتصفح. الرد التجريبي عدى من نفس مسار التطبيق واتخزن في قاعدة البيانات. وتعديل عادي في المحرر ظهر بعد إعادة التحميل.
لسه فيه حدود واضحة: ما عملناش benchmark تحميل إنتاجي، ولا تقييم جودة موديل حي، ولا اختبار كل تكامل خارجي، ولا مراجعة شاملة لكل الأجهزة. وصف حدود الدليل بيخلّي القارئ يعرف بالضبط النتيجة دي تثبت إيه.
النتيجة اللي نقدر نتكلم عنها بثقة
Knownly بيجمع أنشطة التعلّم في نموذج واحد مترابط. المادة ليها مساحة. الملاحظة فيها شرح وتدريب. المصدر ليه هوية وحالة. المحادثة تقدر تفهم السياق الحالي. والمهمة ليها علاقة بالمادة وميعادها.
الشغل الهندسي بيبان في الوصلات بين الأجزاء دي: محتوى غني بيتحفظ، وشغل خلفي ليه دورة حياة، ونسخة من مساحة بتحافظ على علاقاتها، ومؤشر حفظ بيتابع آخر تغيير. وتاريخ الفروع بيورّي تفاصيل إضافية في البحث والاقتراحات والتحرير.
ما ضفناش أرقام مبيعات، أو شهادات عملاء، أو وعود بتحسين درجات الطلبة. مفيش دليل متاح عليها. النتيجة الموثّقة هنا هي شريحة منتج شغالة محليًا، وحكاية هندسية تقدر ترجع للكود عشان تراجعها.
مبادئ هنكمّل بيها في أي منتج مشابه
نمذج العلاقات اللي المستخدم بيضطر يفتكرها. لما المادة والمصدر والسؤال والميعاد يبقوا مرتبطين، المزايا الجديدة تقدر تعتمد على أساس واضح.
خلّي الشغل الخلفي ليه معنى في الواجهة. الـ queue وسيلة تنفيذ، لكن المستخدم محتاج يعرف إيه مستني، وإيه خلص، وإيه محتاج محاولة تانية.
تعامل مع مساعدة المحرر كتفاعل مستمر. التحديد، والكتابة، وقبول الاقتراح، وإلغاء الطلبات القديمة حالات مختلفة، حتى لو كلها بتحصل في نفس المكان.
افصل مرونة المحتوى عن ثبات الهيكل. الـ blocks تقدر تتنوع، بينما هوية الصفحة وترتيبها وعلاقاتها تفضل واضحة.
خلّي كل ادعاء مناسب لدليله. لقطة شاشة بتثبت شكل حالة. Commit بيثبت تغيير. نتيجة إنتاجية محتاجة قياس إنتاجي. كل نوع دليل له سؤال بيجاوب عليه.
أسئلة مهمة قبل تقييم المشروع
هل Knownly نظام LMS كامل؟
النسخة اللي اتراجعت مساحة تعلّم. فيه أجزاء مهيأة لتكاملات LMS، لكن Canvas sync لسه scaffold. أسماء providers في schema ما تعتبرش دليل إن كل التكاملات شغالة.
هل البحث الدلالي والـ autocomplete موجودين في الصور؟
لأ. الصور من main، والبحث فيه مطابقات للعناوين. حكايات hybrid retrieval والـ autocomplete والـ backlinks متوثقة كعمل على فروع تطوير منفصلة.
هل أسئلة المراجعة والردود طالعة من AI حي؟
الأسئلة والكروت بيانات مكتوبة للعرض. المحادثة فيها رد scripted ومكتوب عليها ده. التطبيق الحقيقي هو اللي بيعرض المحتوى ويمرره في مساراته، لكن جودة التوليد مش موضوع الاختبار ده.
هل النسخة المصرية معناها إن التطبيق عربي؟
دي نسخة مصرية من دراسة الحالة. ما بنستنتجش منها دعم عربي أو RTL كامل داخل التطبيق نفسه. الواجهة اللي اتصورت بالإنجليزي.
إيه المطلوب عشان نقول إن المنتج حسّن التعلّم؟
دراسة استخدام مناسبة، ومقياس واضح، ومقارنة مرجعية، ونتائج فعلية. جودة التنفيذ مهمة، لكن النتيجة التعليمية لازم تتقاس بطريقتها.
لو منتجك فيه أجزاء محتاجة تشتغل مع بعض
Knownly بيعبّر عن طريقتنا في Softworks: نفهم طبيعة الشغل، نبني علاقاته صح، ونخلي سلوكه واضح وقابل للمراجعة. ده الأساس اللي بنبني عليه تجربة يقدر المستخدم يكمل فيها شغله.
الخطوة الأساسية: احكي لفريق Softworks عن المنتج اللي بتبنيه.
للقراءة التقنية: راجع خريطة الأدلة والصور المصاحبة.
خريطة الأدلة · مكتبة الصور · النسخة الإنجليزية · النسخة المصرية بخفة دم
13 لقطة / من التطبيق الفعلي
مساحة تتشاف. وتتراجع.
ست أزواج فاتح وغامق، ولقطة تابلت غامقة. افتح كل صورة بالحجم الكامل وشوف تفاصيل المنتج.
بيانات خيالية ورد AI مكتوب للديمو. ترجمة المقال مش معناها إن التطبيق نفسه عربي.
13 شاشة
Webمساحة قواعد البيانات وفيها الملاحظات والتكليفات
مساحة قواعد البيانات وفيها الملاحظات والتكليفات. لقطة فعلية ببيانات مذاكرة تجريبية.
Webمساحة قواعد البيانات وفيها الملاحظات والتكليفات
مساحة قواعد البيانات وفيها الملاحظات والتكليفات. لقطة فعلية ببيانات مذاكرة تجريبية.
Webملاحظة مذاكرة منظمة وفيها سؤال تدريبي
ملاحظة مذاكرة منظمة وفيها سؤال تدريبي. لقطة فعلية ببيانات مذاكرة تجريبية.
Webملاحظة مذاكرة منظمة وفيها سؤال تدريبي
ملاحظة مذاكرة منظمة وفيها سؤال تدريبي. لقطة فعلية ببيانات مذاكرة تجريبية.
Webالملاحظة جنب رد AI تجريبي ومكتوب بوضوح إنه مش رد حي
الملاحظة جنب رد AI تجريبي ومكتوب بوضوح إنه مش رد حي. لقطة فعلية ببيانات مذاكرة تجريبية. رد الذكاء الاصطناعي مكتوب للديمو، مش ناتج نموذج حي.
Webالملاحظة جنب رد AI تجريبي ومكتوب بوضوح إنه مش رد حي
الملاحظة جنب رد AI تجريبي ومكتوب بوضوح إنه مش رد حي. لقطة فعلية ببيانات مذاكرة تجريبية. رد الذكاء الاصطناعي مكتوب للديمو، مش ناتج نموذج حي.



