Budget Zen - Web App
This is the web app for the Budget Zen app, built with Deno and deployed to Deno Deploy.
This is v3, which is end-to-end encrypted with open Web Standards, and works via web on any device (it's a PWA - Progressive Web App).
It's not compatible with Budget Zen v2 (end-to-end encrypted via Userbase) which you can still get locally from this commit, nor v1 (not end-to-end encrypted), which you can still get locally from this commit. You can still export and import the data as the JSON format is the same across all 3 versions (unencrypted).
Or check the Development section below.
NOTE: You don't need to have emails (Postmark) and subscriptions (Stripe/PayPal) setup to have the app work. Those are only used for allowing others to automatically manage their account. You can simply make any
user.status = 'active'and
user.subscription.expires_at = new Date('2100-01-01')to "never" expire, in the database, directly.
It's meant to have no unnecessary dependencies, packagers, or bundlers. Just vanilla, simple stuff.
This was tested with
Deno's version stated in the
.dvmrc file, though other versions may work.
For the PostgreSQL dependency (used when running locally, self-hosted, or in CI), you should have
If you want to run the app locally with SSL (Web Crypto standards require
https except for Chrome), you can use
Caddy (there's a
Caddyfile that proxies
https://localhost to the Deno app).
Don't forget to set up your
.env file based on
$ docker-compose up # (optional) runs docker with postgres, locally $ sudo caddy run # (optional) runs an https proxy for the deno app $ make migrate-db # runs any missing database migrations $ make start # runs the app $ make format # formats the code $ make test # runs tests
Other less-used commands
$ make exec-db # runs psql inside the postgres container, useful for running direct development queries like `DROP DATABASE "budgetzen"; CREATE DATABASE "budgetzen";`
- Backend routes are defined at
- Publicly-available files are defined at
- Pages are defined at
- Cron jobs are defined at
- Reusable bits of code are defined at
- Database migrations are defined at
- Deno Deploy: Just push to the
mainbranch. Any other branch will create a preview deployment.
- Enable true offline mode (securely cache data, allow read-only)