173,995 lines of source, 3,386 parts described, 4 areas and 28 customer paths. A self-hosted business suite: CRM, HR, invoices, projects. Every line on this page comes from the model — open it and check any of them.
| Area | Screens | Actions | API | Records | What it covers |
|---|---|---|---|---|---|
| server | 0 | 1,013 | 1,118 | 152 | Express API and background workers (packages/server): auth and tenancy, per-app routers, services and Drizzle schema, schedulers, the BullMQ sync… |
| client | 852 | 0 | 0 | 3 | React/Vite single-page app (packages/client): the app shell, auth pages, and the CRM, HR, Work, Invoices, Sign, Drive, Docs, Draw, Calendar and… |
| tables | 65 | 21 | 11 | 4 | Deprecated Tables spreadsheet app kept under legacy/tables: its AG Grid client, formula engine, and server CRUD for spreadsheets and row comments. |
| Shared & root | 0 | 1 | 0 | 65 | Shared workspace package (packages/shared) with domain types, enums, the RBAC permission matrix and validators used by both client and server, plus… |
28 paths are described in the model; the longest 12 are here, with how many areas each one crosses.
Owners upload a PDF, place signature and form fields, and generate per-recipient signing links, optionally in signing order. Signers open the public page, fill their…
The core billing loop: an invoice is drafted with numbered line items, sent by email with a PDF and portal link, viewed by the client in the portal, and settled through…
Deals are created in a pipeline stage, dragged across the kanban as they progress and closed as won or lost. Each step emits activity-feed events, notifies the assignee…
Connecting Google stores encrypted OAuth tokens and creates the user's Gmail channel. Starting sync enqueues calendar and Gmail full-sync jobs on the BullMQ worker.…
Salespeople move leads through the status pipeline, optionally enrich them with AI, and convert qualified leads into a contact, an optional company and a deal in a…
Salespeople draft a priced proposal, mark it sent and share its public link. The prospect accepts or declines on the public page, and acceptance creates a draft invoice…
Employees request leave for their own linked employee record and submit it. The manager is notified and approves or rejects from the approvals view, and the employee is…
Connects the tenant to the Paraşüt e-invoicing SaaS over OAuth, pushes Atlas invoices as Paraşüt sales invoices, and keeps payment status mirrored with a 10-minute…
Users write hierarchical rich-text pages with auto-save. Content changes re-derive page links and backlinks, users take version snapshots (the newest 50 are kept), and…
Users upload files into Drive within the tenant storage quota and share them either with teammates or through public links that can carry a password, an expiry and…
Staff design a branded lead form and embed it on their site. Visitors load the server-rendered form by token and submit it, which creates a 'new' CRM lead, notifies…
Employees record expenses against their own employee profile and submit them. Submission checks the expense policy and routes the claim to the manager or a fallback HR…
16 rules are described; each one watches a record and changes something else when it moves.
When a document's isArchived flag is set to true through an update, all of its descendant documents are recursively archived too (and unarchived on the reverse change).
Creating a CRM contact fires a fire-and-forget backfill that links previously synced inbound and outbound messages whose participants match the contact's email, and fans…
Deal creation, stage changes, won/lost marking, contact creation and activity logging each call executeWorkflows for the tenant. Every active workflow whose trigger and…
Replacing a Drive file's content first snapshots the current file as a version, unless the owner disabled auto-versioning on replace. Version history is then pruned…
Updating an employee compares the new values with the previous ones and records status flow timeline events: 'transferred' on department change, 'salary-change' on salary…
Creating an employee whose email matches a platform user links the employee to that user and grants HR viewer ('own' scope) permission when none exists. It then seeds…
Deleting an invoice line item that came from tracked time, or archiving the whole invoice, resets the linked project time entries to unbilled and unlocked and clears…
Each message ingested by Gmail sync, and each outbound message after a successful send, is matched to CRM contacts by participant handle, skipping the tenant blocklist…
Invoices · server
Invoice status
Draft → Sent → Viewed → Paid → Overdue → Waived
6 states · 10 transitions
Proposal · server
Proposal status
Draft → Sent → Viewed → Accepted → Declined → Expired
6 states · 3 transitions
CrmLead · server
CRM lead status
New → Contacted → Qualified → Converted → Lost
5 states · 8 transitions
HR Expenses · server
Expense status
Draft → Submitted → Approved → Refused → Paid
5 states · 10 transitions
HR Leave Applications · server
HR leave application status
Draft → Pending → Approved → Rejected → Cancelled
5 states · 5 transitions
SignatureDocument · server
Signature document status
Draft → Pending → Signed → Expired → Voided
5 states · 3 transitions
Computed from the model’s own connections, with the count behind each one.
How much of this product is built but unused?
49% of this product's API surface is dark: built and paid for, but part of no described customer path and consumed by no screen.
553 OF 1129 ENDPOINTS · READ FROM 28 CUSTOMER PATHS DESCRIBED SO FAR
Where is it riskiest to make a change?
The riskiest place to change is “server”: more of the product depends on User Settings than on anything else.
114 INBOUND DEPENDENCIES · COMPUTED FROM THE REACH GRAPH, NOT ESTIMATED
Where did the engineering effort actually go?
The deepest engineering investment is “server” — 70% of the product's mass. “Shared & root” is compact and self-contained: the cheapest place to change.
2359 VS 66 OBJECTS · CHANGE-COST RATING = SIZE × CROSS-DOMAIN COUPLING
Does the product lean on any one part?
One subsystem — db.bootstrap — alone carries 29 core objects. The product leans on it.
CONCENTRATION RISK · COUNTED FROM OWNERSHIP LINKS
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 →Warpdrive architecture →DroneOps Command architecture →Pronto architecture →Faktorio architecture →