finacial page
All checks were successful
Deploy / build-deploy (push) Successful in 2m20s

This commit is contained in:
Jorijn van der Graaf 2026-08-14 02:50:58 +02:00
commit e68d2c245c
17 changed files with 1801 additions and 15 deletions

View file

@ -197,6 +197,32 @@ export const LegalPage& AboutPage() {
return page;
}
// The open-financials page's authored prose. The numbers themselves come from
// the order ledger and the bank-aggregates state file at render time; what is
// compiled in is the promise around them — what the page shows, what it never
// will, and how to read it. Kept in the LegalPage shape so it reuses that
// renderer's section markup and CSS, exactly as the about page does.
export const LegalPage& FinancialsPage() {
static const LegalPage page{
.slug = "financials",
.title = "Financials",
.updated = "2026-08-14",
.lede = "Catcrafts' money, in the open: running totals of what the company earns and spends, live from its own records. Aggregates only — individual transactions are never published.",
.sections = {
{ "How this page works",
{
"Sales come straight from the shop's order ledger and update the moment an order is paid. Donations and expenses are aggregated from the business bank account by category and carry the date they were last brought up to date. Anything the categoriser does not recognise is held back until it has been classified, never published as a guess.",
"Everything is a running total in euros on a cash basis: money counts when it moves, not when an invoice says it should. Amounts include VAT where VAT was charged. These are the company's own live numbers, not audited statements; the tax filings are the authoritative record.",
} },
{ "What is never published",
{
"No individual transactions, no timestamps, no counterparties, no account balances, and nothing about who paid or was paid. Totals only. One consequence is accepted openly: the totals update live, so someone watching the page closely could infer that a sale or a donation happened. That is as far as it goes.",
} },
},
};
return page;
}
export const std::vector<LegalPage>& LegalPages() {
static const std::vector<LegalPage> pages = {
{