20,340 lines of source, 238 parts described, 7 areas and 15 customer paths. Booking, CRM and point of sale for salons and shops. Every line on this page comes from the model — open it and check any of them.
| Area | Screens | Actions | API | Records | What it covers |
|---|---|---|---|---|---|
| lib | 1 | 65 | 0 | 0 | Shared server and client libraries: auth-user and business lookup, business provisioning, booking availability, email/Telegram/Viber/WhatsApp… |
| Shared & root | 32 | 16 | 1 | 9 | Everything else: auth pages and server actions, onboarding, the public booking page, the edge proxy, Supabase client factories, UI primitives, i18n… |
| api | 0 | 25 | 25 | 0 | Next.js API route handlers: public booking, booking-confirmation and low-stock notifications, the cron reminder job, inventory… |
| (dashboard) | 26 | 0 | 0 | 0 | The authenticated back office: dashboard, booking calendar, CRM, POS terminal and history, inventory with sales analytics, and business settings. |
| migrations | 0 | 6 | 0 | 10 | Supabase Postgres schema and its evolution: tenant tables, RLS helper functions, the double-booking trigger, receipt numbering, client-statistics… |
| app | 4 | 2 | 0 | 0 | App-root shell: the marketing landing page, root layout, error and not-found pages, the generated sitemap and the Serwist service worker behind the… |
| es | 4 | 0 | 0 | 0 | Spanish-language marketing pages: the landing page, industry page and pricing cards. |
15 paths are described in the model; the longest 12 are here, with how many areas each one crosses.
The public booking process: pick a service, staff member and free slot, then submit. The server re-checks hours, upserts the client and inserts a confirmed booking, with…
Stock keeping: create and edit items (unique SKU), record in/out/adjustment movements that rewrite the quantity, and alert the owner on every channel when stock reaches…
Takes a new owner from sign-up to a working dashboard: Supabase account, business row and owner-employee, email confirmation in SaaS mode, then the onboarding wizard…
Recurring outbound messaging: 24h and 1h reminders for confirmed bookings, thank-yous for recently completed visits, reactivation for clients last seen 30 days ago and…
Registers the business's Viber bot webhook (tagged with ?bid=). Viber conversation and message events then connect the owner's chat and opt clients in by context link or…
Configures the tenant: profile and logo, weekly hours with breaks (used by the public booking form and the server-side check), services, employees, notification…
The client book: list with spend totals, add a client by hand, bulk-import from CSV (deduplicated by phone), and open a client's detail page with visit history and…
Email/password or Google sign-in through Supabase. The edge proxy then gates every protected page and forwards the user to server components, which load the owner's…
Sells services at the counter. Online, a completed transaction is inserted, which gets a receipt number, refreshes the client's statistics and marks the source booking…
The back-office booking process: staff create manual bookings (confirmed, with a confirmation sent), reassign employees and move a booking through its statuses.
Registers the business's own Telegram bot webhook. The bot then links the owner's chat on /start and opts clients in through a booking link or /link <phone>, so later…
Bulk catalogue maintenance. CSV/XLSX rows are sanitised and de-duplicated against existing items by barcode, then SKU, then name. The full catalogue exports as an XLSX…
8 rules are described; each one watches a record and changes something else when it moves.
Once a booking is inserted, by POST /api/book (online, with the internal bearer secret) or by the staff calendar (manual), the caller sends POST /api/email/confirm…
After an inventory movement row is inserted from the item detail view, the browser writes the item's new quantity: 'in' adds, 'out' subtracts (floored at 0) and…
Before every appointment insert or update, enforces capacity- and interval-overlap-aware double-booking prevention. Serializes concurrent attempts with a Postgres…
Before every update on an appointments row, stamps updated_at with the current time.
Before every update on a businesses row, stamps updated_at with the current time.
Before every update on an inventory_items row, stamps updated_at with the current time.
Before inserting a transaction whose receipt_number is null, assigns the next value from the receipt_seq sequence formatted as REC-NNNNNN.
After a transaction is inserted with status 'completed' and a linked client, recomputes that client's visit count, total spend and last-visit timestamp from all of the…
Appointment · migrations
Appointment status
Pending → Confirmed → Completed → Paid → Cancelled → No show
6 states · 8 transitions
Business · migrations
Business onboarding completion
Onboarding pending → Onboarding completed
2 states · 1 transitions
Computed from the model’s own connections, with the count behind each one.
How much of this product is built but unused?
15% of this product's API surface is dark: built and paid for, but part of no described customer path and consumed by no screen.
4 OF 26 ENDPOINTS · READ FROM 15 CUSTOMER PATHS DESCRIBED SO FAR
Where is it riskiest to make a change?
The riskiest place to change is “Shared & root”: more of the product depends on businesses than on anything else.
52 INBOUND DEPENDENCIES · COMPUTED FROM THE REACH GRAPH, NOT ESTIMATED
Where did the engineering effort actually go?
The deepest engineering investment is “lib” — 28% of the product's mass. “app” is compact and self-contained: the cheapest place to change.
66 VS 6 OBJECTS · CHANGE-COST RATING = SIZE × CROSS-DOMAIN COUPLING
Which customer experience breaks first?
The most fragile customer experience is “Business owner signup and onboarding”: it crosses 5 domains in 15 steps — the first place integration breaks.
INTEGRATION-TEST PRIORITY №1 · DOMAINS COUNTED PER PATH STEP
Ask the model your own question →How these answers were scored →
GitMir read the public repository and established what the product does: its areas, screens, actions, API routes, records, customer paths, status flows and rules, with every statement traceable to the source it came from. Nothing on this page is written by hand; it is the published model, as of 2026-09-23.
This page is a snapshot of the published model. On a connected repository the model is updated as commits land, so people and AI agents work from the product as it is now rather than as it was when somebody last wrote it down.
Yes — connect a repository and GitMir builds the same thing for it: features, rules, customer paths and how they connect, available to people on the screen and to coding agents over MCP.
Supabase Studio architecture →OpenAI Codex architecture →cal.com architecture →Atlas architecture →Warpdrive architecture →DroneOps Command architecture →Faktorio architecture →