About this project
finPal is an open-source, self-hosted personal finance application described by its maintainers as "privacy-first financial management" with no tracking, no data selling and no subscription for the self-hosted edition. The project is published under AGPL-3.0, and the README is explicit that it is in major active development: features, APIs and the database schema are changing frequently, so backups before upgrades are advised.
Problem it targets
It is framed around the everyday question of where money went during a month.
Evidenced features
- Expense tracking with auto-categorization and transaction rules that adapt to your patterns.
- Budgets with real-time tracking and alerts intended to fire before overspending.
- Shared-cost splitting for a household, including who owes whom.
- Investments tracked across portfolios, with automatic price updates.
- Bank sync through SimpleFin, or CSV import from a watched folder that imports statements automatically.
- Multi-currency and multi-account support, plus dark mode.
- An optional credit-card rewards module called pointsPal.
- Personal access tokens for scripts and local LLMs, documented with their scopes.
Install and operation
The README gives a three-command Docker Compose quick start: clone the repository, run scripts/setup-env.sh to write a .env with generated secrets, then docker compose up -d. Prebuilt images are pulled, so nothing is built locally. The default port is 80 and can be changed with HTTP_PORT in .env. The first account to sign up becomes the admin. The setup script generates real secrets, and the application refuses to start with the change_me_* placeholder values shown in .env.example, since those are public in the repository and could be used to forge sessions.
Upgrades are done by pulling new images and restarting. Schema handling is a documented topic: previously the schema was built from models at boot, which created missing tables but never added columns to existing tables, leaving long-running instances without newer columns and causing failing queries. Boot now reconciles the schema automatically, additively only, adding missing nullable columns and widening columns narrower than the model expects; it never drops, renames, narrows or retypes. Applied statements are logged and can be inspected with docker logs finpal-backend. Automatic reconciliation can be disabled with SCHEMA_AUTO_RECONCILE=false, after which a read-only script, scripts/schema_drift.py, prints the exact statements needed. The documented exception is a NOT NULL column without a default, which cannot be added to a populated table and is left for a migration with a backfill.
Documentation and community
The repository links guides for installation, environment variables, architecture and system requirements, API tokens, CSV folder import, SimpleFin, pointsPal, testing and licensing, plus a contributing guide that states pull requests need approval from two palStack developers with review typically taking 24 to 48 hours. A live demo is available without installing anything.
Hosting and roadmap
Self-hosting is available now with full features and is free. Managed hosting for a subscription is described as coming soon. A React Native mobile app for iOS and Android is in active development, targeted at biometric login and offline sync, while the backend and web UI are described as ready today. finPal acknowledges its origin in the debt tracker Dollar Dollar Bill Y'all.
Licensing note
The application code is AGPL-3.0, meaning it can be self-hosted, modified and shared; running a modified version as a network service carries the expectation of publishing changes. Managed hosting (finPal Premium) is described as a separate proprietary offering that does not alter the repository's licensing.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.