4.9 KiB
Enkelbudget
Enkelbudget är en självhållen budgetapp för månadsbudget, återkommande kostnader, lån, banktransaktioner och privatekonomisk överblick. Appen är byggd för svensk användning, med svensk valutaformatering, PWA-stöd och möjlighet att köra allt i en Docker-container.
Funktioner
- Månadsbudget med inkomster, räkningar och kategorier
- Återkommande abonnemang och fasta kostnader
- Låneöversikt med betalningar och saldo
- Transaktionsvy med konton, saldo, kategorisering och summeringar
- Enable Banking-integration för bankdata
- OIDC/Pocket ID-inloggning med stöd för grupper, e-post och domänfilter
- AI-stöd via Ollama för budget- och transaktionshjälp
- Ntfy-notiser för nya transaktioner
- Installerbar PWA med offline-/cache-stöd
- JSON-baserad datalagring via lowdb
Teknik
Klienten är byggd med React, Vite, Tailwind CSS och vite-plugin-pwa. Servern är en Express-app som använder lowdb för lokal JSON-lagring.
client/ React/Vite-klient
server/ Express API, auth, bankintegration och datalagring
Kom igång med Docker Compose
- Kopiera exempelmiljön:
cp .env.example .env
- Uppdatera
.envmed dina värden, särskilt om du vill använda OIDC/Pocket ID:
APP_BASE_URL=https://eb.example.com
AUTH_SESSION_SECRET=byt-till-en-lang-slumpad-hemlighet
SETUP_TOKEN=byt-till-en-lang-slumpad-token
- Starta appen:
docker compose up -d --build
- Öppna appen:
http://localhost:7842
Docker Compose monterar appens data i volymen data, och servern använder som standard:
/app/data/budget.json
Lokal utveckling
Installera beroenden separat för server och klient:
cd server
npm install
cd client
npm install --include=optional
Starta servern:
cd server
npm run dev
Starta klienten i en annan terminal:
cd client
npm run dev
Vite proxyar /api till servern på http://localhost:7843 i utvecklingsläge.
Bygga klienten
cd client
npm run build
Bygget genererar PWA-ikoner från client/public/icon.svg och skriver produktionsfiler till client/dist.
Miljövariabler
| Variabel | Beskrivning |
|---|---|
PORT |
Serverport. Docker använder 7842. |
DB_PATH |
Sökväg till JSON-databasen. |
APP_BASE_URL |
Publik bas-URL för CORS och callback-flöden. |
AUTH_SESSION_SECRET |
Hemlighet för auth-sessioner. Bör vara lång och slumpad. |
SETUP_TOKEN |
Engångs-/admin-token för initial auth-konfiguration när auth inte är aktiverat. |
OIDC_ISSUER |
OIDC issuer, exempelvis Pocket ID. |
OIDC_CLIENT_ID |
OIDC client ID. |
OIDC_CLIENT_SECRET |
OIDC client secret. |
OIDC_REDIRECT_URI |
Callback-URL, exempelvis https://eb.example.com/auth/callback. |
OIDC_SCOPE |
OIDC scopes. Standard: openid profile email groups. |
OIDC_ALLOWED_GROUPS |
Kommaseparerad allowlist för grupper. |
OIDC_ALLOWED_EMAILS |
Kommaseparerad allowlist för e-postadresser. |
OIDC_ALLOWED_DOMAINS |
Kommaseparerad allowlist för e-postdomäner. |
Se .env.example för ett komplett exempel.
Data och säkerhet
Appdata lagras i server/data/budget.json vid lokal körning, eller i Docker-volymen data vid Compose-körning. Den filen kan innehålla privat budgetdata, auth-inställningar, sessionsdata, bankmetadata och tokens.
Därför ignoreras följande av git:
server/data/.envoch lokala miljöfilernode_modules/client/dist/- lokal editor-/agentkonfiguration
Checka inte in riktiga secrets, banknycklar eller produktionsdata.
Enable Banking
Enable Banking-konfiguration görs i appens inställningar. För produktion behöver du normalt:
- Application ID
- Private key PEM
- Redirect URL
- Val av land, bank och konton
Callback-route för bankflödet är:
/enablebanking/auth_callback
OIDC / Pocket ID
OIDC kan konfigureras via miljövariabler eller via appens auth-inställningar. När auth är avstängt krävs SETUP_TOKEN för att ändra auth-konfigurationen via API, så en publik instans inte kan tas över av första besökaren.
Vanlig callback-route:
/auth/callback
AI via Ollama
AI-funktionerna använder Ollama och kan aktiveras i appens inställningar. Standardvärdet för Ollama är:
http://host.docker.internal:11434
Du kan välja textmodell, visionmodell och om budget- eller bankkontext ska skickas med i AI-frågor.
Notiser
Appen har stöd för ntfy-notiser om nya transaktioner. Konfigurationen finns i appinställningarna och kan användas med egen ntfy-server eller https://ntfy.sh.
Underhåll
Praktiska kommandon:
# Visa containerloggar
docker compose logs -f app
# Bygg om och starta om
docker compose up -d --build
# Stoppa appen
docker compose down
För npm-säkerhetskontroll:
cd client
npm audit
cd ../server
npm audit
Repository
Remote är tänkt att ligga på:
https://git.bitli.se/siliconsolder/enkelbudget.git