Files
FL-Akademie/README.md
2026-04-13 23:19:13 +02:00

117 lines
3.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FL-Akademie (Motorrad-Akademie LMS)
Private Lernplattform als **Ersatz für Tutor LMS** für die [Fahrlässig Motorrad Akademie](https://akademie.fahrlaessig.com/) Next.js, PostgreSQL, Prisma, NextAuth. Ziel: eigene Kontrolle über Kurse, Nutzer, Landing Page und Zertifikate ohne WordPress-Plugin-Abhängigkeit.
**Remote-Repository:** `https://git.loepperts.com/loepperts/FL-Akademie.git`
### Ersten Push ausführen
Lokal ist `origin` gesetzt. Ein Push benötigt Zugangsdaten für `git.loepperts.com` (Benutzer/Passwort, Personal Access Token oder SSH).
```bash
cd FL-Akademie # bzw. real-akademie-replacement
git push -u origin main
```
Bei SSH statt HTTPS:
```bash
git remote set-url origin git@git.loepperts.com:loepperts/FL-Akademie.git
git push -u origin main
```
---
## Schnellstart (Docker)
Voraussetzung: Docker & Docker Compose.
```bash
git clone https://git.loepperts.com/loepperts/FL-Akademie.git
cd FL-Akademie
docker compose up --build -d
```
- **App:** [http://localhost:3000](http://localhost:3000)
- **PostgreSQL (vom Host):** `localhost:5433` → Container-Port 5432 (weniger Konflikte mit lokalem Postgres)
Beim Start führt der Web-Container aus: `prisma generate`, `prisma migrate deploy`, `prisma db seed`, danach **`next dev`**.
---
## Umgebungsvariablen
Siehe `.env.example`. In `docker-compose.yml` sind für die Entwicklung bereits Werte gesetzt (`DATABASE_URL`, `NEXTAUTH_URL`, `NEXTAUTH_SECRET`). Für Produktion **eigenes starkes `NEXTAUTH_SECRET`** und korrekte **`NEXTAUTH_URL`** (öffentliche HTTPS-URL) setzen.
---
## Demo-Zugänge (Seed)
| Rolle | E-Mail | Passwort |
|------------|---------------------------|--------------|
| Admin | `admin@akademie.local` | `devpassword` |
| Dozent | `matze@akademie.local` | `devpassword` |
| Lernender | `lernender@akademie.local`| `devpassword` |
Der Lernende ist im Demo-Kurs „Modul 1 Die Fahrschule“ eingeschrieben.
---
## Wichtige Routen
| Bereich | Pfad | Beschreibung |
|--------|------|----------------|
| Öffentlich | `/` | Startseite (Inhalte aus DB, bearbeitbar im Admin) |
| Kurse | `/kurse`, `/kurse/[slug]` | Katalog, Kurssdetail, Einschreibung (kostenlose Kurse) |
| Lektionen | `/kurse/[slug]/lektionen/[lessonSlug]` | Lernansicht (Login + Einschreibung nötig) |
| Login | `/login` | Anmeldung |
| Mitgliederbereich | `/portal` | Fortschritt, Kurse wiederholen, Link zu Zertifikaten |
| Konto | `/portal/account` | Passwort ändern |
| Zertifikate (Liste) | `/portal/certificates` | Eigene Teilnahmebestätigungen |
| Zertifikat (öffentlich) | `/zertifikat/[code]` | Anzeige/Druck mit Verifikationscode |
| Administration | `/admin` | Nur Rolle `ADMIN`: Kurse, Nutzer, Landing Page |
`/dashboard` leitet nach `/portal` um.
---
## Dokumentation im Repo
| Datei | Inhalt |
|--------|--------|
| [docs/PLAN.md](docs/PLAN.md) | Produktvision, Architektur, Phasen, Sicherheit/Monitoring |
| [docs/HANDBUCH.md](docs/HANDBUCH.md) | Betrieb: Admin, Portal, Zertifikate, Datenmodell, Docker-Details |
---
## Projektstruktur (kurz)
```
app/ # Next.js App Router (Seiten, API-Routen)
components/ # UI-Komponenten
lib/ # Prisma-Client, Auth, Landing-Parsing, Zertifikate, Fortschritt
prisma/ # schema.prisma, Migrationen, seed.ts
scripts/ # docker-entrypoint.sh
```
---
## NPM-Skripte (ohne Docker)
Node 20+, lokales PostgreSQL, `.env` aus `.env.example`:
```bash
npm install
npx prisma generate
npx prisma migrate dev
npm run dev
```
`postinstall` führt kein `prisma generate` aus (Docker/CI-freundlich); nach `npm install` immer **`npx prisma generate`** ausführen.
---
## Lizenz / Nutzung
Internes Projekt für die Akademie keine allgemeine Open-Source-Lizenz festgelegt, sofern nicht separat ergänzt.