Self-hosted osobna appka na mesacne sledovanie financii (ucty, prijmy, investicie, zavazky).
- Next.js App Router + TypeScript
- Prisma + SQLite
- NextAuth credentials + TOTP
- Tailwind CSS
- Recharts
- web-push + service worker
- Mesacne snapshots uctov a net worth.
- Evidencia prijmov, JOJ detailov, investicii a zavazkov.
- PWA instalacia, offline fallback a push pripomienky.
- Naklonuj repo a nainstaluj dependencies.
npm install- Skopiruj env template.
cp ENV_TEMPLATE.md .env.local-
Vypln povinne hodnoty v
.env.local. -
Spusti migracie a seed.
npx prisma migrate deploy
npm run db:seed- Spusti aplikaciu.
npm run devAk chces ist krok po kroku, postupuj podla sekcie Rychly start.
- Seed je idempotentny pre mutable data (upravi existujuce records, nevytvara stale nove).
- Seed normalizuje month na UTC prvy den mesiaca.
- Pri prvom seede sa nacita
ADMIN_PASSWORDa ulozi sa jeho hash doSettings.data.password_hash. - Seed data su sifrovane v
prisma/seed-data/seed-data.json.enca deifruju sa cezSEED_DATA_DECODE_PASSWORD. - Na zmenu workbooku pouzi
SEED_DATA_ENCODE_PASSWORDpri sifrovani aSEED_DATA_DECODE_PASSWORDpri seede. - Ak menis workbook, pouzi
npm run seed:encryptanpm run seed:decrypt.
Povinne minimalne:
AUTH_SECRETNEXTAUTH_URLDATABASE_URLADMIN_PASSWORD
PWA a push:
NEXT_PUBLIC_VAPID_PUBLIC_KEYVAPID_PRIVATE_KEYVAPID_EMAIL
Volitelne:
ALPHA_VANTAGE_KEYENABLE_CRONCRON_SECRETDEFAULT_SAVINGS_TARGET
docker compose up -d --buildCompose automaticky:
- mountne persistent volume na
/data - pouzije
DATABASE_URL=file:/data/financie.db - pred startom appky spusti
prisma migrate deploy
- Source: tento repo
- Build:
Dockerfile - Persistent volume: mount na
/data - Env: nastav v UI (necommituj
.env.local)
- Ak login hlasi missing password, skontroluj
ADMIN_PASSWORDa znovu spusti seed. - Ak push notifikacie neidu, skontroluj VAPID kluce a ci ma prehliadac povolene notifikacie.
- Ak Docker start padne na migracii, over
DATABASE_URL=file:/data/financie.dba ci je volume pripojene. - Ak aplikacia nevie najst DB lokalne, skontroluj, ze sqlite subor existuje po migracii.
- Manifest:
public/manifest.json - Service worker:
public/sw.js - SW sa registruje v root layoute.
- Push subscription endpoint:
POST /api/push - Cron trigger endpoint:
POST /api/cron- ak je nastaveny
CRON_SECRET, posliAuthorization: Bearer <CRON_SECRET>
- ak je nastaveny
- Health check endpoint:
GET /api/health
npm run lint
npm run build
npx prisma studio