Overview
Discover what makes I Hate Money powerful
IhateMoney is a lightweight, self‑hosted web application focused on shared budgeting and bill settlement. At its core it records transactions, tracks ownership and consumption of goods or services, and automatically calculates balances between participants. The system is deliberately minimal: it uses only a handful of JavaScript libraries, keeps the codebase compact, and exposes a clean REST‑like API for programmatic interaction. This makes it ideal for developers who need a robust yet simple budgeting engine that can be embedded or extended without wrestling with heavy front‑end frameworks.
Backend
Front‑end
Containerization
Testing & CI
Overview
IhateMoney is a lightweight, self‑hosted web application focused on shared budgeting and bill settlement. At its core it records transactions, tracks ownership and consumption of goods or services, and automatically calculates balances between participants. The system is deliberately minimal: it uses only a handful of JavaScript libraries, keeps the codebase compact, and exposes a clean REST‑like API for programmatic interaction. This makes it ideal for developers who need a robust yet simple budgeting engine that can be embedded or extended without wrestling with heavy front‑end frameworks.
Architecture & Technical Stack
- Backend – Pure Python 3.8‑3.12, built on the Django web framework (v4+). Django’s ORM abstracts over four supported database back‑ends: SQLite, PostgreSQL, MariaDB (≥10.3.2), and an in‑memory variant for testing or light deployments.
- Front‑end – Vanilla JavaScript with minimal dependencies (no React/Vue). Templates are rendered server‑side using Django’s templating engine, which keeps the client payload small and improves initial load times.
- Containerization – A ready‑to‑use Docker image is available on Docker Hub (
ihatemoney/ihatemoney). The container exposes a single HTTP port and bundles the required Python runtime, making it trivial to spin up in Kubernetes, Docker‑Compose, or any OCI‑compatible environment. - Testing & CI – The project employs GitHub Actions for continuous integration, running unit tests against all supported databases and generating documentation coverage reports.
Core Capabilities & Developer API
- Transaction CRUD – Create, read, update, and delete transactions via HTTP endpoints (
/api/transactions). Each transaction includes payer, participants, amount, currency, and optional tags. - Balance Calculation – A background job (Celery‑free) recomputes per‑user balances on transaction changes, exposing a
/api/balancesendpoint that returns the net amount owed or due. - Export & Import – CSV and JSON import/export endpoints allow migration from other budgeting tools or integration with external accounting systems.
- Webhooks – Developers can register webhook URLs to receive asynchronous notifications whenever a transaction is added or updated, enabling real‑time integrations with chat apps, payment processors, or custom dashboards.
- Extensibility – The application follows Django’s app‑based architecture. New features can be added as separate Django apps, and existing models are exposed via the admin interface for rapid prototyping.
Deployment & Infrastructure
IhateMoney is designed for straightforward self‑hosting:
- Single‑node deployments run out of the box with SQLite or MariaDB. No cluster management is required for typical use cases.
- Horizontal scaling is supported via the Docker image: multiple replicas can share a common PostgreSQL or MariaDB instance, while Django’s session and cache layers can be backed by Redis for stateful sessions.
- Zero‑downtime updates are achievable with standard Docker rolling deployments; the application listens on a configurable port and reloads the WSGI server upon code changes.
- Resource footprint is modest—typically < 200 MiB of RAM and a single CPU core suffices for dozens of users, making it suitable for Raspberry Pi or cloud VPS instances.
Integration & Extensibility
The minimalistic design encourages integration:
- RESTful API – All CRUD operations are available over HTTP with JSON payloads, making it trivial to build mobile or desktop clients.
- OAuth2 – The optional Django‑Allauth integration allows external identity providers, which can be useful in corporate environments.
- Plugin System – By leveraging Django’s signal framework, developers can hook into transaction creation or balance updates without modifying the core codebase.
- Custom Themes – The templating system supports overriding static assets, enabling branded interfaces or mobile‑first designs.
Developer Experience
- Documentation – Comprehensive readthedocs coverage covers installation, API usage, and contribution guidelines. The docs are auto‑generated from docstrings, ensuring they stay in sync with the code.
- Community & Support – A dedicated mailing list and a public GitHub issue tracker provide timely feedback. The project’s BSD‑beerware license removes licensing friction, encouraging experimentation and redistribution.
- Testing – The test suite covers both ORM logic and API endpoints, giving confidence when extending or refactoring the codebase.
Use Cases
- Small‑team expense tracking – Companies or project groups can deploy IhateMoney to manage shared office supplies or travel costs.
- Family budgeting – Parents can track household purchases and automatically split bills among children or partners.
- Non‑profit grant accounting – Organizations can record donations, expenses, and reimbursements while maintaining transparent balances.
- Custom financial dashboards – Developers can embed the API into existing ERP or CRM systems, providing a lightweight budgeting layer without rewriting accounting logic.
Advantages Over Alternatives
- Simplicity – Fewer dependencies and a clear, server‑rendered UI mean fewer maintenance headaches compared to full‑stack frameworks.
- Performance – Lightweight front‑end and efficient Django ORM keep response times low even under moderate load.
- Licensing – The permissive BSD‑beerware license allows commercial use without royalties, unlike some GPL‑licensed budgeting tools.
- Extensibility – Django’s modular architecture makes it straightforward to add new features or integrate with third‑party services without altering the core.
In summary, IhateMoney offers a clean, well‑documented foundation for shared budgeting that can be rapidly deployed, easily extended, and comfortably maintained by developers who value simplicity, performance
Open SourceReady to get started?
Join the community and start self-hosting I Hate Money today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Noosfero
Self-hosted other
OpenCart
Free, open‑source eCommerce platform for online merchants
transfer.sh
Command-line file sharing made simple
linkding
Self‑hosted bookmark manager for minimal, fast organization
LibreServer
Run your own internet services, locally and freely
Strapi
Open-source headless CMS for modern developers