Summary of all changes in this phase: - 13 commits pushed to GitHub - 4 orphan files deleted (-1008 lines dead code) - 3 duplicate nav entries removed - 92 orphaned i18n keys removed - 6 broken API calls fixed - All emojis removed from UI code - 44px touch targets + reduced-motion CSS added - All hardcoded English strings translated to German - PWA/onboarding/WebSocket UX issues fixed - AI Studio with SnapGen/Perchance integration added - Calendar filter tabs + grading analytics view added
5.2 KiB
Executable File
5.2 KiB
Executable File
SchulOS - Worklog
Project Status Description
Status: Phase 11 - Architecture audit, i18n, UX fixes complete
SchulOS is a free, open-source school management system focused on competency-based assessment and grading. Built with Next.js 16, TypeScript, Tailwind CSS, shadcn/ui, Prisma, and SQLite (only).
Tech Stack
- Framework: Next.js 16 (App Router)
- Language: TypeScript 5
- Styling: Tailwind CSS + shadcn/ui
- Database: Prisma ORM + SQLite (only - no other DB)
- Auth: Self-hosted email/password with argon2id hashing, session cookies
- i18n: German + English (all UI text via t() function)
- AI: AI Studio with SnapGen video gen, Perchance image gen, agentic chat (teachers/admins only)
- PWA: Installable, offline support, push notifications
GitHub
- Repo: https://github.com/cetinmustafa83/schulos
- Demo Login: demo@competencetrack.org / Demo2025!
Current Goals / Completed Modifications / Verification Results
Phase 11 Completed Work
Architecture Audit & Cleanup
- Fixed broken API calls in UnifiedGradingPanel (/api/v1/grades* → /api/assessments)
- Fixed broken API calls in ProfessionalCalendar (/api/v1/calendar/events → /api/calendar-events)
- Removed 3 duplicate nav entries: tablet-grading, exam-calendar, school-events
- Deleted 4 orphan files (-1008 lines): grading-panel.tsx, notification-hub.tsx, unified-nav-menu.tsx, navigation-config.ts
- Cleaned role-access: Added 17+ views to teacherViews, 9+ to studentViews, 8+ to parentViews
- Removed 92 orphaned i18n keys (tablet_grading.*)
- Removed stale ViewName entries: tablet-grading, exam-calendar, school-events
Feature Enhancements
- Calendar filter tabs: Alle | Prüfungen | Veranstaltungen | Ferien (replaces removed nav entries)
- Grading analytics view: 3rd view mode in UnifiedGradingPanel with stats, subject breakdown, histogram
- AI Studio: 4-tab module (Video, Image, Lesson Plan, AI Agent) - teachers/admins only
- SnapGen AI video generation API
- Perchance AI image generation API
- "Save to Lesson" feature linking AI content to SubjectLesson
- Access control: students/parents see "Kein Zugriff"
UX Fixes
- PWA prompt suppressed in dev, delayed 30s in production, 7-day dismissal memory
- Onboarding tour respects "Don't show again" preference
- WebSocket warnings silenced (reconnection delay 5s, attempts 3, no console spam)
- Digitale Hefte sizing fixed: h-[calc(100vh-8rem)] with overflow-hidden
Compliance Fixes
- Removed all emojis from UI code (Lucide icon names instead)
- 44px touch targets enforced via @media (pointer: coarse) CSS
- prefers-reduced-motion support added (animations disabled, transitions 0.01ms)
- i18n: All hardcoded English strings replaced with German in:
- UnifiedGradingPanel (labels, filters, statuses, buttons)
- ProfessionalCalendar (buttons, dialog, toast messages)
- subjects-view (placeholders)
- AI Studio (confirmed German throughout)
Verification Results
- ✅ All 41 teacher modules load without crashes
- ✅ Lint passes with 0 errors
- ✅ No console errors or warnings
- ✅ No emojis in src/ (verified with Python script)
- ✅ German text confirmed in grading, calendar, AI Studio
Commits Pushed (Phase 10-11)
9b9115c- Fix Prisma schema validation errors9f26c6d- Fix seed-demo to use existing school688a91a- Consolidate navigation into 5 sectionsc078ec3- Update worklog Phase 10763ebef- Add AI Studio with SnapGen/Perchancefe3eb4a- Restrict AI Studio to teachers/admins + Save to Lesson411ff14- Fix Digitale Hefte sizing1af01dd- Architecture audit: Fix broken APIs, remove duplicatesaf0b0a5- Cleanup: Remove dead nav items, orphaned i18n keys0c7a69f- Add calendar filter tabs and grading analytics13fce9d- Fix UX: Suppress PWA, respect onboarding, silence WS678a4e9- Compliance: Remove emojis, add touch targets, reduced-motion7461f76- i18n: Replace hardcoded English with German
Unresolved Issues or Risks
Known Limitations
- Auth is session-based - No real NextAuth.js integration yet
- WebSocket (real-time collaboration) - Mini-service not running, falls back silently
- UnifiedGradingPanel - Uses assessments API (not a dedicated grades API); data transformation bridges the gap
- Bulk results API -
/api/assessments/bulk-resultsmay not exist yet - Student/parent nav - Some declared items may still be filtered by role-access
Priority Recommendations for Next Phase
- Page Tab Consolidation - Implement tabs within Classes page (Overview, Students, Subjects, Staff, Timetable, Seating, Attendance, Competencies)
- Student Detail Page - Consolidate student workflows into tabs (Overview, Progress, Assessments, Reports, Attendance, Wellbeing, Goals, Notebook, Portfolio, Support)
- School Policy DB Records - Move configurable policies into database-backed records
- PDF Report Generation - Implement @react-pdf/renderer for report cards
- Digital Notebook Enhancement - Ensure stylus/pen support works on iPad
- Server-side Authorization Tests - Cross-school IDOR attempt tests
- Docker Support - Dockerfile for easy self-hosted deployment