A suite of generic banking products with testable features.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
hum3 fd3dc167a4 Migrate forge references from codeberg.org to git.bytestone.uk
Module path and self-referencing URLs now point at the new Forgejo
instance following the move off Codeberg.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-08 16:54:10 +02:00
.claude First pass products 2026-03-16 21:07:41 +00:00
.vscode Merge branch 'task/WTinit' 2026-03-16 21:12:32 +00:00
testdata Fix transaction directions and move interest logic to product layer 2026-03-25 21:40:39 +00:00
testkit Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
.gitignore fixing linter bug 2026-03-16 21:56:24 +00:00
account.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
api.md Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
catalog.go First pass products 2026-03-16 21:07:41 +00:00
catalog_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
CHANGELOG.md Update CHANGELOG for v0.1.6 2026-03-25 22:16:10 +00:00
clock.go First pass products 2026-03-16 21:07:41 +00:00
deposit.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
deposit_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
event.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
feature.go First pass products 2026-03-16 21:07:41 +00:00
features.md working on interest feature 2026-03-19 23:46:07 +00:00
go.mod Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
go.sum Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:54:10 +02:00
goluca_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
index.md Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
interest.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
interest.md working on interest feature 2026-03-19 23:46:07 +00:00
interest_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
isa.go First pass products 2026-03-16 21:07:41 +00:00
lifecycle.go First pass products 2026-03-16 21:07:41 +00:00
lifecycle_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
overdraft.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
parameter.go First pass products 2026-03-16 21:07:41 +00:00
product.go First pass products 2026-03-16 21:07:41 +00:00
products.md working on interest feature 2026-03-19 23:46:07 +00:00
README.md Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
repayment.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
ROADMAP.md First pass products 2026-03-16 21:07:41 +00:00
simulation.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
task-plus.yml adding documentation 2026-03-17 08:14:17 +00:00
Taskfile.yml working on interest feature 2026-03-19 23:46:07 +00:00
term.go First pass products 2026-03-16 21:07:41 +00:00
term_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
withdrawal.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00
withdrawal_test.go Migrate forge references from codeberg.org to git.bytestone.uk 2026-08-08 16:46:44 +02:00

gobank-products

Composable banking product library for Go. Products are built from independently testable features (interest accrual, deposits, withdrawals, term locks, etc.) driven by a simulation framework with controllable time and typed events.

Usage

import gbp "git.bytestone.uk/hum3/gobank-products"

sim, _ := gbp.NewSimulation(ledger, clock)
sim.RegisterProduct(gbp.EasyAccess())

ma, _ := sim.OpenAccount("easy-access", "Liability:Savings:alice", "GBP", -2, nil)
sim.Deposit(ma.Account.ID, 100000, equityID, "")
sim.AdvanceToDate(targetDate)

Product Catalog

Product Family Default Rate Features
Easy Access Savings 1.5% Deposit, Withdrawal, Interest, Lifecycle
Fixed Term Savings 4.0% Deposit, Term Lock, Interest, Lifecycle
ISA Savings 3.5% ISA Allowance, Deposit, Withdrawal, Interest, Lifecycle
Personal Loan Lending 6.9% Interest, Repayment, Lifecycle
Mortgage Lending 4.5% Interest, Repayment, Lifecycle
Overdraft Lending 15.9% Deposit, Overdraft Facility, Interest, Lifecycle