Skip to content

plan

Status: ✅ IMPLEMENTED 2026-07-10 (refactor-in-place). All three corrections + all module reworks landed in products/atlas/screens/issue-management-dashboard.html. Decisions taken: refactor in place (kept the config-driven engine); Meshes KEPT as an exec overlay (user call, overriding the drop recommendation); login reuses the canonical Atlas .login-card pattern. Uncommitted on branch swap-app/support-basics.

What shipped:

  • Login → plain canonical Atlas login-card (brand panel + Welcome-back card, no Google/stats).
  • Issue view → real read-only manager↔specialist thread (issue-banner + reporter/affected cards + evidence + .thread/.msg-*), bespoke idr-* removed.
  • Topbar → sidebar-collapse + breadcrumb + moon(dark toggle) + bell + “Tech Rachaj / Super admin”.
  • Riders → prod cols + 19-status lifecycle + tabbed detail (Rider details/Keke/KYC/Swaps/Wallet/ Cases) + record sidebar (release checklist/onboarded-by/payback/overdraft-ban/battery pack/serial/tricycle).
  • Stations → 11 real swap stations (Name/Location/LGA/Status/Date) + Overview/Batteries/Users/ Delivery-Managers detail + station-manager & stats sidebar. NEW Charge stations module (3 real).
  • Battery packs → prod (BMS/cost/charge-category/health/pending/location/custodian) + Available/ Assigned tabs + Upload BMS mapping + item/location/custodian detail. Voltage model dropped.
  • Clusters → prod (Level/swap amount/op days/LGA/manager) + create drawer. Overdrafts → virtual accounts + transaction evidence + update form + Reconcile/dry-run + Manual Credit/Reconcile/History.
  • NEW Rider wallet transfer form. IA regrouped to prod (Rider management/Stations/Network/Wallet).
  • Overview overlays kept; net KPI “Faulty batteries” → “Depleted packs”.

Follow-ups not done: interactive station Map view (visual toggle only); real filter-dropdown behaviour (chips are visual); charge-station Managers tab is an empty state.


Target file: products/atlas/screens/issue-management-dashboard.html (the “executive app”). Date captured: 2026-07-10.

The current exec dashboard invented data models and screens that do not match what Rechaj runs on prod today. Ridwan shared 23 prod screenshots (Rider management, Overdrafts, Stations, Clusters, Battery packs, Wallet transfer). The exec app must replicate the real prod screens — same modules, columns, statuses, values, chrome — not invented equivalents.

  1. Replicate prod, do not invent. Every module mirrors the real prod screen below (columns, statuses, stat cards, detail layout). No invented fields (no voltage on batteries, no fabricated KPIs, etc.).
  2. Issue view = the real conversation thread. When an executive opens an issue, they see the manager ↔ support-specialist conversation thread exactly as the manager (swap-app swap-support-basic.html) and the specialist (officer console support-tickets-basic.html) see it. A “totally new”/invented issue preview is currently shown — remove it and use the real thread UI.
  3. Login = the plain standard Atlas login. Replace the custom split-screen login I built with the simple, canonical Atlas login. (Locate the base Atlas login — candidates are the .login-card single-column variants in products/atlas/flows/*/index.html, e.g. onboarding-agent, field-support-cfsm, battery-identity-admin all say “Single”. Pick the plainest one and reuse verbatim — do NOT redesign.)
  • Topbar: breadcrumb on the left (e.g. Rider management › Riders); right side = dark-mode toggle (moon icon), notification bell, user pill (avatar circle with green ring + name + role e.g. “Tech Rachaj / Super admin”).
  • Sidebar collapse icon at far top-left of the topbar.
  • Light theme by default (prod is light). Keep the standard Atlas sidebar.

Groups and items actually present on prod:

  • Rider management → Riders, Overdrafts
  • Stations → Swap stations, Charge stations
  • Clusters
  • Wallet transfer → Rider wallet transfer
  • Battery packs

Exec-support additions layered on top (from prior sessions, keep unless dropped): Overview, Issues, Unlocks. Mesh: OPEN QUESTION — prod has no mesh (clusters are the real grouping). Confirm keep vs drop before building.


Module specs (extracted from prod screenshots)

Section titled “Module specs (extracted from prod screenshots)”

Stat cards (3): Total riders 636; Active riders 497; Pending retrofits 37. Toolbar: search “Search by name or phone number”; “All status” filter. Columns: FULL NAME (sortable) · LICENSE PLATE · STATUS (sortable) · ONBOARDED BY · ENABLED · DATE ONBOARDED (sortable) · ACTIONS (...). Row: avatar (initials, green) + full name + “No data” subline; plate (e.g. SRA473WJ) or “No data”; status pill; onboarded-by name; ENABLED pill (green); date (Thu Jul 09, 2026 01:27 PM). Status lifecycle (full filter list, exact order): All status · PENDING VERIFICATION · LEAD CAPTURED · VERIFIED · PAYMENT PENDING · PAYMENT CONFIRMED · KEKE ONBOARDED · KYC VERIFICATION SUBMITTED · KYC VERIFICATION MANUAL REVIEW · KYC VERIFICATION FAILED · KYC VERIFICATION APPROVED · INSPECTION PENDING · INSPECTION FAILED · INSPECTION COMPLETED · RETROFIT PENDING · RETROFIT COMPLETED · ACTIVE · DEACTIVATED · INACTIVE · ONBOARDING COMPLETE. Pill colors: INSPECTION PENDING = yellow, VERIFIED/ACTIVE = green, etc. Sample names: Jacob Onele, Bolaji Alex Oladepo, Oluwaranti Abosede Ayaniyi, Musa Umar Salami, Ayomide Sunday, Christma Chidozie Ogbu, John Oni Ojo, Olasunkanmi Oladokun, Wasiu Alabi Bashiru, Ahmed Iliyas. Onboarders: paul Adeniyi, Matthew Adebayo, Wahab Ojokuye, Titilayo Olaitan.

Rider detail — tabs: Rider Details · Keke Details · KYC Information · Swap History · Wallet · Cases

Section titled “Rider detail — tabs: Rider Details · Keke Details · KYC Information · Swap History · Wallet · Cases”

Right sidebar (persists across tabs):

  • Release checklist — “Released” · “This keke has been released to the rider.”
  • Onboarded by — paul Adeniyi, paul.adeniyi18@gmail.com, arrow button.
  • Payback monitor — Swaps earned ₦90,000.00; progress bar; “7% paid back”; “Kit cost: ₦1,300,000.00”.
  • Overdraft Ban — “Rider can access overdrafts” DISABLED (red) + toggle.
  • BATTERY PACK 260115101151 + Remove (red).
  • SERIAL NUMBER VC252000203 + Remove (red).
  • Tricycle info — RETROFIT KIT SN RK-260621-475063DC; TOTAL SWAPS 9.

Rider Details tab: header (avatar + name Olamilekan Oparanti + phone +2348167529786; status pill RETROFIT COMPLETED; “Date onboarded: Thu Jul 02, 2026 04:26 PM”). Personal information: EMAIL riders.emails+3DCJ7V6Y@mocx.co; ADDRESS 2, Esther Adebayo Street, Odofin Shimawa Ogun state. Retrofit schedule: CENTRE Sango retrofit station; SCHEDULED DATE 2026-07-06; STATUS COMPLETED; CENTRE MANAGER Musbau Azeez; CENTRE ADDRESS Tarmac Road; ACTIVATION AMOUNT ₦20,000.00.

Keke Details tab: Tricycle information — PLATE NUMBER SDM409WV; CHASSIS NUMBER MD6M14PAOL4K06607. License Plate photo. Exterior Views (photo grid, 4+).

Cases tab: empty state — person+plus icon; “No cases” · “This rider has no support cases.” (This is where support cases/issues surface per-rider.)

2. Overdrafts (Rider management › Overdrafts)

Section titled “2. Overdrafts (Rider management › Overdrafts)”

Header actions (right): “All Statuses” filter · “All Banks” filter · “+ Manual Credit” (green) · “Reconcile” · “History”. Columns: RIDER · AMOUNT · STATUS · BANK · REFERENCE · CREATED AT. Row: avatar + name + phone; amount (₦12,000.00 / ₦9,000.00); STATUS PENDING (yellow); BANK (OPAY / STERLING / MONNIFY / PAYSTACK); REFERENCE (long, may truncate ...); CREATED AT (Wed Jul 01, 2026 11:23 AM) + operator email below (jumai.abidoye@mocx.co, royce.adedoyin@mocx.co).

Overdraft detail — tabs: Overview · Reconcile

Section titled “Overdraft detail — tabs: Overview · Reconcile”

Overview: header card (name + phone; PENDING pill + OPAY; big ₦12,000.00). Wallet card: “Available balance” ₦12,000.00. Virtual Accounts: Paystack-Titan 9732024545 MOCXSMARTTECH/KAREEM TAJUDEEN; OPay 6127435504 Tajudeen Kareem; Sterling bank 5267127469 KAR. Details: Transaction ref 2072256559665938432; Session ID —; Comments —; Swap completed Yes; Created at; Created by jumai.abidoye@mocx.co; Updated at; Updated by gbenga.fatokun@mocx.com. Transaction evidence: “Open in new tab” + receipt image (Moniepoint debit ₦12,000 · Successful · sender/beneficiary/session). Update overdraft form: Amount · Transaction reference · Session ID · Comments · “Save changes”. (“Edit the references, amount, or comments. Disabled once the overdraft is settled.”) Reconcile tab / Manual reconcile: “Use this when the overdraft only has a session ID. Paste the real provider transaction reference from the Paystack / Monnify dashboard and the backend will persist it and run the verify-and-replay flow. Disabled once settled.” Provider transaction reference input; Dry run toggle (“Preview first. Turn off to persist the reference and settle the overdraft.”); “Run dry run” (green).

3. Swap stations (Stations › Swap stations)

Section titled “3. Swap stations (Stations › Swap stations)”

Stat cards: Swap stations 11; Total swaps completed 279; Average daily swaps 436. Toolbar: search; List / Map toggle; “+ Create station” (green). Columns: NAME · LOCATION · LGA · STATUS · DATE CREATED · ACTIONS. Status: ACTIVE (green) / INACTIVE (red). Real 11 stations (name / location / LGA / status):

  • Ojo Swap Station / Ojo Close, Lagos, Nigeria / Ojo / INACTIVE
  • Redeem Camp SS / House 2, Ifewara, opposite Redemption High School / Obafemi/Owode / ACTIVE
  • Honda Swap Station / Honda Manufacturing Nigeria Limited, Idiroko Road, Ota, Nigeria / Ado-Odo/Ota / ACTIVE
  • Asbestos Swap Station / Singer Bus Stop, Abeokuta Expressway, Ota, Nigeria / Ado-Odo/Ota / ACTIVE
  • Joke Ayo Swap Station / 4 Suberu Oje Rd / Alimosho / ACTIVE
  • Metro Swap Station / Metro Warehouse, off Tarmac Road, Ota / Ado-Odo/Ota / ACTIVE
  • Toll Gate Mega Swap Station / 7/8 Ilo Awela Road, Ota, Nigeria / Ado-Odo/Ota / ACTIVE
  • Ijoko Swap Station / Ijoko Road, Ota, Nigeria / Ado-Odo/Ota / INACTIVE
  • Plastic City Swap Station / Unique Grace, Agege, Ogun State, Nigeria / Ado-Odo/Ota / ACTIVE
  • Opebi Swap Station / 4 Irewole Street, Ikeja, Nigeria / Ikeja / INACTIVE
  • Honda One / Tower Alloys Industries Ltd., Idiroko Road, Ota, Nigeria / Ado-Odo/Ota / ACTIVE

Swap station detail — tabs: Overview · Batteries · Users · Delivery Managers

Section titled “Swap station detail — tabs: Overview · Batteries · Users · Delivery Managers”
  • Overview: “Swap station” label + name + address; Edit + Deactivate (red). Grid: STATUS · STATE (Ogun) · LGA · CLUSTER (uuid, e.g. a8ce8def-210e-4543-9139-9bca1d1715d5) · PHYSICAL ADDRESS · COUNTRY (Nigeria) · COORDINATES (6.4531, 3.3958) · DATE CREATED. Right sidebar: Station manager + Reassign (NAME Tayo Adebanjo, EMAIL tayo.adebanjo@mocx.com, PHONE +2348169011290); Station stats — 19 Total swaps, 2 Swaps today, 7 Avg daily swaps.
  • Batteries: “Battery packs at this swap station’s location”; search by serial. Columns SERIAL NUMBER · CHARGE STATUS (CHARGED green / CHARGING blue) · STATUS (ACTIVE) · DATE ADDED. Serials like 260115101186.
  • Users: “Managers, support staff, and swap operators for this station” + “Assign user”. Columns NAME · ROLE (SWAP STATION MANAGER) · STATUS (VERIFIED) · DATE ADDED · ACTIONS.
  • Delivery Managers tab (present, not captured in detail).

“Create swap station” / “Add a new swap station to the network.” Fields: Station name (e.g. Ikeja Swap Station); Map address (search on map); Physical address (Street address); State (select); LGA (select). Create station / Cancel.

4. Charge stations (Stations › Charge stations)

Section titled “4. Charge stations (Stations › Charge stations)”

Stat cards: Charge stations 3; Avg charging time (mins) 432.2; Avg daily charges 0.0. Toolbar: search; List / Map; “+ Add station” (green). Columns: NAME · ADDRESS · LGA · BATTERY CAPACITY · STATUS · DATE CREATED · ACTIONS. Real 3: Honda Charge Station / Eagle Package Printing Ltd… / Ado-Odo/Ota / 96 / ACTIVE; Sango Charge Station / Tarmac Road, Ota / Ado-Odo/Ota / 154 / ACTIVE; Oregun Charge Station / 28-30 Morison Crescent, Ikeja / Ikeja / 50 / INACTIVE. Detail — tabs: Overview · Batteries · Managers · Delivery Managers. Overview grid like swap station but with BATTERY CAPACITY. Right sidebar Battery stats: 4 Charging (blue), 8 Charged (green), 30 Depleted (red). Service areas: “Locations this station serves” — NAME · LOCATION TYPE (RETROFIT STATION / SWAP STATION) · ADDRESS · (arrow). Serves: Sango retrofit station, Honda/Toll Gate Mega/Plastic City/Asbestos/Ijoko Swap Stations.

Toolbar: search; “All levels” filter; “+ Create cluster” (green). Columns: NAME · LEVEL · SWAP AMOUNT · OPERATIONAL DAYS · LOCATION · MANAGER · CREATED AT · ACTIONS. Real 4: Mowe Cluster / LEVEL TWO / ₦10,500.00 / 6 days/wk / Obafemi/Owode / Lukmon Alani; Alagbado Cluster / LEVEL TWO / ₦12,000.00 / 5 days/wk / Alimosho / Gbenga Akilo; Ikeja Cluster / LEVEL TWO / ₦10,000.00 / 5 days/wk / Ado-Odo/Ota / UNASSIGNED (yellow pill); Sango Ota Cluster / LEVEL TWO / ₦12,000.00 / 5 days/wk / Ado-Odo/Ota / Gbenga Akilo. Create cluster drawer: “Create a new cluster to group stations.” Cluster type radio (Level 2 / Level 3); Cluster name; Swap amount (0); Operational days per week (0); State (select); LGA (select). Create / Cancel.

NOTE: prod “cluster” = management grouping (level, swap price, operational days, manager, LGA). This is NOT the same as the “mesh” concept from earlier sessions.

Tabs: Available / Assigned. “Upload BMS mapping” button. Filters: All locations · All custodians · All statuses · All statuses (two status filters). Columns: (checkbox) SERIAL NUMBER · BMS ID · COST · CHARGE STATUS · HEALTH STATUS · PENDING TRANSFER · LOCATION · CUSTODIAN · DATE CREATED. Values: serial 260115101205; BMS ID 000050210151; COST ₦1,073,666.66; CHARGE STATUS = New (purple/green) / Depleted (red) / Charged / Charging; HEALTH STATUS = ACTIVE (green); PENDING TRANSFER = No (grey) / Yes; LOCATION (Sango warehouse, Metro Swap Station, Honda One); CUSTODIAN (Tobi Oyeshile, Swap Manager, Gbenga Fatokun, Nurain Afolayan, Taofeek Sanusi, Ademola Olaniran). Detail drawer: header serial + ACTIVE pill + X. ITEM INFORMATION: ITEM NAME SIA 8KWh REPT 104Ah (2 Layer); ITEM TYPE BATTERY PACK; PRICE ₦1,073,666.66; DATE CREATED; CHARGE STATUS New; ASSIGNED No; PENDING TRANSFER No; USED No. LOCATION: NAME Sango warehouse; TYPE PRODUCTION FACILITY; STATE Ogun; ADDRESS Metro, Ota III Agege Ado Odo/Ota, Ogun, Nigeria. CUSTODIAN: NAME Tobi Oyeshile; EMAIL oluwatobi.oyeshile@mocx.co; PHONE +2349057098315; STATUS ACTIVE.

Batteries on prod use categorical charge status (New/Charged/Charging/Depleted), NOT voltage. Drop the invented voltage model.

7. Rider wallet transfer (Wallet transfer › Rider wallet transfer)

Section titled “7. Rider wallet transfer (Wallet transfer › Rider wallet transfer)”

Simple form: Source Rider (search+select) · Destination Rider (search+select) · Amount (₦0) · Reason / Narration (textarea) · Transfer (green).


The executive Issue view must reuse the real manager↔specialist thread, sourced from:

  • Manager side: products/rechaj-swap-app/prototypes/swap-support-basic.html
  • Specialist side: products/atlas/prototypes/support-tickets-basic.html (renderDetail / renderThread; classes .thread, .msg, .msg-you, .msg-mgr, .msg-sys, .msg-bubble, .msg-photo, .evi, issue banner + reporter/affected-rider cards). Reproduce that exact layout — read-only for the exec. Remove the bespoke idr-* issue-detail preview currently in the exec file. Rider cases also surface under the rider detail Cases tab (see Riders §1).

Replace the custom #scr-login split-screen (login-wrap / login-left / login-card / “Welcome back, Ngozi” / stats) with the plain single-column Atlas login. Find the canonical simple one (the flows/* variants marked “Single”) and reuse verbatim.


Gap analysis — what the current build gets wrong

Section titled “Gap analysis — what the current build gets wrong”
  • Login: custom split-screen → must be standard Atlas login.
  • Issue drawer: bespoke idr-* preview → must be the real thread UI.
  • Stations: invented 8 stations → real 11 swap stations + separate 3 charge stations, with prod columns (LOCATION/LGA/STATUS) and detail tabs. Remove station-wallet & the invented “station tracker” numbers not present on prod (prod station stats = Total swaps / Swaps today / Avg daily swaps only).
  • Batteries: voltage model → prod battery packs (BMS ID, cost, charge status categories, health, pending transfer, location, custodian) + Available/Assigned tabs + detail drawer.
  • Clusters: invented shape → prod clusters (Level 2/3, swap amount, operational days, manager, LGA) + create drawer.
  • Overdrafts: simplify-to-prod (bank, reference, virtual accounts, transaction evidence, update + manual-reconcile/dry-run, Manual Credit/Reconcile/History actions).
  • Riders: thin table → prod riders (19-status lifecycle, onboarded-by, enabled, rich detail tabs + sidebar: release checklist / payback monitor / overdraft ban / battery pack / serial / tricycle info).
  • Missing modules: Charge stations, Battery packs, Rider wallet transfer.
  • Topbar chrome: add moon toggle + bell + Super-admin user pill; breadcrumbs per prod.
  • Mesh: OPEN — keep (earlier request) or drop (prod uses clusters). CONFIRM.
  • Swap-speed / Unlocks / Overview donuts: exec-only additions — keep, but re-verify they don’t fabricate data prod can’t produce.

Suggested implementation order (next session)

Section titled “Suggested implementation order (next session)”
  1. Confirm open questions (Mesh keep/drop; rebuild-vs-refactor).
  2. Swap in the standard Atlas login + prod topbar chrome.
  3. Fix the Issue view to the real thread (highest-signal correction).
  4. Rebuild data models to prod shape (riders, stations, charge stations, clusters, battery packs, overdrafts, wallet transfer).
  5. Rebuild each module list + detail to match prod columns/tabs/sidebars.
  6. Re-verify exec-only overlays (Overview donuts, Unlocks) use only prod-derivable data.
  7. Screenshot-verify every screen against the prod references before hand-off.
  1. Mesh — keep the mesh module or drop it in favour of prod clusters?
  2. Rebuild vs refactor — from-scratch prod-faithful rebuild, or heavy refactor of the current issue-management-dashboard.html?
  3. Login source — confirm which flows/* login is the canonical “plain” Atlas login to copy.