Umbau auf Alpine.js

This commit is contained in:
2026-07-03 00:17:27 +02:00
parent 31b3f58f3c
commit 2d88811b12
21 changed files with 993 additions and 1267 deletions
+22 -15
View File
@@ -19,14 +19,16 @@ Kapazitaetsplanung pro Person.
## Architektur
- **Backend**: Node.js + Express, liefert eine REST-API (`/api/...`) und das
gebaute Frontend aus.
statische Frontend aus.
- **Datenhaltung**: MongoDB (eigener Container, offizieller Node-Treiber
`mongodb`). Vier Collections: `people`, `projects`, `tasks`, `absences`.
Die Mongo-`_id` wird beim Ausliefern an das Frontend in ein einfaches
`id`-Feld (String) umgewandelt; Referenzen zwischen Entitaeten (z. B.
`assigneeId`, `projectId`) werden als dieser String gespeichert.
- **Frontend**: React + Vite, wird beim Docker-Build in `backend/public`
gebaut und vom Backend ausgeliefert.
- **Frontend**: Reines HTML/CSS/JS mit [Alpine.js](https://alpinejs.dev/)
(lokal in `frontend/js/vendor` eingebettet, keine externe CDN-Abhaengigkeit
zur Laufzeit). Kein Build-Step: `frontend/` wird beim Docker-Build 1:1 nach
`backend/public` kopiert und vom Backend ausgeliefert.
## Lokale Entwicklung (optional)
@@ -34,17 +36,18 @@ Kapazitaetsplanung pro Person.
# MongoDB lokal starten (z. B. per Docker)
docker run -d --name jp-mongo -p 27017:27017 mongo:7
# Backend
# Backend (liefert API + Frontend zusammen aus, kein separater Frontend-Server noetig)
cd backend
npm install
MONGODB_URI=mongodb://localhost:27017/jahresplanung npm start # http://localhost:3000
# Frontend (in zweitem Terminal)
cd frontend
npm install
npm run dev # http://localhost:5173, proxied /api zu :3000
MONGODB_URI=mongodb://localhost:27017/jahresplanung npm start # http://localhost:3001
```
Das Frontend liegt unter `frontend/` als reine statische Dateien (kein
`npm install`/Build noetig). Das Backend liefert es direkt aus dem
Geschwisterverzeichnis `../frontend` aus (lokal wie im Docker-Image
identisch, siehe `backend/src/index.js`). Einfach im Browser
`http://localhost:3001` oeffnen.
## Deployment in Coolify
1. **Repository verbinden**: Diesen Ordner in ein Git-Repository pushen
@@ -53,11 +56,15 @@ npm run dev # http://localhost:5173, proxied /api zu :3000
2. **Build-Pack**: **Docker Compose** waehlen. Das mitgelieferte
`docker-compose.yml` startet automatisch zwei Container: die App und
MongoDB, inklusive persistentem Volume fuer die Datenbank.
3. **Port**: Der App-Container lauscht auf Port `3000` (im
`docker-compose.yml` gemappt). In Coolify unter "Domains" die gewuenschte
Domain/Subdomain zuweisen. Der MongoDB-Container hat bewusst **keinen**
nach aussen gemappten Port und ist nur innerhalb des Compose-Netzwerks
fuer die App erreichbar.
3. **Port**: Der App-Container lauscht auf Port `3001` (im
`docker-compose.yml` gemappt). In Coolify unter "Domains"/der
Port-Konfiguration der Ressource **muss dieser Port (3001) explizit
eingetragen werden** — das passiert nicht automatisch, wenn sich der Port
nach einem vorherigen Deployment aendert. Falls der Host-Port bereits von
einer anderen Ressource belegt ist, in `docker-compose.yml` einen anderen
freien Port waehlen und die Coolify-Konfiguration entsprechend anpassen.
Der MongoDB-Container hat bewusst **keinen** nach aussen gemappten Port
und ist nur innerhalb des Compose-Netzwerks fuer die App erreichbar.
4. **Persistenz**: Das Volume `jahresplanung-mongo-data` sichert die
MongoDB-Datendateien. Bei Redeploys bleiben die Daten erhalten, solange
das Volume nicht geloescht wird.