Skip to content

rolandcsosz/balanzo

Balanzo

CI License: MIT Tauri React

Balanzo Dashboard

Overview

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.

✨ Key Features

  • 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.

🛠️ Tech Stack

This project leverages a modern, type-safe architecture to ensure scalability and maintainability.

Frontend

  • 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

Backend

  • 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

DevOps & Infrastructure

  • Containerization: Docker & Docker Compose
  • CI/CD: GitHub Actions (E2E testing)
  • Testing: Playwright (E2E)

🚀 Getting Started

The easiest way to run Balanzo locally is using Docker Compose. This will start both the backend API and the frontend client.

Prerequisites

  • Docker installed and running.

Quick Start

  1. Clone the repository

    git clone https://github.com/rolandcsosz/balanzo.git
    cd balanzo
  2. Start the stack

    docker-compose -f backend/docker-compose.yml -f frontend/docker-compose.yml up -d
  3. Access the App

Manual Development Setup

If you wish to contribute or run services individually, please refer to the specific documentation:

💡 Engineering Highlights

Why TSOA?

I chose TSOA for the backend to ensure a Source of Truth architecture. By defining controllers and models in TypeScript, TSOA automatically generates:

  1. Express Routes (reducing boilerplate and runtime errors).
  2. OpenAPI (Swagger) Spec (ensuring documentation never drifts from code).
  3. Frontend SDKs (can be generated from the spec for full end-to-end type safety).

Why Tauri?

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.

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines and Code of Conduct for more details.

📄 License

This project is licensed under the MIT License.

About

A privacy-focused, cross-platform personal finance manager built with Tauri, React, and Node.js.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors