FoundersOnly

One Postgres, one app container, 40k paying invoices a month. AMA about boring infra

#1

Rechnungsfuchs runs on the same shape as this forum: one app container, one Postgres, Coolify on a VPS. No Redis, no queue, no k8s. Monthly invoice run fans out inside the app with advisory locks and idempotency keys. P99 invoice render is 1.8s including PDF.

Things people told me would break that have not: the database (connections capped at 25, pooled, boring), deploys during the invoice run (migrations are backward compatible, always), backups (daily, restore-tested twice, once for real when I fat-fingered a where clause).

Things that actually hurt: a PDF font that rendered Ä as tofu on exactly one customer's machine, and German tax deadlines moving.

#2

This is the way. What is your connection setup? Pool size, statement timeouts, anything special?

#4

DATEV solidarity. Question: how do you handle the DATEV export format changing under you? It changed twice last year with no announcement I could find.

#6

Backward-compatible migrations always: what is your actual discipline? Expand/migrate/contract every time?

Your perspective belongs here.

Register to reply