A simple, open-source budgeting app built with React, TypeScript, and Supabase. Track expenses, share budgets, and manage your money.
simpleBudget is a free, open-source alternative to EveryDollar and YNAB for personal budgeting. It's a mobile-first progressive web app (PWA) you can install on iOS, Android, or desktop — or self-host with Docker.
Built for people who want a straightforward way to manage their money without subscriptions or ads.
- Multiple budgets — Create and switch between separate budgets
- Sections & categories — Organize spending however you want
- Transaction tracking — Log income and expenses with split-transaction support
- Budget sharing — Share budgets with other users via QR code
- Analytics — Pie charts for income and expense breakdown
- Copy budgets — Duplicate a month's budget outline to another month
- CSV export — Download your data anytime
- Notifications — Daily browser reminders for upcoming transactions
- Dark & light mode — Respects your preference
- Offline support — Works without internet, syncs when reconnected
- Installable PWA — Add to home screen on any device
- Self-hostable — Run on your own server via simplesuite-selfhost
| Budget page | Transactions | Search transactions |
|---|---|---|
![]() |
![]() |
![]() |
| Edit category | Category helpers | View category (expense) |
|---|---|---|
![]() |
![]() |
![]() |
| Budget vs Spent | Expense distribution | Income distribution |
|---|---|---|
![]() |
![]() |
![]() |
| Share budget | QR code | Export CSV |
|---|---|---|
![]() |
![]() |
![]() |
Your data is protected by RLS policies within Supabase. Only you and those you share it with can view it.
Your data will never be sold, marketed, given away, whatever. It STAYS in simpleTracker and will never leave. If you are extra concerned about data privacy / security, please self-host the backend - and the front end if you want.
This has thus far been a solo project. I started this in 2022 and using all traditional development. I have only used AI for some small features this year. 95% of the code was written by me.
I did NOT make this to make money. Hear me - I made this to have an easy to use budgeting app.
The subscription model is ONLY there to cover hosting fees from supabase and vercel. If you self-host the backend, everything is free - FOREVER.
I really like a few of the big budgeting apps (EveryDollar and YNAB specifically) but everything I've tried is either too complicated for me to keep up with, or too simple to be functional. I also want full control of my data. And I don't have the discipline for the bank-connected apps to actually help me - I want it manual.
So, I took my favorite budgeting apps, pared them down, smooshed them together, and tried to keep it simple. I call it simpleBudget.
From there, I went through and added some nice-to-have features.
You may notice there aren't any issues in here. Feel free to add some if you wish. I just typically keep my list elsewhere. If people start actually using this, I will transfer to issues for tracking.
- EveryDollar
- YNAB (You Need a Budget)
- Mint
- Goodbudget
- Copilot Money
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite |
| UI | MUI 7 (Material UI) |
| State | Zustand |
| Backend | Supabase (auth, database, real-time) |
| Routing | react-router-dom v7 |
| PWA | vite-plugin-pwa |
| Testing | Vitest |
| Deployment | Vercel |
# Clone the repo
git clone https://github.com/simplesuite/simplebudget.git
cd simplebudget
# Install dependencies
npm install
# Start dev server (http://localhost:3000)
npm run devTo self-host simpleBudget (along with the other simpleSuite apps and the Supabase backend), see the simplesuite-selfhost repository. It has everything needed to run each frontend and the backend on your own infrastructure.
The app works out of the box with the default Supabase project. To connect your own:
cp .env.example .env.localSet VITE_SUPABASE_URL and VITE_SUPABASE_KEY in .env.local.
src/
├── components/
│ ├── modals/ # Dialog components (AddTransaction, EditCategory, etc.)
│ ├── subcomponents/ # Shared UI (AppToolbar, BudgetSection, etc.)
│ └── extras/ # Utilities (api_functions, GrabBudgetData, etc.)
├── store/ # Zustand stores (globalStore, tableStore, notificationStore)
├── lib/ # Supabase client, notifications, offline sync
└── test/ # Unit tests
| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Production build |
npm run preview |
Preview production build locally |
npm test |
Run unit tests |
Contributions are welcome! See CONTRIBUTING.md for guidelines.
This project is licensed under the GNU AGPL v3.












