Builder's guide · Section 4

Decide before you build

A few business decisions shape the console more than any technical choice. Write them down first; a page of notes is enough.

The owner's worksheet

QuestionWhy it mattersExample (coffee roaster)
Which activities have an accounting consequence?These are the screens you need. Activities with no accounting effect stay in your own tools.Buying green coffee, roasting, selling wholesale and online, payroll summaries, equipment
Which companies are on the books?Each is a separate company in GAAPcore. Related companies can form a group for intercompany trade and consolidated statements.The roastery, plus a sister café that buys from it
Who uses the console, and in which roles?Roles are your console's, not GAAPcore's. Start with three: viewer, bookkeeper, administrator.Owner (administrator), bookkeeper, outside accountant (viewer)
Which actions need a second person?Approvals are your console's to enforce (section 10).Purchase orders over $5,000; any credit memo, write-off or refund
When do you go live?You start from opening balances on a cut-over date (section 12).Close of business on December 31
What other systems will write?Each gets its own writer and key, scoped to the companies it needs.Online store payouts; a bank feed
Where will it run?The operator runs PostgreSQL, the API and TLS (section 5).One small cloud server plus managed PostgreSQL

Keep the console general

Build screens around accounting objects (orders, receipts, bills, invoices, recipes, periods), not around one company's quirks. The reference console was built for a roaster, but nothing in it is specific to coffee: the roaster is only its data. A general console is easier to test, and easier to reuse when the business adds a second company or line of trade.

Choose a stack

Any language that speaks HTTP and JSON will do. The reference console uses React and Vite in the browser and a small TypeScript server built with Hono, plus its own PostgreSQL database for people and audit records. It generates typed API calls from GAAPcore's openapi.yaml. Use that combination unless you have a reason not to; it lets you copy patterns from the reference console directly.