Spreadsheet-first editor to define input schemas (types + tables/columns) and calculation rules as JavaScript, then generate an end-user XLSX template, validate filled templates, and simulate results locally.
This project exists to help translate real-world tax logic (often maintained in spreadsheets) into code in an iterative, testable workflow.
- Define input types: parsing/formatting and optional entity references (FKs).
- Define tables & columns: model the workbook structure your end users will fill.
- Define rules (JS): executed top-to-bottom to produce computed outputs.
- Export two artifacts:
- Business-logic workbook (
.xlsx): types + columns + rules. - Template workbook (
.template.xlsx): end-user data entry workbook.
- Business-logic workbook (
- Validate + simulate: upload a filled template, validate it, then run the rule pipeline and inspect results.
- AI-assisted editing (optional): generate/edit types, tables, and rules through the UI (requires an API key).
- Create/open a business-logic workbook
- Edit:
InputTypesheet (types + parse/format JS)Columnsheet (tables + columns)Rulesheet (rule JS)
- Click Generate template XLSX
- Fill the template with test data in Excel/LibreOffice
- Upload it via Template + Simulation
- Click Validate + Run sim and review errors/results
- Node.js (recommended: current LTS)
- pnpm
pnpm install
pnpm devThen open the URL printed by the dev server.
pnpm test
pnpm test:uipnpm test: domain/unit tests (Node’s built-in test runner).pnpm test:ui: frontend “e2e-style” integration tests in JSDOM (no Playwright/Chrome required).
Some UI actions call Next.js API routes under app/api/ai/*.
Set:
export OPENAI_API_KEY="..."If OPENAI_API_KEY is missing, the AI endpoints will return an error and the rest of the app remains usable.
GPL-3.0. See LICENSE.md.