Umbau auf Alpine.js
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user