尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Management accounts and three-statement forecasts for small businesses, straight from Xero.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Management accounts and three-statement forecasts for small businesses, straight from Xero or a CSV file.
Ledgerline reads a company's Xero ledger, builds its profit and loss, balance sheet and cash flow by month, checks every account against Xero's own reports to the cent, and runs a driver-based three-statement forecast with branchable scenarios, uncertainty bands and a sensitivity analysis. A board pack drafts commentary with an LLM that is only allowed to cite figures Ledgerline computed.
apps/engine Python finance engine (FastAPI): Xero I/O, statements, forecast, reconciliation, commentary
apps/web Next.js app and landing page, with the Convex backend in apps/web/convex
packages/ui The Ledgerline design system: tokens, 76 components and charts, 65 icons
docs Architecture, setup and decisions
| Area | What it does |
|---|---|
| Xero sync | OAuth 2.0 with PKCE, encrypted tokens, a retryable Convex state machine (accounts → journals → invoices → reports → reconcile), one page per step, idempotent by Xero journal ID, rate-limit back-off, Demo Company reset detection, signature-checked webhooks, nightly sync |
| CSV import | A chart of accounts and a journal listing from any system, checked in the browser (types, unknown accounts, impossible dates, unbalanced journals, with row numbers) and stored through the same code as a Xero sync; a one-click sample company (Kestrel Joinery Ltd: five years, about 2,400 journals, with customers and suppliers named on every line) |
| Statements | P&L, balance sheet and indirect cash flow from monthly account movements, each asserting its own integrity (the balance sheet balances, the cash flow closes to the bank) |
| Reconciliation | Every account compared with Xero's Profit and Loss and Balance Sheet reports, month by month |
| Forecast | Three statements per month from drivers (growth, margin, overheads, hires, debtor/creditor/stock days, capex, loans, equity, tax); refuses to run if assets − liabilities ≠ equity; runway, P10–P90 bands, tornado sensitivity |
| Scenarios | Branches that store only their changes, inherited along a parent chain like Git branches; forecasts cached by the hash of every input |
| Board pack | Commentary drafted through OpenRouter with structured output; a validator rejects any number that isn't a citation; a person accepts it before export |
| Exports | Every report as CSV for spreadsheets; any page as one self-contained HTML file with its charts as SVG and the fonts embedded; the ledger and chart of accounts in the import format, so a file round-trips |
| App | Overview, P&L with drill-down to journal lines, balance sheet, cash flow, forecast, scenarios, board pack, sync, ledger, audit log, team settings |
| Landing page | Built from live design-system components, including a working runway what-if |
ruff lint and format.convex-test tests for organisation scoping, roles, idempotent journal storage, drill-down
isolation, scenario inheritance, forecast caching with signed engine calls, and webhook signatures.cd apps/engine && .venv/bin/pytest # engine
cd apps/web && npx vitest run # Convex functions and helpers
npm run typecheck # all TypeScript
npm run lint # ESLint for the web app
You need Node 20+, Python 3.12+, a free Clerk application, a free Xero developer app, and optionally an OpenRouter key. docs/setup.md has every step; the short version:
npm install
# 1. Finance engine
cd apps/engine
python3 -m venv .venv && .venv/bin/pip install -e ".[dev]"
cp .env.example .env # fill in LL_ENGINE_SECRET and the Xero keys
.venv/bin/uvicorn ledgerline_engine.api:app --reload --port 8000
# or: docker compose up engine
# 2. Convex backend (in another terminal)
cd apps/web
npx convex dev # creates a deployment and writes .env.local
npx convex env set LL_ENGINE_URL http://localhost:8000 # plus the variables in .env.example
# 3. Web app
cp .env.example .env.local # add the Clerk keys
npm run dev
The landing page runs with no configuration at all; the app pages explain what's missing until Clerk and Convex are set up. To try it without your own books, load the sample company or connect Xero's free Demo Company.
The interface is built from packages/ui, the Ledgerline design system: emerald for actuals, indigo and
hatching for forecasts, Instrument Serif for the figures that matter, Geist and Geist Mono for the rest, and
accounting conventions throughout (negatives in parentheses, double rules under totals). Screens are composed
on one sheet with hairlines rather than as loose cards.
See docs/architecture.md: system context, the sync state machine, the data model, the forecast maths, security and testing. Key decisions are in docs/decisions.md.
MIT