gobank-products
Composable banking product library for Go. Products are built from independently testable features driven by a simulation engine with controllable time and typed events.
Pages
- Features -- composable building blocks and their permitted events
- Products -- product catalog, event dispatch matrix, and golden goluca files
- API -- simulation engine, parameter store, clock, and extension points
- Changelog
- Roadmap
Product Catalog
Savings
| Product | Default Rate | Features |
|---|---|---|
| Easy Access | 1.5% | Deposit, Withdrawal, Interest, Lifecycle |
| Fixed Term | 4.0% | Deposit, Term Lock, Withdrawal, Interest, Lifecycle |
| ISA | 3.5% | ISA Allowance, Deposit, Withdrawal, Interest, Lifecycle |
Lending
| Product | Default Rate | Features |
|---|---|---|
| Personal Loan | 6.9% | Deposit, Interest, Repayment, Lifecycle |
| Mortgage | 4.5% | Deposit, Interest, Repayment, Lifecycle |
| Overdraft | 15.9% | Deposit, Overdraft Facility, Interest, Lifecycle |
Architecture
Product = [Feature, Feature, ...]
| RegisterProduct
v
Simulation builds dispatch table: EventType -> []Feature
| Event occurs (deposit, EOD, etc.)
v
Features called in order -> first error stops dispatch
| Features interact with
v
SimContext: Simulation, ParameterStore, Clock, AsOfDate
| Features record via
v
Ledger (go-luca): double-entry movements, interest calculation
Products are pure data -- a name, family, list of features, and default parameters. Features are stateless handlers. All state lives in the ledger (balances, movements) and the parameter store (rates, dates, limits).
Links
- Documentation: h3-gobank-products.statichost.eu
- Source: codeberg.org/hum3/gobank-products
- Mirror: github.com/drummonds/gobank-products