Personal Unified Ledger & Savings Engine
A privacy-focused, local-first personal finance application designed for automated transaction management and comprehensive financial analytics.
KontoPulse (or simply Pulse) is a modern financial tool built to bridge the gap between bank exports and actionable insights. Unlike cloud-based aggregators that require your credentials, Pulse runs entirely on your machine, ingesting standard CSV exports (currently optimized for mBank) to provide a unified view of your finances.
It solves the common problem of "fragmented money" by treating multiple physical bank accounts as a single logical cash pool, automatically detecting and filtering internal transfers so your analytics remain accurate.
The v0.1.0 MVP and frontend refactor milestones are complete. Ongoing work focuses on stabilization, test coverage, and incremental UX improvements. See CHANGELOG.md for the latest shipped features and docs/DECISIONS.md for architectural context.
- Privacy First: Your financial data never leaves your machine. Powered by a local SQLite database.
- Smart Import: Idempotent CSV ingestion with archived uploads, handling duplicates and overlaps safely.
- Unified Ledger: Owned accounts are grouped into a cash pool with internal transfers detected and linked.
- Categorization & Review:
- Rule-based categorization with priority ordering.
- Review queue for uncategorized or incomplete items.
- Manual overrides recorded in an audit change log.
- Split Transactions: Splits replace parent reporting while keeping immutable import truth.
- Investments & Taxes:
- Investment buckets with market value tracking and optional tax basis settings.
- Tax reserve accounting for monthly KPI accuracy.
- Internationalization: Fully localized interface available in English and Polish.
- Modern UX: Glassmorphism-driven UI with responsive layouts and loading states.
Built with performance and maintainability in mind:
- Framework:
Axum- High-performance async web framework. - Database:
SQLxwithSQLite- Type-safe, compile-time checked SQL queries. - Architecture: Modular service-oriented design with strict domain boundaries.
- Core:
Vite,React,TypeScript. - State/Data:
TanStack Queryfor robust server-state management. - Styling:
TailwindCSSwith a custom bespoke design system. - Testing:
Playwrightfor End-to-End verification.
- Rust (latest stable)
- Node.js & pnpm
- Just command runner (for workflow automation)
-
Clone the repository:
git clone https://github.com/ernest-gonzales/pulse.git cd pulse -
Install frontend dependencies:
just frontend-install
Backend dependencies are fetched automatically by Cargo on build/run.
-
Start the development environment:
just dev
Starts the backend on
http://127.0.0.1:3000and frontend onhttp://127.0.0.1:5175.
- Build the production assets:
just macos-package
- Install locally:
- Open
dist/macos/KontoPulse-macos-<version>.zip - Drag
KontoPulse.appinto/Applications - Launch
KontoPulse.app(openshttp://127.0.0.1:3000in your browser)
- Open
- Run the Release macOS workflow and select the version bump.
- The workflow bumps versions, updates
CHANGELOG.md, builds the macOS bundle, tags the commit, and creates a GitHub Release with the zip asset.
For developers and contributors, documentation is available:
- Architecture & Decisions: Architectural Decision Records (ADR).
- Changelog: Version history and updates.
- Agent Rules: Guidelines for AI assistant interactions.
Contributions are welcome! Please ensure you:
- Follow the established code style (checked via
just lint). - Add tests for new functionality.
- Update documentation where appropriate.
This project is licensed under the Apache License 2.0.