# 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. ```text client/ React/Vite-klient server/ Express API, auth, bankintegration och datalagring ``` ## Kom igång med Docker Compose 1. Kopiera exempelmiljön: ```bash cp .env.example .env ``` 2. Uppdatera `.env` med dina värden, särskilt om du vill använda OIDC/Pocket ID: ```env APP_BASE_URL=https://eb.example.com AUTH_SESSION_SECRET=byt-till-en-lang-slumpad-hemlighet SETUP_TOKEN=byt-till-en-lang-slumpad-token ``` 3. Starta appen: ```bash docker compose up -d --build ``` 4. Öppna appen: ```text http://localhost:7842 ``` Docker Compose monterar appens data i volymen `data`, och servern använder som standard: ```text /app/data/budget.json ``` ## Lokal utveckling Installera beroenden separat för server och klient: ```bash cd server npm install ``` ```bash cd client npm install --include=optional ``` Starta servern: ```bash cd server npm run dev ``` Starta klienten i en annan terminal: ```bash cd client npm run dev ``` Vite proxyar `/api` till servern på `http://localhost:7843` i utvecklingsläge. ## Bygga klienten ```bash 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/` - `.env` och lokala miljöfiler - `node_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: ```text /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: ```text /auth/callback ``` ## AI via Ollama AI-funktionerna använder Ollama och kan aktiveras i appens inställningar. Standardvärdet för Ollama är: ```text 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: ```bash # 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: ```bash cd client npm audit cd ../server npm audit ``` ## Repository Remote är tänkt att ligga på: ```text https://git.bitli.se/siliconsolder/enkelbudget.git ```