The BEAU building blocks, shared by Oolala's products. Private.
| Package | What it is | First host |
|---|---|---|
packages/ph |
BEAU PH — the payment hub: one contract for every payment rail (Stripe, PayPal, Wise, Aani, bank transfer, cash, SoftPOS handoff, M-PESA / Paynow / Ozow / PayShap boundaries), BEAU FX, and the beau_ph Postgres schema that holds requests, attempts, events and reconciliation. |
Coach Gari |
packages/facture |
FactureX — e-invoicing core: Factur-X (EN 16931) generation, PDF/A-3, provider contract for approved platforms (iopole, B2Brouter), inbound ingestion. | SILLON |
The two packages do not depend on each other. Linking a payment to an invoice is a host's job, written in the product that uses both.
State and next steps: ROADMAP.md.
- Code — TypeScript that runs unchanged in Deno (Supabase Edge Functions), Node 22+ and the browser. A host imports it; nothing is compiled here.
- Database — BEAU PH is a module installed into each host's database, not a
central service: its migrations live in
packages/ph/sql/migrationsand keep their own version ledger (beau_ph.schema_versions), apart from the host's. Seepackages/ph/sql/README.md.
- A host goes through a package's public surface (its contracts, its SQL functions), never into its tables or internals.
- Nothing secret is ever committed: keys live in the host's deployment secrets.
- Every change keeps both suites green:
npm test(TypeScript) andnpm run test:ph:db(schema rebuilt from migrations + contract suite).
npm test # TypeScript, no network
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres npm run test:ph:db # a THROWAWAY Postgres