2 Commits

Author SHA1 Message Date
4e064d86d2 readme v0.1.4 2026-04-17 15:55:50 +02:00
7fa6d250e5 bugfix inlog problem 2026-04-17 15:45:24 +02:00
6 changed files with 33 additions and 6 deletions

View File

@@ -71,6 +71,20 @@ docker exec -i vibefinance_postgres psql -U vibefinance -d vibefinance < backup-
--- ---
## Architectuur — nginx proxy
De frontend-container (nginx) serveert de React-app en proxyt `/api/`-verzoeken intern door naar de backend-container op poort 3001. Dit is geconfigureerd in `frontend/nginx-spa.conf`:
```nginx
location /api/ {
proxy_pass http://backend:3001;
}
```
> Ontbreekt dit blok, dan krijgen gebruikers "Kan geen verbinding maken met de server" bij het inloggen — ook al draaien alle containers.
---
## Logs en diagnose ## Logs en diagnose
```bash ```bash

View File

@@ -10,6 +10,9 @@
- PostgreSQL productie geüpgraded van versie 16 naar 18 (volume mount aangepast naar `/var/lib/postgresql`) - PostgreSQL productie geüpgraded van versie 16 naar 18 (volume mount aangepast naar `/var/lib/postgresql`)
- Witte rand rondom de app verwijderd (globale CSS reset toegevoegd, `App.css` gekoppeld aan `App.jsx`) - Witte rand rondom de app verwijderd (globale CSS reset toegevoegd, `App.css` gekoppeld aan `App.jsx`)
### Opgelost
- Login gaf "Kan geen verbinding maken met de server": `nginx-spa.conf` miste een `/api/` proxy-blok naar de backend-container — alle API-calls kwamen niet aan
--- ---
## [0.0.4] - 2026-04-08 ## [0.0.4] - 2026-04-08

View File

@@ -10,7 +10,7 @@ Eigen vermogen · Schulden · Voortgang · Gebruikersbeheer
![Node.js](https://img.shields.io/badge/Node.js_22-339933?style=flat&logo=node.js&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js_22-339933?style=flat&logo=node.js&logoColor=white)
![PostgreSQL](https://img.shields.io/badge/PostgreSQL_18-4169E1?style=flat&logo=postgresql&logoColor=white) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL_18-4169E1?style=flat&logo=postgresql&logoColor=white)
![Docker](https://img.shields.io/badge/Docker_Compose-2496ED?style=flat&logo=docker&logoColor=white) ![Docker](https://img.shields.io/badge/Docker_Compose-2496ED?style=flat&logo=docker&logoColor=white)
![Version](https://img.shields.io/badge/versie-0.1.3-8b5cf6?style=flat) ![Version](https://img.shields.io/badge/versie-0.1.4-8b5cf6?style=flat)
![Built with Claude](https://img.shields.io/badge/Gebouwd_met-Claude.ai-8b5cf6?style=flat&logo=anthropic&logoColor=white) ![Built with Claude](https://img.shields.io/badge/Gebouwd_met-Claude.ai-8b5cf6?style=flat&logo=anthropic&logoColor=white)
</div> </div>
@@ -83,7 +83,7 @@ vibefinance/
├── frontend/ # React / Vite SPA ├── frontend/ # React / Vite SPA
│ ├── Dockerfile # Multi-stage: dev → build → nginx │ ├── Dockerfile # Multi-stage: dev → build → nginx
│ ├── nginx-spa.conf # SPA fallback binnen de container │ ├── nginx-spa.conf # SPA fallback + /api proxy naar backend
│ ├── vite.config.js │ ├── vite.config.js
│ └── src/ │ └── src/
│ ├── App.jsx # Root wiring + idle-logout │ ├── App.jsx # Root wiring + idle-logout
@@ -170,7 +170,7 @@ Beveiligde endpoints vereisen `Authorization: Bearer <token>`. Rate limiting: 20
- Wachtwoorden gehasht met bcrypt (cost factor 12) - Wachtwoorden gehasht met bcrypt (cost factor 12)
- JWT authenticatie met instelbare vervaltijd - JWT authenticatie met instelbare vervaltijd
- Backend uitsluitend bereikbaar via nginx proxy - Backend uitsluitend bereikbaar via nginx proxy (`/api/` in `nginx-spa.conf`)
- Database bereikbaar alleen binnen het interne Docker netwerk - Database bereikbaar alleen binnen het interne Docker netwerk
- Containers draaien als non-root - Containers draaien als non-root
- Helmet security headers - Helmet security headers

View File

@@ -14,6 +14,16 @@ server {
try_files $uri =404; try_files $uri =404;
} }
# Proxy API-calls naar de backend
location /api/ {
proxy_pass http://backend:3001;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# SPA fallback stuur alle routes naar index.html # SPA fallback stuur alle routes naar index.html
location / { location / {
try_files $uri $uri/ /index.html; try_files $uri $uri/ /index.html;

View File

@@ -1,6 +1,6 @@
{ {
"name": "vibefinance-frontend", "name": "vibefinance-frontend",
"version": "0.1.3-dev", "version": "0.1.4",
"updateCheckUrl": "https://vibehoogie.duckdns.org/api/v1/repos/vibe/VibeFinance/releases/latest", "updateCheckUrl": "https://vibehoogie.duckdns.org/api/v1/repos/vibe/VibeFinance/releases/latest",
"private": true, "private": true,
"type": "module", "type": "module",

View File

@@ -1,6 +1,6 @@
{ {
"name": "vibefinance", "name": "vibefinance",
"version": "0.1.3", "version": "0.1.4",
"description": "VibeFinance — persoonlijk vermogensbeheer", "description": "VibeFinance — persoonlijk vermogensbeheer",
"private": true, "private": true,
"repository": "https://vibehoogie.duckdns.org/vibe/VibeFinance", "repository": "https://vibehoogie.duckdns.org/vibe/VibeFinance",