ReQu is an open-source, cloud-based accounting and bookkeeping platform built for freelancers, SMBs, and multi-branch service businesses. It combines core features from tools like QuickBooks Online, Xero, Zoho Books, and Wave into a lightweight, self-hostable system — with Philippine SMB workflows (BIR compliance, multi-branch operations, supplier/PO tracking) as a first-class use case.
Status: early development. The double-entry engine, invoicing, payments, multi-branch RBAC and financial statements are built and working. Inventory, bank reconciliation and payroll are designed in the schema and return
501 Not Implementedat the API boundary. See the roadmap.
Most cloud accounting platforms are either:
- Built for Western enterprise workflows and awkwardly adapted for local (PH) tax and compliance needs, or
- Locked behind subscription tiers that price out freelancers and small shops.
ReQu aims to be a free, open, self-hostable alternative that stays usable for a solo freelancer but scales to an 8-branch operation.
- Double-entry ledger engine — balanced journal entries, immutable posting, reversal-based corrections, fiscal period locking
- Chart of accounts — Philippine SMB default, fully customisable, with protected system accounts
- Invoicing — draft → issue → void, per-line VAT, BIR document numbering per branch
- Payments — partial payments, one payment across many invoices, unapplied credits, withholding tax
- Multi-branch & multi-user — five roles, per-branch access overrides, consolidated or branch-scoped views
- Reporting — P&L, Balance Sheet, Trial Balance, AR aging, sales by branch/item/customer
- Audit trail — every mutation logged; posted history cannot be edited
- v1.1 — vendor bills with approvals, expense capture + OCR, CSV bank reconciliation, PDF invoices, BIR VAT export
- v1.2 — purchase orders, goods receipt, inventory adjustments and transfers, FIFO costing, landed cost
- v1.3 — recurring invoices, payment reminders, client portal, time tracking → invoice
- v2 — payroll-lite (SSS / PhilHealth / Pag-IBIG), multi-currency revaluation, public API + webhooks, PWA
| Layer | Choice |
|---|---|
| Frontend | React 18 + TypeScript, Tailwind CSS, Vite, TanStack Query |
| Backend | Node.js + Express + TypeScript |
| Database | PostgreSQL + Prisma |
| Auth | JWT access tokens + rotating refresh tokens, role-based access control |
| Money | decimal.js in the app, numeric(18,4) in the database — never floats |
| Hosting (suggested) | Vercel (frontend), Railway/Supabase/Neon (backend + DB) |
git clone https://github.com/HarvzReQu/ReQu.git
cd ReQu
npm install
cp .env.example .env # set DATABASE_URL and two JWT secrets
npm run db:generate
npm run migrate
npm run db:seed # demo org, PH chart of accounts, tax codes
npm run dev # api :4000 · web :5173Sign in with owner@requ.local / requ-dev-password. Full instructions in docs/setup.md.
| Doc | What's in it |
|---|---|
| docs/setup.md | Install, commands, smoke test, troubleshooting |
| docs/schema.md | Data model, design rules, the ledger invariant |
| docs/api.md | Route reference, conventions, error codes, worked example |
| docs/architecture.md | Folder structure, key decisions, request lifecycle |
| docs/roadmap.md | What ships in v1 vs later, and why in that order |
| docs/deployment.md | Deploying to Vercel + Render + Neon |
ReQu/
├── apps/
│ ├── api/ # Express + TypeScript API
│ └── web/ # React + Vite frontend
├── packages/
│ ├── db/ # Prisma schema, migrations, seed
│ └── shared/ # Money/tax math, permissions, Zod contracts (used by both apps)
├── docs/
└── README.md
The money and tax math lives in packages/shared and is imported by both the API and the web app, so the total displayed in the browser and the total posted to the ledger are computed by the same code.
Three pieces: the frontend on Vercel, the API on Render or Railway, Postgres on Neon. The API is a long-lived Express process, so it wants an always-on host rather than serverless functions.
The repo ships render.yaml (blueprint for the API + database) and apps/web/vercel.json (SPA rewrites and asset caching). Step-by-step in docs/deployment.md.
ReQu is meant to be built with the community, not just for it. Contributions, issues, and feature requests are welcome.
- Fork the repo
- Create a feature branch (
git checkout -b feature/invoicing-templates) - Commit your changes
- Open a pull request with a clear description
See CONTRIBUTING.md for coding conventions and setup details.
One rule above all others: anything that touches the ledger goes through postJournalEntry(). Balance validation, period locking and audit logging live there and nowhere else.
MIT — free to use, modify, and distribute. See LICENSE.
Built by Harvey (HarvzReQu) — Data Analyst / Sales Manager based in Ozamiz City, Philippines. Feedback and collaborators welcome.