Offline-first aplikacja do zarządzania budżetami działająca jako web app i PWA na iPhonie. Projekt obsługuje wiele niezależnych workspace'ów, lokalny zapis w IndexedDB, outbox synchronizacji oraz backend API zbudowany w NestJS i Prisma.
- monorepo
pnpmzapps/,packages/,infra/i.github/workflows/ - frontend React + Vite + Tailwind + Dexie + PWA
- backend NestJS + Prisma + JWT access/refresh
- workspace isolation z rolami
owner,editor,viewer - panel administracyjny do zarządzania użytkownikami, rolami i workspace'ami
- CRUD dla kont, kategorii, transakcji i budżetów, w tym edycja i usuwanie kont
- osobne dashboardy dla workspace'ów typu dom, JDG, firma i shared
- local-first zapis na froncie z outboxem i sync
push/pull - Docker, Caddy i GitHub Actions pod lint/typecheck/test/build/docker build
- React
- TypeScript
- Vite
- Tailwind CSS
- Dexie / IndexedDB
- vite-plugin-pwa
- NestJS
- Prisma
- PostgreSQL
- JWT + refresh token rotation
- Argon2
- Docker
- Docker Compose
- Caddy
- GitHub Actions
apps/
api/
web/
packages/
config/
shared-types/
shared-validation/
sync-engine/
ui/
infra/
docker/
docs/
.github/workflows/
- Node.js 20+
- pnpm 10+
- Docker + Docker Compose
- PostgreSQL lub
docker compose up
- Skopiuj
.env.exampledo.env - Uruchom bazę:
docker compose up -d postgres- Wygeneruj Prisma Client i migracje/schema:
pnpm --filter api exec prisma generate
pnpm --filter api exec prisma db push
pnpm db:seed- Uruchom development:
pnpm devFrontend: http://localhost:5173
API: http://localhost:3001/api/v1
Health: http://localhost:3001/api/v1/health
- email:
demo@budget.local - hasło:
demo12345
Po seedzie konto demo jest aktywnym system adminem i dostaje trzy gotowe workspace'y:
DomowyJDGFirma
Pełny stack:
docker compose up --buildGłówne pliki:
docker-compose.ymlinfra/docker/api.Dockerfileinfra/docker/web.Dockerfileinfra/docker/caddy/Caddyfile
pnpm devpnpm buildpnpm lintpnpm typecheckpnpm testpnpm db:generatepnpm db:pushpnpm db:seed
Pełna dokumentacja architektury, domeny, syncu, bezpieczeństwa i wdrożenia znajduje się w docs/.
- zbudowano monorepo offline-first z aplikacją web/PWA, API NestJS i współdzielonymi pakietami
- dodano local DB w Dexie, outbox synchronizacji, endpointy
sync/pushisync/pull - dodano Docker, Caddy, GitHub Actions i instrukcję uruchomienia projektu
- dodano systemowy panel administracyjny do tworzenia, edycji, wyłączania i usuwania użytkowników
- dodano zarządzanie rolami członków workspace'ów oraz edycję typu workspace i archiwizacji
- rozbudowano demo seed o osobne workspace'y dla domu, JDG i firmy z własnymi dashboardami