Published model · 2026-09-23

Pronto architecture,
read from the code.

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.

In numbers

What the model holds.

20,340Lines of source read
238Parts described
7Areas
67Screens
114Actions
26API routes
19Records
48Services
15Customer paths
2Status flows
8Rules
4 of 26Endpoints on no described path
Areas

The 7 heaviest areas of 7.

AreaScreensActionsAPIRecordsWhat it covers
lib16500Shared server and client libraries: auth-user and business lookup, business provisioning, booking availability, email/Telegram/Viber/WhatsApp…
Shared & root321619Everything else: auth pages and server actions, onboarding, the public booking page, the edge proxy, Supabase client factories, UI primitives, i18n…
api025250Next.js API route handlers: public booking, booking-confirmation and low-stock notifications, the cron reminder job, inventory…
(dashboard)26000The authenticated back office: dashboard, booking calendar, CRM, POS terminal and history, inventory with sales analytics, and business settings.
migrations06010Supabase Postgres schema and its evolution: tenant tables, RLS helper functions, the double-booking trigger, receipt numbering, client-statistics…
app4200App-root shell: the marketing landing page, root layout, error and not-found pages, the generated sitemap and the Serwist service worker behind the…
es4000Spanish-language marketing pages: the landing page, industry page and pricing cards.
Customer paths

What a person walks through, step by step.

15 paths are described in the model; the longest 12 are here, with how many areas each one crosses.

Client books online21 steps · 4 areas

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…

Inventory stock keeping and low-stock alert15 steps · 4 areas

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…

Business owner signup and onboarding15 steps · 4 areas

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…

Scheduled reminders and client re-engagement12 steps · 3 areas

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…

Connect the Viber bot and opt clients in11 steps · 4 areas

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…

Business configuration10 steps · 4 areas

Configures the tenant: profile and logo, weekly hours with breaks (used by the public booking form and the server-side check), services, employees, notification…

CRM client management10 steps · 4 areas

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…

Owner sign-in and session gate10 steps · 3 areas

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…

POS checkout10 steps · 3 areas

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…

Staff manages bookings in the calendar10 steps · 3 areas

The back-office booking process: staff create manual bookings (confirmed, with a confirmation sent), reassign employees and move a booking through its statuses.

Connect the Telegram bot and opt clients in9 steps · 4 areas

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…

Inventory catalogue import and export8 steps · 2 areas

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…

Rules

What the product enforces on its own.

8 rules are described; each one watches a record and changes something else when it moves.

Booking confirmation on appointment creationwatches Appointment · reaches Client · Notification Log

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…

Stock movement updates quantity and may raise a low-stock alertwatches Inventory Movement · reaches Inventory Item · Business

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…

check_slot_availability / prevent_double_bookingwatches Appointment · reaches Appointment

Before every appointment insert or update, enforces capacity- and interval-overlap-aware double-booking prevention. Serializes concurrent attempts with a Postgres…

set_updated_at (appointments)watches Appointment · reaches Appointment

Before every update on an appointments row, stamps updated_at with the current time.

set_updated_at (businesses)watches Business · reaches Business

Before every update on a businesses row, stamps updated_at with the current time.

set_updated_at (inventory_items)watches Inventory Item · reaches Inventory Item

Before every update on an inventory_items row, stamps updated_at with the current time.

set_receipt_numberwatches Transaction · reaches Transaction

Before inserting a transaction whose receipt_number is null, assigns the next value from the receipt_seq sequence formatted as REC-NNNNNN.

update_client_statswatches Transaction · reaches Client · Client · Client

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…

Status flows

The states records move through.

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

What the model says about itself

Answers nobody wrote down.

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 →

Questions

About this model.

How was this Pronto architecture built?

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.

Is it current?

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.

Can I get this for my own repository?

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 →

Get this for your
own product.