Tabula is a client-only web personal finance/inventory app. Hosted on GitHub Pages.
Features:
- arbitrary customizable currencies
- multiple accounts (but not multiple users)
- multi-transfer transactions
- quick transactions input via keyboard shortcuts and quick-search
- data stays in your browser, see PRIVACY.md for details on data handling
- optional backup & sync via Google Drive
Transaction input tips (while the help is not implemented inside the app):
- date can be adjusted by using up/down arrows, or just start typing the date you want, the field mimics the insert mode
- use Tab to change fields
- to select an account / currency, start typing its name, press Enter to select it
- press Enter to add the transaction
(input is not super polished still, but it mostly does what is expected)
- JDK 21
- Node.js 22.x with
npm - Windows PowerShell for the commands below
If you use nvm-windows, activate the validated Node version first:
nvm use 22.14.0cd web-app
npm installcd web-app
npm run dev -- --host 127.0.0.1 --port 4173Then open http://127.0.0.1:4173.
cd web-app
npm run buildProduction output goes to web-app/dist/.
Install the Playwright browser once:
cd web-app
npx playwright install chromiumRun the suite:
npm run test:e2eThe E2E suite runs the real app and mocks only the Google Drive layer.
Repo-level build:
.\gradlew.bat buildWeb build:
cd web-app
npm run buildshared-core/ Portable business logic and presenters
shared-db/ SQLDelight schema, repositories, JS DB session
shared-bridge-web/ JS-facing Kotlin bridge
web-app/ React + TypeScript + Vite frontend
web-app/package-lock.jsonis committed intentionally.- Do not run
npm run build,npm run test:e2e, andnpm run build:kotlin-bridgein parallel. - The web app persists the browser DB locally and can cache the Google Drive access token in browser storage.