Wenn dir das Projekt hilft, freue ich mich ueber einen Stern.
StudiPlan ist eine Web-App zur Planung von Semestern und Klausuren mit Drag-and-drop. Der Fokus liegt auf einer schnellen, visuellen Studienplanung mit Parkplatz-Logik fuer noch nicht zugeordnete Veranstaltungen.
Beim ersten Start kann der Planname, die Regelstudienzeit und das Startsemester konfiguriert werden.
Die Hauptansicht zeigt alle Semester mit Veranstaltungskarten inklusive ECTS, Note, Klausurdatum und Bestandenstatus. Der Header liefert eine kompakte Gesamtstatistik. Der Parkplatz links sammelt noch nicht zugeordnete Veranstaltungen.
Ueber den Dialog koennen neue Veranstaltungen mit Name, ECTS, Turnus (WS/SS/Beide), Klausurdatum, Beschreibung und Farbe angelegt oder bearbeitet werden.
- Ersteinrichtung beim ersten Start (Planname, Regelstudienzeit, Startsemester)
- Regelstudienzeit konfigurierbar (1-20 Semester), Standard: 6 Semester
- Planname direkt im Header bearbeitbar
- Veranstaltungen mit Name, ECTS, Klausurdatum, Turnus (WS/SS/Beide), Beschreibung und Farbe
- Bestanden-Status und Note (1,0-5,0) pro Veranstaltung erfassbar
- Veranstaltung als "Muendliche Pruefung" markierbar: bei nicht bestandener Klausur (5,0) kann die Veranstaltung als Zweitversuch in ein anderes Semester verschoben werden; schlaegt auch dieser fehl, laesst sich eine muendliche Pruefung eintragen (Note standardmaessig 4,0)
- ECTS- und Notenstatistik im Header (gesamt geplant, bestanden, Durchschnittsnote)
- Notenstatistik pro Semester (bestandene ECTS, Durchschnittsnote)
- Drag-and-drop zwischen Semestern und Parkplatz
- Reihenfolge innerhalb eines Semesters per Drag-and-drop anpassbar
- Sortierung pro Semester nach Datum oder ECTS
- Semester ein-/ausklappbar; alle Semester gleichzeitig ein-/ausklappbar ueber einen kleinen Button ueber der Semesterliste
- Semester loeschbar (Veranstaltungen landen automatisch im Parkplatz); nachfolgende Semester werden automatisch umnummeriert
- Bearbeiten und Loeschen von Veranstaltungen
- Parkplatz fuer noch nicht zugeordnete Veranstaltungen (erscheint nur wenn belegt)
- Import/Export des Plans als JSON-Datei
- Persistenz im Browser via
localStorage; bei Docker-Deployment zusaetzlich server-seitig in einer SQLite-Datenbank unter/data/studiumsplaner.db
Der Turnus (WS/SS/Beide) ist ein Hinweis und kein Blocker.
Eine Veranstaltung kann weiterhin in jedem Semester geplant werden; bei Abweichungen zeigt die UI einen visuellen Warnhinweis auf der Veranstaltungskarte.
- React 18
- TypeScript
- Vite
- Tailwind CSS
- Zustand
- react-beautiful-dnd
- lucide-react
- Express (Node.js-Backend fuer Docker-Deployment)
- express-rate-limit
- Node.js 20+
- npm 10+
setup.bat per Doppelklick ausfuehren.
Das Skript:
- prueft, ob Node.js installiert ist
- installiert Abhaengigkeiten
- startet den Dev-Server
npm install
npm run devStandard-URL: http://localhost:5173
npm run dev # Entwicklungsserver
npm run build # TypeScript Build + Vite Production Build
npm run preview # Vorschau des Production Builds
npm run lint # ESLint
npm run typecheck # TypeScript Check ohne OutputOptionales E2E-Skript (Playwright, "manual-like"):
node scripts/manual-like-e2e.mjsTestreport wird in test-results/manual-like-e2e-report.json geschrieben.
Das mitgelieferte docker-compose.yml zieht das fertige Image direkt von der GitHub Container Registry:
docker-compose up -dApp laeuft dann auf http://localhost:3000
Stoppen:
docker-compose downDaten werden in einem Docker-Volume (studiumsplaner_data) unter /data/studiumsplaner.db gespeichert (SQLite-Datenbank).
docker build -t studiumsplaner:latest .
docker run -p 3000:3000 studiumsplaner:latestApp laeuft auf http://localhost:3000
- Multi-Stage-Build: Reduziert finale Image-Groesse
- Build-Stage: Node 20 Alpine baut TypeScript & Vite (
dist/) - Runtime-Stage: Node 20 Alpine startet den Express-Server (
server/index.js), der die statischen Dateien ausliefert und den Plan unter/api/planspeichert - Health Check: Ueberwacht Container-Status via
wget
Falls in PowerShell der Fehler "script execution is disabled" erscheint:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope ProcessAlternativ setup.bat oder cmd.exe verwenden.
server/
index.js # Express-Server (API + statisches Hosting fuer Docker)
src/
components/
AddLectureModal.tsx
LectureCard.tsx
ParkingLot.tsx
PlanSetupModal.tsx
SemesterSection.tsx
index.ts
App.tsx
store.ts
types.ts
scripts/
manual-like-e2e.mjs
npm run lintausfuehrennpm run typecheckausfuehrennpm run buildausfuehren- README, Lizenz und Repository-Metadaten pruefen
Dieses Projekt ist vollstaendig "gevibecoded" ("vibe-coded") entstanden, also mit starker KI-Unterstuetzung bei Architektur, Implementierung und Iteration. Trotz funktionierender Builds und Checks kann es fachliche, technische oder sicherheitsrelevante Luecken geben. Bitte vor produktivem Einsatz eine gruendliche manuelle Pruefung durchfuehren.
Das Repository ist fuer eine oeffentliche GitHub-Veroeffentlichung vorbereitet mit:
LICENSE(MIT)CONTRIBUTING.mdCODE_OF_CONDUCT.mdSECURITY.md
MIT, siehe LICENSE.



0 comments
log in to comment.