Files
ifb-schulapp/README.md
T
2026-04-21 15:57:44 +02:00

40 lines
1.2 KiB
Markdown

# Schulapp
Dashboard für die Schulklassen. Stundenplan, Hausaufgaben, Noten, Fehlzeiten, Klassenkalender, Chat und Ende zu Ende verschlüsselte Nachrichten an einem Ort.
Läuft unter [info1.simon0x.xyz](https://info1.simon0x.xyz).
## Stack
Node.js 20, Express 5, SQLite über `better-sqlite3`, Vanilla JS im Frontend. Kein Buildschritt. Auth per JWT im HttpOnly-Cookie, bcrypt, TOTP-2FA. Mail über Resend. E2EE mit ECDH P-256 und AES-GCM im Browser.
## Lokal starten
```bash
npm install
cp .env.example .env # JWT_SECRET und RESEND_API_KEY setzen
node index.js
```
Bindet an `127.0.0.1:3010`.
## Registrierung
Beschränkt auf `@ifb-schulen.com`-Adressen (Regex `IFB_EMAIL_RE` in `src/routes.js`). Jeder neue Account muss per Mail bestätigt werden. Neue Lehrerkonten landen in einer Admin-Warteschlange.
## Layout
```
index.js Express-Bootstrap
src/db.js SQLite, Schema, Migrationen
src/routes.js Auth, Admin, Chat, Kalender, Tickets
src/teacher.js Lehrerendpoints
src/files.js Dateiablage mit Quota
src/mailer.js Resend-Wrapper
public/ HTML-Seiten und E2EE-Primitiven
```
## Lizenz
MIT. Siehe [LICENSE](./LICENSE).