Files
FL-Akademie/docs/PLAN.md

126 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.
# Motorrad-Akademie LMS Ersatz für Tutor LMS
Dieses Dokument ist die **Produkt- und Architekturgrundlage** für eine private, zielorientierte Lernplattform. Sie ersetzt schrittweise [Tutor LMS](https://tutorlms.com/) auf [akademie.fahrlaessig.com](https://akademie.fahrlaessig.com/).
---
## 1. Zielbild
- **Eigentümerschaft:** Code und Daten bei euch, keine Plugin-Lizenzkosten für das LMS-Kernstück.
- **Bedienung:** Reduzierte Admin-Oberfläche auf echte Workflows (Kurs anlegen, Lektionen, Zugang, Zahlung).
- **Kontinuität:** URLs, Kurslogik und Look sollen zur bestehenden Akademie passen (Migration/Redirects später).
- **Skalierung:** Produktionsfähige Basis (API, DB, Jobs), ohne WordPress als Laufzeit für den Lernbereich.
---
## 2. Ist-Analyse Akademie (öffentlich)
| Bereich | Anforderung |
|--------|-------------|
| Kurse | Karten mit Titel, Autor, Kategorien (kostenlos, Module, Übung der Woche). |
| Kurrikulum | `/kurse/.../lektionen/...` Module/Themen und Lektionen. |
| Zugang | Einschreiben vs. „Mit dem Lernen beginnen“. |
| Monetarisierung | Abo-Preise, Warenkorb/Demo, kostenpflichtig vs. kostenlos. |
| Vertrauen | Bewertungen, Dozentenprofile. |
| Marketing | Startseite, Roadmap, Blog/Shop teils außerhalb LMS. |
---
## 3. Tutor-LMS-Feature-Parität (phasenweise)
### Phase A MVP (Betrieb Akademie)
- Nutzer: Registrierung, Login, Passwort, Rollen (Lernender, Admin).
- Kurse: Slug, Titel, Beschreibung, Thumbnail, Kategorien, veröffentlicht.
- Kurrikulum: Kurs → Modul → Lektion (Reihenfolge), Rich-Text-Inhalt.
- Einschreibung + Fortschritt (Lektion abgeschlossen).
- Zahlungen: vorbereitet (Stripe o. Ä.); **Dev:** kostenlose Einschreibung + Preisfelder in DB.
- Öffentliche Kursliste + Kurssicht + Lektionsplayer-Layout.
### Phase B später
- Quizze, Aufgaben, Zertifikate, Prerequisites, Content Drip, Gradebook, erweiterte Analytics, Bundles, Live-Sessions, KI-Inhalte nur bei konkretem Bedarf.
---
## 4. Technische Architektur (Umsetzung in diesem Repo)
| Komponente | Wahl |
|------------|------|
| App | Next.js (App Router), TypeScript |
| Datenbank | PostgreSQL 16 |
| ORM | Prisma |
| Auth | NextAuth.js (Credentials, erweiterbar auf OAuth) |
| Deployment lokal | Docker Compose (`web` + `db`) |
Verzeichnisüberblick:
- `app/` Routen: Marketing (`/`), Kurse, Lektionen, Login, **Mitgliederbereich `/portal`**, **Admin `/admin`**, öffentliche Zertifikatsseite `/zertifikat/[code]`, API (`/api/...`).
- `components/` UI-Bausteine (Header, Kurskarten, Formulare).
- `lib/` Prisma-Client, Auth, Landing-Content, Zertifikate, Fortschritt, Slugs.
- `prisma/schema.prisma` Datenmodell inkl. `LandingPage`, `Certificate`.
- `prisma/seed.ts` Demo-Daten + Standard-Landing.
- `docker-compose.yml` Postgres (Hostport **5433**) + Web.
- `Dockerfile` + `scripts/docker-entrypoint.sh` Migration, Seed, `next dev`.
- `README.md` Einstieg & Schnellstart.
- `docs/HANDBUCH.md` **implementierter Stand** (Admin, Portal, Zertifikate, Docker).
---
## 5. Migration (später, produktiv)
- Export aus WordPress/Tutor → Import-Skripte ins Zielschema.
- Nutzer: Einladung/Passwort-Reset statt unsicherer Passwort-Übernahme.
- SEO: 301 von alten `/kurse/`-URLs.
- Zahlungen: Abgleich mit Payment-Provider (Kunden-IDs).
---
## 6. Sicherheit (Produktion)
- TLS, Security-Header (CSP iterativ), Rate-Limits auf Login.
- OWASP-Basics, keine Secrets im Image, regelmäßige Updates.
- RBAC für Admin/Dozent/Support.
---
## 7. Monitoring (sekundär, aber vorgesehen)
- Strukturierte Logs, Metriken (Latenz, 5xx, Jobs), Alerts bei Zahlungs-Webhooks.
- Healthchecks für App, DB, Queue.
---
## 8. Ausführung Entwicklung mit Docker Compose
Voraussetzung: Docker und Docker Compose installiert.
```bash
cd /home/lo/Dokumente/real-akademie-replacement
docker compose up --build
```
- App: **http://localhost:3000**
- Demo-Login (Seed): `admin@akademie.local` / `devpassword`
Lernender: `lernender@akademie.local` / `devpassword`
Umgebungsvariablen siehe `.env.example`. Für reine lokale Entwicklung ohne Docker: Node 20+, `npm install`, Postgres starten, `DATABASE_URL` setzen, `npx prisma generate`, `npx prisma migrate dev`, `npm run dev`.
**Hinweis Next.js:** Unter demselben dynamischen Pfadsegment (z.B. `/kurse/[slug]/…`) müssen die Parameternamen in allen verschachtelten Routen übereinstimmen (hier durchgängig `slug` für den Kurs).
---
## 9. Roadmap dieses Repos
1. ~~MVP-UI und Datenmodell~~; ~~Admin-UI (Kurse, Nutzer, Landing Page)~~; ~~Portal mit Passwort & Zertifikat~~ umgesetzt (siehe `docs/HANDBUCH.md`).
2. Stripe/Webhooks + echte Abos.
3. Migrationstools von Tutor-Export (Inhalte, Nutzer, Zahlungen).
4. Phase-B-Features nach Priorität (Quizze, Drip, …).
---
## 10. Repository
- **Git:** `https://git.loepperts.com/loepperts/FL-Akademie.git`
- Einstieg für neue Entwickler: zuerst **`README.md`**, dann **`docs/HANDBUCH.md`** und dieses **`docs/PLAN.md`**.