Self-hostable personal finance tracker. Multi-user, data isolated per user. Built with SvelteKit and PocketBase.
Pulls pre-built images from GHCR. Web on :3000, PocketBase on :8090.
docker compose up -d
Web app at http://localhost:3000 — PocketBase admin at http://localhost:8090/_/.
Use docker-compose.traefik.yml as a starting point. Replace <DOMAIN>, <SECRET>, <ADMIN_EMAIL>, and <ADMIN_PASSWORD>, then:
docker compose -f docker-compose.traefik.yml up -d
Traefik routes /api and /_/ to the backend container; everything else goes to the web container.
git clone https://github.com/tamerhayek/myney.git
cd myney
docker compose -f docker-compose.dev.yml up --build
PocketBase data is stored in ./backend/pb_data (gitignored).
/_/ and log in with the values you set for ADMIN_EMAIL / ADMIN_PASSWORD (defaults: [email protected] / myney_admin)./_/. They will also be asked to change their password on first login.
PB_ENCRYPTION_KEYmust be set before the first run and never changed afterwards — it encrypts PocketBase data at rest. Generate one withopenssl rand -hex 16.
git clone https://github.com/tamerhayek/myney.git
cd myney
pnpm install
Start PocketBase:
pnpm backend # docker compose -f docker-compose.dev.yml up -d --build backend
Start the dev server:
pnpm dev # http://localhost:5173 — proxies /api and /_/ to PocketBase at :8090
pnpm build # production build
pnpm lint # Prettier check + ESLint
pnpm format # auto-format
pnpm check # svelte-check + tsc
pnpm test:unit --run # unit tests
pnpm test:e2e # end-to-end tests (requires a running build)
Contributions are welcome. See CONTRIBUTING.md for the workflow, commit message format, and local development setup.