Oursum

April 12, 2026 · View on GitHub

Oursum is a personal expense tracker desktop application built with Electrobun, React, and SQLite. It runs natively on macOS and Windows and is designed to be fast, private, and offline-first.

Have a look at the landing page.

Contribute to Oursum by opening issues and submitting pull requests, or support development with a tip on Ko-fi.


Features

  • Import expenses from CSV and Excel files
  • Automatic deduplication of transactions
  • Flexible rule-based categorisation
  • Split transaction support
  • Localised date/currency parsing (multi-language)
  • Persistent storage via SQLite (no cloud required)
  • Keyboard-driven UI with command palette

Requirements

  • macOS 13+ (Apple Silicon or Intel x64) or Windows 10/11 (x64)
  • Bun ≥ 1.x

Getting Started

# Install dependencies
bun install

# Start in development mode (with hot-reload)
bun run dev

# Start with Vite HMR
bun run dev:hmr

# Build a production bundle
bun run build

# Build a distributable DMG
bun run dmg

Project Structure

src/
  core/       # Business logic: parsers, importers, dedup, rules, split
  renderer/   # React UI: components, hooks, store, context
  main/       # Electrobun main process & IPC handlers
  shared/     # Shared types and utilities
  types/      # Global TypeScript type definitions
e2e/          # Playwright end-to-end tests
scripts/      # Build and utility scripts
data/         # Test fixture data

Testing

# Unit tests
bun test src/core/

# End-to-end tests
bun run test:e2e

Linting

bun run lint        # ESLint
bun run lint:types  # TypeScript type check

Support

If Oursum is useful to you, you can support development with a tip on Ko-fi.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md before submitting a pull request, and follow the Code of Conduct.

License

Oursum is licensed under the GNU General Public License v3.0.