Initial commit: FL-Akademie LMS mit Docker, Admin, Portal und Dokumentation.
Made-with: Cursor
This commit is contained in:
100
README.md
Normal file
100
README.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 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`
|
||||
|
||||
---
|
||||
|
||||
## 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.
|
||||
Reference in New Issue
Block a user