Open-source accounting & finance for contractors and small businesses.
Built for South Africa — invoicing, expenses, VAT, ledger, and bank statement imports.
Beta. Core invoicing, expenses, VAT, ledger, and bank reconciliation are usable for self-hosted books. Not financial or tax advice, not a 1.0 stability guarantee — evaluate carefully before production use. See SECURITY.md.
- Invoicing & estimates — clients, items catalog, recurring invoices, discounts, note templates, PDFs, payments, payment receipts, online pay links
- Expenses & suppliers — receipts, AI document fill, categories, VAT on purchases
- Travel — vehicles and a business/private trip log book (CSV export; smart AI import for fleet/GPS exports when AI is enabled); licence disc expiry with email reminder about one month before
- Accounting — chart of accounts, journal, general ledger, account statements
- Banking — import CSV/OFX statements, duplicate detection, match or exclude imported lines (including mixed personal/business accounts)
- Tax — VAT returns and rates (configure during setup wizard)
- Teams — multi-user companies via Jetstream
- Self-hosted — Docker Compose stack with Postgres, Redis, and MinIO included; sidebar shows the installed version and when a newer GitHub Release is available
Demo workspace — invoice, bank reconciliation, and profit & loss.
The fastest way to try nrth with the full stack:
curl -fsSL https://raw.githubusercontent.com/mortolian/nrth/master/scripts/install.sh | sudo bash -s -- --accept-data-riskOr from a clone: ./scripts/install.sh
Open https://localhost (with production Caddy) or set APP_ALLOW_HTTP=true for local HTTP on port 8000 — see docs/SELF_HOST.md.
Production checklist and HTTPS: docs/SELF_HOST.md · Flags and options: docs/INSTALL.md
For hacking on the codebase after cloning from git (not an end-user install path):
cp .env.example .env
composer install && php artisan key:generate && php artisan migrate
npm install && npm run dev
php artisan serve # second terminalDetails, Docker dev workflow, and tests: docs/DEVELOPMENT.md · How the app is structured: docs/ARCHITECTURE.md
| Guide | Description |
|---|---|
| docs/INSTALL.md | Installation hub |
| docs/UPGRADE.md | Tag-to-tag upgrades, backups, rollback |
| docs/SELF_HOST.md | HTTPS, multi-tenant hardening, instance backup & restore |
| docs/DEVELOPMENT.md | Local development |
| docs/ARCHITECTURE.md | Domains, actions, team scoping |
| docs/PERSONAL_SERVER.md | Maintainer-only personal dev server |
| docs/ROADMAP.md | Beta scope, plans, and out-of-scope items |
| docs/RELEASE.md | Automated releases and changelog |
| CHANGELOG.md | Release notes |
Contributions are welcome — issues, docs, and pull requests.
- Contributing guide
- Code of conduct
- Security policy — report vulnerabilities privately
Please search existing issues before opening a new one.
Laravel 13 · Jetstream (Inertia + Teams) · Vue 3 · Tailwind CSS v4 · PostgreSQL · Redis · Octane (Swoole) · Horizon
Domain logic lives under app/Domain/. See docs/ARCHITECTURE.md.
MIT — Copyright (c) nrth contributors.


