Budlendar is a React and Vite budget planner backed by a local Node API and SQLite database. Accounts, password hashing, email verification, password resets, and saved recurring budget data all run on your machine.
The signed-in UI uses a flatter month-grid calendar with a compact workspace drawer for summaries, recurring rules, and account controls.
The development app runs at http://127.0.0.1:8785.
The production-style single-process app runs at http://127.0.0.1:8787.
- Minimal month grid with running daily balances
- Per-day add button plus click-to-edit scheduled items
- Compact workspace drawer for month summary, selected-day details, and recurring rules
- Start-date-first recurrence flow
- Monthly rules that repeat on the same calendar date
- Weekly rules configured as
Every <weekday>plus aWeek intervalof1 weekor2 weeks - Daily, yearly, and one-time entries
- Email and password registration with hashed passwords
- Local email verification flow
- Local password reset flow
- Per-user SQLite budget storage
- Demo budget loader for quick testing
- Local mailbox UI for verification and reset links
Install dependencies:
npm installStart the local API and frontend together:
npm run devOpen:
- App:
http://127.0.0.1:8785 - Local mailbox:
http://127.0.0.1:8785/api/dev/mailbox
The development server writes to server/data/budlendar.dev.sqlite by default.
The production-style server and deployed server both write to server/data/budlendar.prod.sqlite by default.
Set DATABASE_FILE explicitly in .env.local if you want a custom location for either environment.
Starting dateanchors every recurring rule.- Monthly rules repeat on that same day number every month.
- Weekly rules repeat on the selected weekday every
1 weekor2 weeks. - Existing legacy monthly or yearly weekday-based rules are still rendered and preserved.
- Create an account in the app.
- Open the local mailbox and click the verification link.
- Sign in with the verified account.
- Use "Reset password" in the auth screen whenever you want to test recovery.
All verification and reset emails stay on your machine and are stored in the local mailbox table.
You can add a .env.local file using the values from .env.example to override:
- application environment
- app origin
- API host and port
- static client serving
- SQLite database path
- session lifetime
npm run dev: start frontend and API togethernpm run dev:client: start the Budlendar frontend onhttp://127.0.0.1:8785npm run dev:server: start the internal development API onhttp://127.0.0.1:8786npm run build: build the frontendnpm run lint: lint the reponpm run test: run the automated budget and database testsnpm run preview: build the frontend, serve it through Vite preview onhttp://127.0.0.1:8787, and keep the API onhttp://127.0.0.1:8788while using the production database defaultsnpm run start:server: serve the built Budlendar app and API onhttp://127.0.0.1:8787with the production database defaultsnpm run start:local: hidden local production-style verification flow for AI VS Code plugin use, with client onhttp://127.0.0.1:8787and API onhttp://127.0.0.1:8788without opening extra console windows