FsiBoard
Umrah and Hajj Management System Dashboard built to monitor pilgrim data and daily operations efficiently in real-time.
The Problem
Prior to this platform, Hajj and Umrah travel agencies managed thousands of pilgrims using fragmented systems: primarily chaotic Excel spreadsheets and unstructured WhatsApp groups. This led to scattered travel documents, lost passport data, uncoordinated flight schedules, and severe miscommunication between the central office administrators and the on-the-ground guides (mutawwifs) in Saudi Arabia. The lack of a centralized "source of truth" resulted in heightened anxiety for both the agency and the pilgrims.
Research & Insights
Through contextual inquiry and interviews with travel agency staff and field guides, we uncovered the core bottlenecks in their daily operations.
Insight 1: Time Drain
Administrators spent over 4 hours daily just manually reconciling pilgrim manifests and checking visa statuses across different portals.
Insight 2: Mobile Dependency
Field guides (Mutawwifs) needed a mobile-first way to update pilgrim statuses (e.g., "Arrived at Hotel") instantly without navigating complex desktop UIs.
Dual-Role User Flow Architecture
Two complete flows โ Admin (desktop-first) and Mutawwif/Field Guide (mobile-first) โ showing how both roles interconnect in real time. Each includes user actions, system responses, and decision nodes.
Screen-by-Screen Architecture
Four detailed blueprints โ three desktop-first, one mobile-first โ with annotated component specs, semantic colour logic, and Figma-ready layout descriptions.
Admin Dashboard
Critical metrics surfaced in under 10 seconds of login
Fixed Sidebar + Fluid Main Area
- Sidebar: 220px fixed, dark navy (#111827). Logo top, nav links (icon + label), avatar/logout anchored bottom. Never collapses on desktop.
- Top bar: 60px sticky. Page title (Syne 700, 20px) left. Notification bell with red number badge. Global search center. Admin avatar right.
- Alert drawer: slides down from top bar (320px height) on bell click โ overlays content without full navigation. Dismissible per alert.
- Main content: fluid, 24px gutters. Scrollable independently of fixed sidebar.
The dashboard's decision-making engine
- Card 1 โ Visas Approved: Green tint (#052e1a bg, #10B981 border). Syne 800, 36px value. Icon: shield-check. Clicking = no navigation needed.
- Card 2 โ Pending Review: Amber tint. Clock icon. Clicking navigates to manifest filtered to "Pending." Badge shows count.
- Card 3 โ Issues Flagged: Red tint (#2d0a0a, #EF4444 border). Pulsing red ring on card if count > 0. Warning triangle icon. Highest visual urgency โ eye goes here first.
- Card 4 โ Flights Today: Blue tint. Split value: "X on time / Y delayed". Clicking goes to flight board.
- All cards: 16px radius, semantic 1px border, hover: lift shadow. Click = contextual navigation shortcut to relevant section.
Activity Table + Trend Chart (below KPIs)
- Left (55%): "Recent Activity" table โ Name, Status Badge, Group, Last Updated. 8 visible rows, then scroll. Status badge = semantic pill (green/amber/red dot + label).
- Right (45%): "Processing Trend This Week" bar chart โ X: days, Y: count. Pure CSS bars in Figma. Current day bar = solid teal. Others = teal-dim. No chart library needed.
- Section labels: Syne 600, 12px, uppercase, txt3. Consistent above every widget.
Reducing the 4-hour daily time drain
- Red badge on bell โ pre-filtered view on click. Admin never searches manually.
- Each KPI card click = 1-click contextual navigation to the problem area. No menus.
- Keyboard shortcuts visible on hover (e.g. "Press M โ Manifest") for daily power users.
- Live sync indicator: bottom-left, "Synced 12s ago" with green pulse โ removes doubt about data freshness vs. a stale spreadsheet.
Pilgrim Manifest & Document Verification
Dense data grids transformed into scannable, actionable records
The scannable grid (replacing dense Excel rows)
- Columns: Checkbox ยท Pilgrim Name (+ 28px avatar) ยท Passport No. ยท Visa Status ยท Document Status ยท Group ยท Actions.
- Row height: 48px minimum. 16px horizontal cell padding โ no cramming.
- Row-level semantic tinting: Approved = default dark row. Pending = amber row tint (rgba 4%). Flagged = red row tint (rgba 4%) + 3px red left-border accent.
- Admins scan the left edge โ colour bleeds surface problem rows without reading any text. This is the core grid โ card transformation.
- Sticky header row on scroll. Bulk-select checkbox in header for batch actions.
Semantic pill badges โ the anti-spreadsheet pattern
- Approved: Green dot + "Approved" โ #10B981 tint, green border + text.
- Pending: Amber dot + "Pending Review" โ amber tint.
- Rejected: Red dot + "Rejected" โ red tint. Tooltip on hover: rejection reason preview.
- Incomplete: Grey dot + "Missing Docs" โ neutral tint + warning icon.
- All badges: 18px height, 100px radius, 11px Outfit 600 uppercase. 5px dot left of label. Clicking a badge opens the document panel directly.
Approve / Reject without leaving the list
- Clicking any row opens a 380px right panel (slides in โ admin keeps list in view on left).
- Panel: pilgrim photo (48px) + name (Syne 700) + group chip at top. Tabs: Documents ยท Details ยท History.
- Document cards grid: one card per document type (Passport, Visa, Vaccination Certificate). Each card: thumbnail + type label + status badge + Approve / Reject buttons.
- Approve: single click, logs timestamp + admin ID instantly. No modal.
- Reject: opens inline reason field (required). Reason stored, visible to mutawwif in their app under that pilgrim.
Quick-filter chips โ instant triage
- Chips: "All" ยท "Pending Review (14)" ยท "Issues Flagged (6)" ยท "Ready (203)" ยท "My Group [A]". Click = instant client-side filter, no reload.
- Count in parentheses lets admin triage by volume โ highest-count problem first.
- Search: filters by name, passport number, group ID in real time. 300ms debounce.
- Export button (top right): generates filtered PDF manifest โ replaces manual Excel export entirely.
Flight & Logistics Scheduling
Multi-group flight coordination without a spreadsheet
Timeline Board + Assignment Detail Panel
- Main view: chronological flight card list (65% width). Each flight = a "flight row card" โ not a spreadsheet row.
- Right panel (35%): Group Assignment detail on flight click. Lists assigned groups, headcount, pilgrim status breakdown.
- Date tabs at top: Today ยท Tomorrow ยท +2 ยท +3. Today always active on load.
- Filter row: Airline dropdown ยท Destination (Jeddah / Madinah / Istanbul) ยท Status (On Time / Delayed / Cancelled).
Proactive alert โ replaces WhatsApp monitoring
- Amber banner pinned below top bar when any flight on the current day is delayed. "โ SV 4821 Jeddah โ Group B โ now 14:30 (was 12:00). View affected pilgrims โ"
- Banner auto-dismisses once admin opens the affected flight card or manually closes.
- This is the critical behaviour change: system pushes the delay to admin. Admin no longer monitors airline WhatsApp groups or calls the airport.
High-density but visually scannable
- Left: departure + arrival time (Syne 600, 14px).
- Center: flight number, route, group tag chip, seat count pill ("234/260").
- Right: capacity progress bar (booked/total) + status badge.
- Row states: On Time = green left-border + green bg tint. Delayed = amber. Cancelled = red. Upcoming = teal/neutral. Delayed rows show "+Xh" amber chip for delay duration.
Drag-to-reassign + conflict detection
- Group chips inside flight rows are draggable on desktop. Drop onto another flight row triggers reassignment.
- On drop: system checks seat capacity. OK โ green toast + real-time push notification to all mutawwifs in that group ("Your flight has been updated โ new departure 14:30").
- Conflict: modal mid-drag โ "SV 4823 has 48 seats. Your group has 62 pilgrims. Suggested: SV 4825 (80 seats free)."
- All changes logged in sidebar Activity Log: timestamp + admin name + previous vs. new assignment.
Admin โ Mutawwif real-time visibility
- Bottom of page: "โ Live โ 4 mutawwifs online" with green pulse dot. Admin sees which field guides are active.
- Saving a flight change auto-pushes an in-app notification to affected mutawwifs. No manual message. No WhatsApp.
Mutawwif Companion App
Field-first UI โ minimum taps, maximum clarity in the field
Header + Mini KPIs + Pilgrim Card List
- Header: logo + "My Group โ [Name]" + live sync dot (green pulse, "Live") + avatar. No complex nav.
- Mini KPI row: 2-card grid โ "Checked In: 38/42" (green) ยท "Needs Attention: 4" (amber). Tapping amber filters list immediately to problem pilgrims.
- Filter chips: "All ยท Pending ยท Issues" โ 22px height, horizontal row. Active = teal tint.
- Pilgrim card: 32px avatar circle + name + sub-label (room/group) + status pill right-aligned. Card border colour = semantic status. 56px min height for thumb-friendly tap.
- Tap any card = status sheet slides up. No page navigation โ context preserved.
Designed for one hand, in a crowd
- Sheet slides up 85% of viewport. Pilgrim mini-card at top confirms identity before action.
- Status grid: 2ร2 large tile buttons (54px height). Labels: "Arrived at Hotel" ยท "At Haram" ยท "Boarded Bus" ยท "Needs Assistance" (red tint). Pre-set โ zero typing required.
- Selected tile: coloured border + bg tint. Selecting auto-highlights, one tap per pilgrim update.
- Optional note field: 52px text area. Keyboard opens only on tap โ not automatically.
- Confirm: 48px full-width teal button. Haptic feedback + green flash + sheet dismisses + card list updates instantly.
Built for low-signal sacred sites
- Top bar shows amber "Offline โ syncing when connected" badge when network drops.
- All status updates queue locally: "Queued: 3 updates" shown. No data lost.
- On reconnect: auto-sync fires, toast: "3 updates synced โ". Admin dashboard reflects changes immediately.
- Core pilgrim list always cached โ mutawwif can view all records without any connection.
In-app only โ no WhatsApp, no SMS
- Flight update: "โ Group B โ SV 4821 now departs 14:30 (was 12:00). Confirm group notified โ"
- Document flag: "Pilgrim [Name] โ visa flagged by admin. Action required."
- In-app banner (4 sec) + persisted in Notifications tab. One notification centre replaces multiple WhatsApp groups.
UI Design & Elements
The final interface utilizes a clean, high-contrast aesthetic. Crucial metrics like "Visas Approved" or "Flights Delayed" are highlighted using semantic color coding (greens for success, amber for warnings) to draw immediate attention to actionable items.
Colors
Typography
Syne (Display)
Outfit (Body)
Components
Prototype & Outcome
The shift from spreadsheets to a unified dashboard reduced administrative sorting time by 75%. Agency owners reported significantly less anxiety during the peak Hajj season, as the real-time tracking allowed them to proactively address flight delays and visa issues before they cascaded into larger logistical nightmares.