# Klassenportal Privates Dashboard für Schulklassen. Stundenplan, Hausaufgaben, Noten, Fehlzeiten, Klassenkalender und Chat an einem Ort. Läuft unter [info1.ifb.lol](https://info1.ifb.lol). ## 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. ## 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/auth.js JWT-Sign/-Verify, requireAuth-Middleware src/db.js SQLite, Schema, Migrationen src/routes.js Auth, Admin, Chat, Kalender, Tickets, Health src/teacher.js Lehrerendpoints src/files.js Dateiablage mit Quota src/mailer.js Resend-Wrapper public/ HTML-Seiten (Vanilla JS) ``` ## Lizenz MIT. Siehe [LICENSE](./LICENSE).