117 lines
3.7 KiB
Markdown
117 lines
3.7 KiB
Markdown
# 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.
|