Project Plan & Status · updated 2026-08-07
Ratecenter is a ground-up, open-source successor to Freeside, the Perl/Mason billing platform for ISPs, WISPs, VoIP and hosting providers. Freeside 4.x is ~250k lines of core Perl over 306+ database tables and is effectively unmaintained (last upstream commit July 2024). Our primary goal: a fully operational billing system that existing Freeside deployments — starting with our own — can migrate to safely and fully accurately. Read the full design specification.
The accuracy guarantee is engineered, not promised: from Phase 3 onward, CI imports a production snapshot, re-runs historical billing cycles, and diffs every generated invoice line against the real historical ones. A commit that changes an invoice by one cent fails the build.
| Decision | Choice |
|---|---|
| Stack | Go API + React/TypeScript UI + PostgreSQL — modular monolith, one self-hostable binary with the UI embedded |
| License | MIT, with a strict clean-room rule: Freeside (AGPL) code is a behavioral reference only, never ported |
| Migration | Clean new schema + one-way importer from Freeside 4.x, grown and tested continuously from Phase 1 |
| V1 scope | Billing core, CRM, payments, tax, CDR rating, provisioning, customer portal, multi-company, RT integration, importer |
| Ticketing | Integrate the existing RT server — not rebuilt |
| UI | Modern feel, familiar structure: Freeside's menu tree and workflows preserved, no staff retraining |
| Reports | Async + streaming from v1 (no frozen pages); deep SQL optimization deferred deliberately |
| Branding | Neutral product name; Fibernetics credited as creator and flagship production user |
| Phase | Scope | Status |
|---|---|---|
| 0 · Archaeology & harness | Legacy code index, production usage inventory, Freeside 4.2 reference instance, invoice-diff harness, repo + CI + guardrails, UI structure contract | IN PROGRESS |
| 1 · Catalog & party | Packages/pricing/tax classes; customers/contacts/locations/agents; importer v1; first staff screens | PENDING |
| 2 · Package lifecycle | Order/suspend/cancel/change state machine; event framework; importer v2 | PENDING |
| 3 · Billing engine | Billing runs, proration, invoices, tax, credits/voids; importer v3; golden CI gate on, permanently | PENDING |
| 4 · Payments & collections | Gateway interface + drivers we use + Stripe reference; dunning; refunds | PENDING |
| 5 · Provisioning | Export framework; RADIUS/LDAP/DNS/SSH drivers + what inventory says we need | PENDING |
| 6 · CDR & rating | CDR import + rating engine → invoices | PENDING |
| 7 · Portal & RT | Customer self-service; RT integration | PENDING |
| 8 · Cutover kit | Dry-run, reconciliation, rollback, runbook — safe migration for any Freeside shop | PENDING |
mosaic-cloud-systems/ratecenter, CI green — done, reviewedEach phase runs a full spec → plan → implement → review cycle with fresh-context subagents per task and human review gates. Vertical slices: every phase ends with working software, and the Freeside importer grows with every phase rather than being a big bang at the end. All money math is developed test-first; floats are banned from money paths by CI.