Skip to content
Mozn Jamousمزن جاموسEnd-to-End Product Builderصناعة منتجات من الفكرة إلى الإطلاق
Back to workعودة إلى الأعمال

UI/UX · Mobile · 3-app marketplaceUI/UX · جوال · سوقٌ بثلاثة تطبيقاتBuilt — 2024مبنيّ — 2024

CareConnect — one backend, three audiences.CareConnect — خادمٌ واحد، ثلاثة جماهير.

A childcare marketplace designed and built as three native Flutter apps — each shaped around a different user's mental model — on a single Supabase backend. The information architecture came before the first Figma frame.سوقٌ لرعاية الأطفال صُمّم وبُني كثلاثة تطبيقات Flutter أصلية — كلٌّ مُشكَّل حول النموذج الذهني لمستخدمٍ مختلف — على خادم Supabase واحد. جاءت هندسة المعلومات قبل أول إطارٍ في Figma.

Yearالسنة
2024
Roleالدور
UI/UX Designer + Developerمصمّمة UI/UX + مطوّرة
Stackالتقنيات
FigmaFlutterDartSupabasePostgreSQLRLSRESTRBACIEEE 830
3 apps3 تطبيقات
One per audience — no role-switching compromisesواحدٌ لكل جمهور — دون تنازلات تبديل الأدوار
1 backendخادمٌ واحد
Supabase RLS enforces access at the database layerيفرض Supabase RLS الوصول في طبقة قاعدة البيانات
Spec-firstالمواصفة أولاً
IEEE 830 requirements written before any wireframeمتطلبات IEEE 830 كُتبت قبل أي مخطّطٍ هيكلي
Auditableقابل للتدقيق
Every admin action logged; access provable in SQLكل إجراء مشرفٍ مُسجَّل؛ والوصول قابل للإثبات بـSQL

§ Overviewنظرة عامة

What it is, and what I owned.ما هو، وما الذي تولّيته.

CareConnect is a childcare marketplace with three sides — mothers booking care, babysitters offering it, and admins moderating the platform. I designed and built all three as separate Flutter apps over one shared backend.CareConnect سوقٌ لرعاية الأطفال بثلاثة أطراف — أمّهاتٌ يحجزن الرعاية، وجليساتٌ يعرضنها، ومشرفون يديرون المنصّة. صمّمتُ وبنيتُ الثلاثة جميعاً كتطبيقات Flutter منفصلة على خادمٍ مشترك واحد.

Roleالدور
Designer + developer (solo)مصمّمة + مطوّرة (منفردة)
Timelineالإطار الزمني
2024
Platformالمنصّة
3× Flutter · iOS + Android
Audiencesالجماهير
Mother · Babysitter · Adminأمّ · جليسة · مشرف
Backendالخادم
Supabase · Postgres · RLS
Scopeالنطاق
SRS → Figma → Flutterوثيقة متطلبات ← Figma ← Flutter

§ Problemالمشكلة

A marketplace lives or dies on trust between three sides.السوق يحيا أو يموت على الثقة بين أطرافه الثلاثة.

You can't solve childcare with a single app. Mothers need quick, vetted matches. Babysitters need a schedule and reliable payment visibility. Admins need control — who is verified, who is flagged, and how to intervene without breaking the platform.لا يمكن حلّ رعاية الأطفال بتطبيقٍ واحد. الأمّهات يحتجن تطابقاً سريعاً ومُدقَّقاً. والجليسات يحتجن جدولاً ووضوحاً موثوقاً في الدفع. والمشرفون يحتاجون تحكّماً — مَن مُوثَّق، ومَن مُبلَّغ عنه، وكيف يتدخّلون دون كسر المنصّة.

Each side trusts the platform only if the other two are held to rules they can't see but can feel. That trust is an information-architecture and access-control problem long before it's a UI one.كلّ طرفٍ يأتمن المنصّة فقط إن كان الطرفان الآخران مُلزَمَين بقواعد لا يرونها لكن يشعرون بها. وتلك الثقة مشكلة هندسة معلوماتٍ وتحكّمٍ بالوصول قبل أن تكون مشكلة واجهة بزمنٍ طويل.

§ Researchالبحث

One spec, three mental models.مواصفةٌ واحدة، ثلاثة نماذج ذهنية.

I started with an IEEE 830 software requirements spec — every entity, every relation, every user flow — before any screen was designed. Writing it forced the core insight: a mother is shopping, a babysitter is selling time, and an admin is moderating. Three fundamentally different tasks that produce three fundamentally different information architectures.بدأتُ بوثيقة متطلبات برمجية IEEE 830 — كلّ كيان، وكلّ علاقة، وكلّ تدفّق مستخدم — قبل تصميم أي شاشة. فرضت كتابتها الاستنتاج الجوهري: الأمّ تتسوّق، والجليسة تبيع وقتاً، والمشرف يُدير. ثلاث مهامّ مختلفة جوهرياً تُنتج ثلاث هندسات معلوماتٍ مختلفة جوهرياً.

§ Users & personasالمستخدمون والـ Personas

Three audiences, three personas.ثلاثة جماهير، ثلاثة personas.

The user types I defined in the IEEE 830 spec became three personas — each with a different primary task, a one-line story, and the frustration that shaped its app.فئات المستخدمين التي عرّفتها في وثيقة IEEE 830 صارت ثلاثة personas — لكلٍّ مهمةٌ أساسية مختلفة، وقصةٌ من سطر، والإحباط الذي شكّل تطبيقها.

Huda — working motherهُدى — أمٌّ عاملة

Mother app · books careتطبيق الأمّ · تحجز الرعاية

I want to find a babysitter I can actually trust, quickly — not gamble on a stranger with my child.أريد أن أجد جليسةً أثق بها فعلاً، وبسرعة — لا أن أقامر بغريبةٍ مع طفلي.

Goalsالأهداف

Vetted matches near her, fast booking, and a clear sense of who's verified.تطابقاتٌ مُدقَّقة قريبةٌ منها، وحجزٌ سريع، وإحساسٌ واضح بمن هو موثَّق.

Frustrationsالإحباطات

Not knowing who to trust; platforms where anyone can list themselves with no checks.عدم معرفة بمن تثق؛ ومنصّاتٌ يُدرج فيها أيٌّ كان نفسه دون تدقيق.

Sara — babysitterسارة — جليسة أطفال

Babysitter app · offers careتطبيق الجليسة · تعرض الرعاية

I want a steady schedule and to know exactly what each booking expects of me before I accept.أريد جدولاً ثابتاً وأن أعرف بالضبط ما يتوقّعه كلّ حجزٍ منّي قبل أن أقبله.

Goalsالأهداف

Reliable bookings, a clear schedule, and the right context for each child.حجوزاتٌ موثوقة، وجدولٌ واضح، والسياق الصحيح لكل طفل.

Frustrationsالإحباطات

No-shows, unclear expectations, and seeing personal data she shouldn't.عدم الحضور، وتوقّعاتٌ غامضة، ورؤية بياناتٍ شخصية لا ينبغي أن تراها.

Maya — platform moderatorمايا — مشرفة المنصّة

Admin app · moderatesتطبيق المشرف · يُدير

I want to verify, flag, and intervene without breaking the platform — and to prove every action I took.أريد أن أوثّق وأُبلّغ وأتدخّل دون كسر المنصّة — وأن أُثبت كلّ إجراءٍ اتخذته.

Goalsالأهداف

Control over who's verified or flagged, with a clean audit trail.تحكّمٌ بمن هو موثَّق أو مُبلَّغ عنه، مع سجلّ تدقيقٍ نظيف.

Frustrationsالإحباطات

Abuse slipping through; not being able to see why a decision was made.تجاوزاتٌ تتسلّل؛ وعدم القدرة على رؤية سبب اتخاذ قرارٍ ما.

§ Design strategyاستراتيجية التصميم

Decide the structure before drawing a single screen.احسم البنية قبل رسم شاشةٍ واحدة.

The strategic bet was that a marketplace's hardest problem is keeping three audiences and one backend coherent — so the schema and permission model had to lead, and the UI follow.كان الرهان الاستراتيجي أن أصعب مشكلة في سوقٍ هي إبقاء ثلاثة جماهير وخادمٍ واحد متماسكين — فكان على المخطّط ونموذج الصلاحيات أن يقودا، والواجهة أن تتبع.

Goalالهدف
Trust across all three sides of the marketplaceالثقة عبر أطراف السوق الثلاثة
Hypothesisالفرضية
Three focused apps beat one role-switching appثلاثة تطبيقات مركّزة تتفوّق على تطبيقٍ واحد بتبديل الأدوار
Priorityالأولوية
Data model & access rules before UIنموذج البيانات وقواعد الوصول قبل الواجهة
Tradeoffالمفاضلة
Higher build cost for honest, focused surfacesكلفة بناءٍ أعلى مقابل واجهاتٍ أمينة ومركّزة

§ Design processعملية التصميم

Three audiences. Three mental models. Three apps.ثلاثة جماهير. ثلاثة نماذج ذهنية. ثلاثة تطبيقات.

The decision to build three separate apps instead of one with role-switching is a design decision before it's an engineering one. I designed each app in its own Figma file, with its own navigation and vocabulary.قرار بناء ثلاثة تطبيقات منفصلة بدل واحدٍ بتبديل الأدوار قرارٌ تصميمي قبل أن يكون هندسياً. صمّمتُ كلّ تطبيقٍ في ملف Figma خاصٍّ به، بتنقّله ومفرداته.

01

Three dedicated apps over one role-switching app.ثلاثة تطبيقات مخصّصة بدل تطبيقٍ واحد بتبديل الأدوار.

Challengeالتحدّي

A single app with role-switching is cheaper to build and maintain. Many marketplaces ship this way — one codebase, one store listing, one onboarding flow.تطبيقٌ واحد بتبديل الأدوار أرخص في البناء والصيانة. كثيرٌ من الأسواق تُطلق هكذا — قاعدة كودٍ واحدة، إدراج واحد في المتجر، تدفّق تهيئةٍ واحد.

Decisionالقرار

Three apps. Each audience has a different primary action, a different vocabulary, and different expectations. No “you are logged in as: Mother” cognitive load.ثلاثة تطبيقات. لكلّ جمهور فعلٌ أساسي مختلف، ومفرداتٌ مختلفة، وتوقّعاتٌ مختلفة. دون عبءٍ ذهني من نوع «أنتِ مسجَّلة الدخول كـ: أمّ».

Outcomeالنتيجة

Each app has a focused navigation structure and a store listing that describes exactly what it does for that user. Higher initial cost, but each surface stays honest to its audience.لكلّ تطبيقٍ بنية تنقّلٍ مركّزة وإدراجٌ في المتجر يصف بالضبط ما يفعله لذلك المستخدم. كلفةٌ أولية أعلى، لكن كلّ واجهة تبقى أمينةً لجمهورها.

01 / 04

A friendly face to startوجهٌ ودود للبداية

The mascot and a calm sky-blue palette set the tone — reassuring, not clinical — and the whole app works in both Arabic and English.الشخصية ولوحةٌ زرقاء هادئة تضبط النبرة — مُطمئنة لا سريرية — والتطبيق كلّه يعمل بالعربية والإنجليزية.

§ Technical architectureالبنية التقنية

One Postgres. Three clients. Zero shared-state hacks.قاعدة Postgres واحدة. ثلاثة عملاء. صفر حِيَل للحالة المشتركة.

Every read and write goes through Supabase RLS. A mother can only see active babysitters within her search radius. A babysitter can only see and modify her own profile and bookings. An admin sees everything — but every admin action is logged. The role enforcement lives in the database, not the client.كلّ قراءةٍ وكتابة تمرّ عبر Supabase RLS. الأمّ ترى فقط الجليسات النشطات ضمن نطاق بحثها. والجليسة ترى وتُعدّل فقط ملفّها وحجوزاتها. والمشرف يرى كل شيء — لكن كلّ إجراء مشرفٍ مُسجَّل. فرضُ الأدوار يعيش في قاعدة البيانات، لا في العميل.

Architectureالبنية · CareConnect — three apps, one backendCareConnect — ثلاثة تطبيقات، خلفية واحدة

SVG

MOTHER APPFlutter AppDiscover · Book · PayBABYSITTER APPFlutter AppProfile · ScheduleADMIN APPFlutter AppModerate · AuditSHARED BACKEND · POSTGRES + RLSSupabaserow-level security · role-based access · single source of truthpolicy: mother → only active babysitters in radius
Single Postgres + Supabase RLS enforces role boundaries. Apps cannot drift.قاعدة Postgres واحدة + سياسات RLS في Supabase تفرض حدود الأدوار، فلا تنحرف التطبيقات.
Mother appتطبيق الأمّ
Discover · Book · Payاكتشاف · حجز · دفع
Babysitter appتطبيق الجليسة
Profile · Scheduleملف · جدول
Admin appتطبيق المشرف
Moderate · Auditإدارة · تدقيق
Authالمصادقة
Supabase Auth
Realtimeالزمن الحقيقي
Postgres CDC
Policiesالسياسات
RLS · RBAC
ADR-001

Supabase + RLS over Firebase + client-side guards.Supabase + RLS بدل Firebase وحُرّاسٍ من جهة العميل.

Contextالسياق

Firebase is the default for student marketplaces. Auth + Firestore is fast to wire. But security rules in Firestore are a JSON DSL that's easy to get subtly wrong — and the client can be modified.Firebase هو الخيار الافتراضي لأسواق الطلاب. المصادقة + Firestore سريعة الربط. لكن قواعد الأمان في Firestore لغة JSON يسهل الخطأ فيها بدقّة — والعميل قابل للتعديل.

Decisionالقرار

Postgres + Supabase RLS. RLS policies are real SQL, run on every query, and impossible to bypass from the client. A mother's query physically cannot return another mother's bookings.Postgres + Supabase RLS. سياسات RLS هي SQL حقيقية، تُنفَّذ مع كل استعلام، ويستحيل تجاوزها من العميل. استعلام أمٍّ لا يمكنه فيزيائياً إعادة حجوزات أمٍّ أخرى.

Consequencesالنتائج

The security model is auditable and reviewable. It's also what made the three-app design viable — each client just asks the database for what it can see; the database is the access layer.نموذج الأمان قابلٌ للتدقيق والمراجعة. وهو أيضاً ما جعل تصميم التطبيقات الثلاثة ممكناً — كلّ عميلٍ يسأل قاعدة البيانات عمّا يستطيع رؤيته فقط؛ قاعدة البيانات هي طبقة الوصول.

§ Challengesالتحدّيات

Keeping three apps and one backend from drifting apart.إبقاء ثلاثة تطبيقات وخادمٍ واحد من التباعد.

Three apps are tempting to think of as three projects. In practice the apps are the easy part; the hard part is keeping a schema and permission model consistent across three distinct experiences without forking into three copies of the same code.من المُغري التفكير في ثلاثة تطبيقات كثلاثة مشاريع. عملياً، التطبيقات هي الجزء السهل؛ والصعب هو إبقاء المخطّط ونموذج الصلاحيات متّسقَين عبر ثلاث تجارب متمايزة دون التشعّب إلى ثلاث نسخٍ من الكود نفسه.

ADR-002

IEEE 830 SRS before a single screen was designed.وثيقة متطلبات IEEE 830 قبل تصميم شاشةٍ واحدة.

Contextالسياق

Most projects skip the SRS and discover the spec through implementation. Faster start, painful middle.معظم المشاريع تتخطّى وثيقة المتطلبات وتكتشف المواصفة عبر التنفيذ. بدايةٌ أسرع، ووسطٌ مؤلم.

Decisionالقرار

A full IEEE 830 SRS first — every entity, relation, and user flow. Then Figma. Then Flutter.وثيقة متطلبات IEEE 830 كاملة أولاً — كلّ كيان وعلاقة وتدفّق مستخدم. ثم Figma. ثم Flutter.

Consequencesالنتائج

When a payments change landed mid-development, the spec told me exactly which six screens across two apps needed to update. Refactoring became a search, not an excavation.حين طرأ تغييرٌ في الدفع منتصف التطوير، أخبرتني المواصفة بالضبط أيّ ستّ شاشاتٍ عبر تطبيقين تحتاج تحديثاً. صارت إعادة الهيكلة بحثاً، لا تنقيباً.

§ Outcomesالنتائج

Three honest surfaces on one provable backend.ثلاث واجهاتٍ أمينة على خادمٍ واحد قابل للإثبات.

CareConnect shipped as three focused apps on a single Supabase backend, with access control enforced in the database rather than trusted to the client — so each side's data boundaries are provable in SQL, and every admin action is auditable.أُطلق CareConnect كثلاثة تطبيقات مركّزة على خادم Supabase واحد، بتحكّمٍ بالوصول مفروضٍ في قاعدة البيانات بدل ائتمان العميل عليه — فحدود بيانات كل طرفٍ قابلة للإثبات بـSQL، وكلّ إجراء مشرفٍ قابل للتدقيق.

The three-app decision wasn't an engineering call; it was a UX call that engineering had to honour. The spec-first habit isn't academic — it's the cheapest insurance against drift between three apps and one backend.قرار التطبيقات الثلاثة لم يكن قراراً هندسياً؛ بل قرار تجربةٍ كان على الهندسة احترامه. وعادة المواصفة-أولاً ليست أكاديمية — بل هي أرخص تأمينٍ ضدّ التباعد بين ثلاثة تطبيقات وخادمٍ واحد.

§ Validationالتحقّق

How I'd test three apps at once.كيف سأختبر ثلاثة تطبيقات معاً.

Because trust runs across all three sides, I'd run a usability study per app around its primary task — a mother finding and booking vetted care, a babysitter accepting a booking, a moderator verifying and flagging — then cluster the findings in an affinity diagram and prioritize the fixes that unblock the marketplace loop first.لأن الثقة تسري عبر الأطراف الثلاثة، سأُجري دراسة قابلية استخدامٍ لكل تطبيقٍ حول مهمّته الأساسية — أمٌّ تجد وتحجز رعايةً مُدقَّقة، وجليسةٌ تقبل حجزاً، ومشرفةٌ توثّق وتُبلّغ — ثم أعنقد النتائج في مخطّط تقارب وأرتّب الإصلاحات التي تفكّ حلقة السوق أولاً.

  • P0Trust signals in the mother's app — verification badges and what they mean — must be unmistakable, or she won't book at all.إشارات الثقة في تطبيق الأمّ — شارات التوثيق ومعناها — يجب أن تكون لا تُخطئ، وإلا فلن تحجز أصلاً.
  • P1The babysitter's schedule and booking context must be readable at a glance before she accepts.جدول الجليسة وسياق الحجز يجب أن يكونا مقروءَين بلمحةٍ قبل أن تقبل.
  • P2The admin's moderation actions should be fast and obviously reversible, with the audit trail one tap away.إجراءات الإدارة لدى المشرف ينبغي أن تكون سريعةً وقابلةً للتراجع بوضوح، وسجلّ التدقيق على بُعد نقرةٍ واحدة.

§ Reflectionتأمّل

What I'd carry forward.ما سأحمله معي.

The lesson that stuck: most of a multi-sided product's difficulty is information architecture and access control, not screen count. Writing the spec first felt slow and turned out to be the fastest path — it's now my default for anything with more than one type of user.الدرس الذي علق: معظم صعوبة منتجٍ متعدّد الأطراف هندسة معلوماتٍ وتحكّمٌ بالوصول، لا عدد الشاشات. بدا كتابة المواصفة أولاً بطيئاً وتبيّن أنه أسرع طريق — وصار خياري الافتراضي لأي شيءٍ بأكثر من نوع مستخدمٍ واحد.

Next time I'd invest earlier in a shared component layer across the three apps, so visual consistency is enforced by code and not just by discipline.في المرة القادمة سأستثمر مبكراً في طبقة مكوّناتٍ مشتركة عبر التطبيقات الثلاثة، كي يُفرَض الاتّساق البصري بالكود لا بالانضباط وحده.