Customers module
The first module to ship. Customer search, ledger, per-section edit popups, archive/reactivate, loyalty, PIPA export/erase.
Sales module
The POS sell screen. Walk-in default → search → build the cart → one Charge popup that decides Estimate / Layaway / Special Order / Sale from what you enter. Ring, refund, exchange, hold, resume — all on one Till chassis with an in-Till detail panel.
Settings module
The admin surface — users + staff management, read-only permissions matrix, shop config.
Service module
The workshop work-order screen. Search + today's-service-orders ledger grouped by status; drop-off ticket with attached customer + bike; add labour (service_menu) + parts (variants); status lifecycle (Start Work / Wait for Parts / Stop·Call / Ready / Notify); pickup invoices the ticket as a sale.
Inventory module
The stock console. SKU search → read-only variant detail (hero + Stock / Vendors / IDs / Description) → Product Card editor → stock-movement ledger. Split out of the former two-face Products module in v0.7.69; Purchases is now its own module.
Purchases module
The purchasing console — PO ledger + Purchase Cart (vendor-grouped, per-line steppers) + Vendors management + PO lifecycle. Split out of the former two-face Products module in v0.7.69; Inventory is now its own module.
Migration module
The one-time AIM cutover tool. Sys-admin-only tab. Point it at an AIM .bak, watch the extractor produce a portable SQLite snapshot, stage into D1, run the converter (customers → catalog → sales → bikes → service → purchasing → finalize), gate the fidelity result against the source, review the parity report, commit the load. Undo via D1 Time Travel.
My Hub module
Home dashboard — live weather chip, End-of-Day report, Shop Tasks (ad-hoc + recurring templates, audited), Shop Board (rich-text announcements with images, pin + expiry, audited), Messages board. The staff-facing home surface that opens on sign-in.
Rentals module
The bike-rental tab — booking lifecycle (booked → out → returned/cancelled), Fleet picker with range-based availability, CC damage-hold at hand-out, hand-out collects balance, return releases hold, damage capture (send-to-repair), no-show forfeit, late-fee auto-extend, extend/swap/rental→sale mid-flight, early-return proration, and one authoritative money handoff to the Sales till.
Website module
The shop's public marketing site, framed inside the Hub. What edits here IS the page the public gets — no per-block CMS layer that could drift from the deployed HTML. Serves the site at /website; rental Reserve flow feeds real bookings back to the Rentals tab.
Channel module
The brand's view of its own dealer channel — four read-only views (Overview / Products / Orders / Dealers) of how one manufacturer's product moves through the shop. Owner-only. Read-only end-to-end — no writes, no money surface. The first sliver of the B2B Interface from the Norco Opportunity.
Notes module
A private dated notebook opened from the brand wheel — dated entries shelved by tab (Sales / Service / etc.), newest first, rich text with inline images. Gated by an explicit two-person identity check, NOT a permission — sys_admin does not automatically get in.