- Add .github/ISSUES/upgrade-deps-react-node-20251028.md with analysis summary - Add docs/UPGRADE_PLAN-upgrade-deps-react-node-20251028.md with detailed plan and steps Branch: upgrade/deps-react-node-20251028
4.2 KiB
4.2 KiB
Upgrade-Plan: React, Router, MUI, Node (upgrade/deps-react-node-20251028)
Datum: 2025-10-28 Branch: upgrade/deps-react-node-20251028
Ziel
Schrittweise und rückfallfähige Aktualisierung der Laufzeit und Frameworks:
- Backend: Node 14 -> Node 18 (LTS) (Schnellwin)
- Frontend: React 17 -> React 18, react-scripts 4 -> 5
- Optional (separat): react-router v5 -> v6
- Optional (iterativ): MUI v4 -> v5 (größere Refactor-Phase)
Umfang
- Änderungen an
backend/Dockerfilefür Node-Version - Aktualisierung
frontend/package.json(react/react-dom/react-scripts) - CI / Produktions-Build-Pipeline (Dockerfile, prod.sh) Smoke-tests
- Code-Änderungen: Router-Hooks (useHistory → useNavigate), App.js (Switch → Routes), evtl. MUI-Imports
Schritte (detailliert)
Phase 0 — Vorbereitung (0.5–1h)
- Erstelle Branch (bereits erstellt)
- Sicherstellen, dass Tests/Build aktuell grün sind
- Erstelle Backup-Branch oder Tag
Phase 1 — Node runtime bump (0.5–2h) [Schnellwin]
Ziel: Backend in Node 18 betreiben
Aktionen:
- Edit
backend/Dockerfile:FROM node:14→FROM node:18(odernode:18-slim) - Locally: build & run container
docker build -t image-uploader-backend-test ./backend
docker run --rm -p 5000:5000 image-uploader-backend-test
# oder: docker compose -f docker-compose.yml up --build backend
- Smoke-test: API Endpoints, DB, uploads
- Falls native build-errors (sqlite3), ergänze build-essentials in Dockerfile
Akzeptanzkriterien:
- Backend container läuft unter Node 18 ohne runtime-exceptions
Phase 2 — React 18 & react-scripts 5 (4–12h)
Ziel: Frontend auf React 18 bringen (nicht MUI noch nicht zwangsläufig)
Aktionen:
-
Update
frontend/package.json:react&react-dom→^18.2.0react-scripts→^5.0.1
-
Lokales Install & Build
cd frontend
npm ci
npm run build
- Fix build-errors (häufig): PostCSS, Webpack-Optionen, kleine API-Änderungen
- Test dev-mode (
npm start) und important pages (upload, moderation, slideshow)
Akzeptanzkriterien:
npm run buildliefert statische Assets- Dev server läuft, app funktioniert manuell
Phase 3 — Router v5 → v6 (2–6h)
Ziel: Modernisierung der Router-API
Aktionen:
- Replace
react-router-domversion in package.json →^6.x - Code changes:
Switch→Routes+Route element={<Comp/>}useHistory()→useNavigate()withRouterentfernen
- Sorgfältige manuelle Tests der Navigation
Akzeptanzkriterien:
- Navigation / Link-Verhalten wie zuvor, Unit/E2E tests grün
Phase 4 — MUI v4 → v5 (größerer Refactor) (2–5d)
Ziel: Migration zu MUI v5 mit modernem Styling (sx/styled)
Aktionen:
- Upgrade Packages:
@mui/material,@mui/icons-material - Entweder:
- kurzfristig:
@mui/styles(Kompatibilitäts-Paket) verwenden, um Zeit zu gewinnen; oder - langfristig: ersetze
makeStyles/JSS mitsxoderstyled
- kurzfristig:
- Theme/Spacing Anpassungen, Icons-Import prüfen
- UI-Tests und visueller Abgleich
Akzeptanzkriterien:
- Komponenten rendern korrekt, Theme konsistent
Phase 5 — Tests & Production Build
- Full Docker production build:
./prod.shOption 4 - E2E / manuelle smoke tests: Upload, Moderation, Slideshow
Aufwandsschätzung (grobe Orientierung)
- Phase 1 (Node bump): 0.5–2h
- Phase 2 (React 18): 4–12h
- Phase 3 (Router v6): 2–6h
- Phase 4 (MUI v5): 24–56h (je nach Umfang)
- Tests / CI / Docs: 4–8h
Gesamtschätzung (conservative): 3–10 Arbeitstage (abhängig von MUI scope)
Hinweise für CI / Docker
- Wenn sqlite3 native gebaut werden muss, Dockerfile benötigt
build-essentialundpythonfür node-gyp (oder alternativ use prebuilt binaries). - Node LTS images:
node:18odernode:20(prüfen, ob alle libs kompatibel)
Beispiel Patches (starter)
- Backend Dockerfile (quick):
--- a/backend/Dockerfile
+++ b/backend/Dockerfile
@@
- FROM node:14
+ FROM node:18
Nächste Schritte (konkret für mich)
- Erstelle PR mit Phase 1 (Node bump) + docs + TODO-Update
- Nach Freigabe: PR für Phase 2 (React18)
Dateien in diesem PR/Branch:
.github/ISSUES/upgrade-deps-react-node-20251028.md(Issue-Template)docs/UPGRADE_PLAN-upgrade-deps-react-node-20251028.md(dieses Dokument)