🔒 The Private, Self-Hosted Alternative to Fintonic, Mint & YNAB
Take control of your financial data. No cloud, no tracking, no compromises.
🎮 Try the live demo → — interactive preview with placeholder data, no install needed.
Demo • Features • Screenshots • Quick Start • Docker • Development • License
Unlike Fintonic, Mint, or other cloud-based finance apps that monetize your data, Happy Balance runs entirely on your own infrastructure. Your financial data never leaves your control.
| Feature | Happy Balance | Fintonic | Mint | YNAB |
|---|---|---|---|---|
| 🔒 Self-Hosted | ✅ | ❌ | ❌ | ❌ |
| 🕵️ Zero Tracking | ✅ | ❌ | ❌ | ❌ |
| 💰 Free Forever | ✅ | Freemium | Ads | Paid |
| 🌐 Open Source | ✅ | ❌ | ❌ | ❌ |
| 🏠 Data Ownership | 100% Yours | Their Servers | Their Servers | Their Servers |
| 🚫 No Ads | ✅ | ❌ | ❌ | ✅ |
Happy Balance is an open-source personal finance tracker designed with simplicity and privacy in mind. Track expenses, manage budgets, and gain insights into your financial habits without compromising your data privacy.
- Privacy First: Your data stays yours - self-hosted solution
- Minimalist Design: Clean, distraction-free interface
- No Tracking: Zero telemetry, zero external analytics
- Open Source: Transparent, auditable, and community-driven
- 📊 Expense Tracking - Categorize and track all your expenses
- 📈 Visual Analytics - Beautiful charts and insights
- 🏷️ Smart Categorization - AI-powered transaction categorization
- 💱 Multi-Currency - Support for multiple currencies
- 🌐 Multi-Language - English and Spanish support
- 🌙 Dark Mode - Eye-friendly dark theme
- 📱 Responsive - Works on desktop, tablet, and mobile
- 🔐 JWT Authentication - Secure user sessions
- 👥 Multi-User Support - Role-based access control (Admin, User, Viewer)
- 📁 CSV Import - Import transactions from your bank (N26 compatible)
- 🔄 Real-time Updates - Instant UI updates
- 🐳 Docker Ready - Easy deployment with Docker Compose
- 🚀 High Performance - Built with SvelteKit and TypeScript
Happy Balance currently supports CSV import from:
- N26 - Full support for N26 CSV export format
- Generic CSV - Customizable import for other banks
Want support for your bank? Create an issue with a sample CSV format (with dummy data) and we'll implement it!
Track your income, expenses, and financial health at a glance
Categorize and track every expense with powerful filtering
Organize your expenses with customizable categories
Manage your finances on the go
Customize your experience with comprehensive settings
# Clone the repo
git clone https://github.com/alcibiadesc/happy-balance.git
cd happy-balance
# Start everything with one command
docker-compose up -dAccess at: http://localhost:5173
- Username:
admin - Password:
admin123
That's it! 🎉 Everything is automatically configured.
# Clone the repository
git clone https://github.com/alcibiadesc/happy-balance.git
cd happy-balance
# Install dependencies
pnpm install
cd backend && pnpm install
# Setup database
npx prisma migrate dev
# Start development
pnpm dev # Frontend on :5173
cd backend && pnpm dev # Backend on :3004
frontend:
build: .
environment:
VITE_API_URL: http://localhost:3004/api
ports:
- "5173:5173"- Create a new stack in Portainer
- Use the repository URL:
https://github.com/alcibiadesc/happy-balance.git - Set the compose path to
docker-compose.yml - Configure environment variables
- Deploy the stack
Frontend:
- SvelteKit 2.0
- TypeScript 5.0
- Vite
- TailwindCSS (via custom CSS variables)
Backend:
- Node.js + Express
- Prisma ORM
- PostgreSQL
- JWT Authentication
happy-balance/
├── src/ # Frontend (SvelteKit)
│ ├── lib/ # Components and utilities
│ ├── routes/ # SvelteKit routes
│ └── app.html # HTML template
├── backend/ # Backend API
│ ├── src/
│ │ ├── domain/ # Business logic
│ │ ├── infrastructure/# Database, external services
│ │ └── application/ # Use cases
│ └── prisma/ # Database schema
├── docker-compose.yml # Docker configuration
└── package.json # Frontend dependencies
# Frontend
pnpm dev # Start dev server
pnpm build # Build for production
pnpm preview # Preview production build
pnpm lint # Run linter
pnpm format # Format code
# Backend
cd backend
pnpm dev # Start dev server
pnpm build # Build TypeScript
pnpm start # Start production server
pnpm db:migrate # Run migrations
pnpm db:seed # Seed databaseCreate a .env file in the root:
# Backend
DATABASE_URL=postgresql://user:pass@localhost:5432/happy_balance
JWT_ACCESS_SECRET=your-secret-key-min-32-chars
JWT_REFRESH_SECRET=another-secret-key-min-32-chars
ADMIN_USERNAME=admin
ADMIN_PASSWORD=secure_password
# Frontend
VITE_API_URL=http://localhost:3004/apiWe welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Please read our Code of Conduct before contributing.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- ✅ You can use this software for personal and commercial purposes
- ✅ You can modify and distribute the software
⚠️ Any modifications must be released under GPLv3⚠️ If you distribute this software, you must provide the source code- 💼 For commercial licensing options, please contact us
- No telemetry or tracking
- All data stored locally or on your server
- Encrypted passwords (bcrypt)
- JWT tokens for authentication
- CORS protection
- SQL injection prevention (Prisma ORM)
Found a security issue? Please open a security issue on GitHub.
- Enhanced transaction categorization
- Advanced reporting and insights
- Data export in multiple formats
- Multi-workspace support
- Advanced budgeting rules
- Built with SvelteKit
- Database ORM by Prisma
- Icons by Lucide
- Inspired by minimalist design principles
This is an experimental project under active development. It may contain bugs and is not recommended for production use without thorough testing. Use at your own risk.
Made for the open-source community



