Balanzo is a modern, privacy-focused personal finance manager designed to give you complete control over your financial data. Built as a cross-platform application using Tauri, it combines the performance of a native desktop app with the flexibility of a modern web stack.
Unlike cloud-only solutions, Balanzo prioritizes your data ownership while providing a seamless experience across devices through its Progressive Web App (PWA) capabilities. It features intuitive expense tracking, detailed visual analytics, and a robust self-hostable backend.
- Cross-Platform Native Experience: Built with Tauri, delivering a lightweight, fast, and secure desktop application for Windows, macOS, and Linux.
- Progressive Web App (PWA): Access your finances from any browser with full offline support and installability.
- Rich Data Visualization: Interactive charts and graphs powered by Plotly.js to visualize spending habits and income streams.
- Secure & Private: Self-hostable backend ensures your financial data stays with you.
- Robust API: Fully typed REST API with Swagger documentation for easy integration and extension.
This project leverages a modern, type-safe architecture to ensure scalability and maintainability.
- Framework: React (via Vite)
- Desktop Engine: Tauri (Rust-based lightweight wrapper)
- State Management & Querying: TanStack Query
- Styling: SCSS / CSS Modules
- Visualization: Plotly.js / React-Plotly
- Runtime: Node.js
- Framework: Express.js
- Database: PostgreSQL
- ORM: Prisma
- API Design: TSOA (TypeScript OpenAPI) for auto-generating Swagger specs and routes.
- Authentication: JWT & BCrypt
- Containerization: Docker & Docker Compose
- CI/CD: GitHub Actions (E2E testing)
- Testing: Playwright (E2E)
The easiest way to run Balanzo locally is using Docker Compose. This will start both the backend API and the frontend client.
- Docker installed and running.
-
Clone the repository
git clone https://github.com/rolandcsosz/balanzo.git cd balanzo -
Start the stack
docker-compose -f backend/docker-compose.yml -f frontend/docker-compose.yml up -d
-
Access the App
- Frontend: http://localhost:5173 (or the port specified in docker-compose)
- API Documentation: http://localhost:3000/docs
If you wish to contribute or run services individually, please refer to the specific documentation:
I chose TSOA for the backend to ensure a Source of Truth architecture. By defining controllers and models in TypeScript, TSOA automatically generates:
- Express Routes (reducing boilerplate and runtime errors).
- OpenAPI (Swagger) Spec (ensuring documentation never drifts from code).
- Frontend SDKs (can be generated from the spec for full end-to-end type safety).
Tauri allows Balanzo to be an incredibly small (<10MB) native application compared to Electron alternatives, while interacting securely with the underlying OS. This aligns with the goal of keeping the app lightweight and performant on user machines.
We welcome contributions! Please see our Contributing Guidelines and Code of Conduct for more details.
This project is licensed under the MIT License.
