Skip to content

Repository files navigation

English | 简体中文

yomi

A self-hosted personal ledger for people whose money lives in both the US and China: Alipay, WeChat Pay, ICBC and US bank statements in one list, shared costs split with friends, and your data on your own computer.

The Transactions page with demo data, dark theme

Status: v0.2.4, an early release used daily by its author.

Features

  • Statement imports for Alipay CSV, WeChat Pay xlsx, ICBC credit card PDF and SMS alerts, and Bank of America CSV. Every file is checked against its own totals before import, and every import can be undone.
  • No double counting. A payment that appears in Alipay and again on the card behind it is recorded once; re-importing a file adds only new rows.
  • CNY and USD side by side. Amounts keep their own currency and are never summed across currencies without a stated rate.
  • Split and settle. Tag rows with the people who share them, see what is open per person and currency, and send a clean statement as PDF, image or text with your payment QR codes.
  • Bank and brokerage sync through Plaid (with your own keys) and Interactive Brokers Flex.
  • Analysis and assets: spending by category for any period, monthly targets, net worth and holdings.
  • Quick entry and a bilingual UI: press ⌘K and type lunch 35 @Alex; English and Simplified Chinese, light and dark themes.

Quick start

Requirements:

  • Node.js 24 or newer
  • pnpm 10 (corepack enable picks the pinned version)
  • Git
  • macOS, Linux or Windows (WSL recommended)

No database server is needed.

git clone https://github.com/averatec0773/yomi.git
cd yomi
pnpm install
pnpm dev

Open http://localhost:7773. yomi creates its ledger in data/pglite/ (an embedded Postgres, nothing else to install). Then open Import and drop a statement file.

To look around with fictional data first:

pnpm demo:db
DATABASE_URL=data/demo-pglite pnpm dev

To update later: git pull && pnpm install && pnpm dev. Database upgrades run on start, after an automatic backup.

Configuration

Nothing is required. Bank and brokerage credentials are entered in Settings > Connections and stored encrypted. To manage settings as code instead, copy .env.example to .env.local; a value there wins over Settings. Every variable, the ledger location (DATABASE_URL, including a Postgres server) and the encryption key are described in guides/configuration.md.

Guides

Privacy

yomi is local-first: the ledger, backups and statement files stay on your computer, and there is no yomi server and no telemetry. It connects out only for features you use (Plaid, Interactive Brokers, and daily exchange rates from Frankfurter). Stored credentials are encrypted with AES-256-GCM using a key kept outside the repository; back that key up in a password manager. pnpm dev listens on your local network, so set YOMI_ACCESS_TOKEN before opening yomi from a phone or another computer (guide). Details: guides/configuration.md.

Contributing

Bug reports, new statement sources and fixes are welcome. Read CONTRIBUTING.md for setup, architecture and conventions. Outside contributions are accepted under a Contributor License Agreement that a bot asks you to sign on your first pull request. Never attach real statements or screenshots of real data to issues.

License

About

Local-first personal finance for a life across borders. Every account in one calm view, shared costs split fairly, and your data stays on your machine.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages