6.7 KiB
Executable File
6.7 KiB
Executable File
SchulOS - Worklog
Project Status Description
Status: Phase 10 - Project pulled from GitHub, database seeded, navigation consolidated
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.
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
Key Facts
- License: Custom non-commercial license (free for schools, no selling, revenue must be donated to environmental protection)
- Mission: Reduce paper consumption in schools (environmental protection)
- Database: SQLite only (
provider = "sqlite", file-based atdb/custom.db) - GitHub: https://github.com/cetinmustafa83/schulos
- Demo Login: demo@competencetrack.org / Demo2025!
Seeded Data
- School: Grundschule Am Park (ELEMENTARY, Berlin)
- School Year: 2025/2026
- Classes: 3a (8 students), 3b (7 students) - 15 total
- Subjects: Mathematik, Deutsch
- Competencies: 14 (7 Math + 7 German)
- Progress entries: 30
- Assessments: 1 with 8 results
- Grading: 1 scheme (Noten 1-6)
- Parents: 21 contacts, 8 messages
- Behavior: 6 categories, 10 incidents
- Rubrics: 3
- Comment bank: 5 categories, 12 entries
- Audit logs: 5
Current Goals / Completed Modifications / Verification Results
Phase 10 Completed Work
1. Project Setup
- Pulled project from GitHub repo
- Configured git authentication with token (saved to
/home/z/.git-credentials) - Installed dependencies with
bun install - Fixed Prisma schema validation errors (missing relation fields for ClassMessagingLock and EscalationPolicy)
- Pushed schema fix to GitHub
2. Database Setup
- Confirmed SQLite-only configuration (
provider = "sqlite") - Ran
bun run db:pushto create database schema - Ran
bun run db:seedto populate full demo data (school, classes, students, subjects, competencies, etc.) - Updated
prisma/seed-demo.tsto link demo accounts to the existing school (instead of creating a separate "Demo Schule") - All 5 demo accounts now have access to seeded data
3. Navigation Consolidation
- Refactored sidebar navigation from 3 groups (Analysis, Teaching, Setup) into 5 consolidated sections per TODO.md:
- Home (Start) - Dashboard, Notifications
- Teach (Unterricht) - Classes, Progress, Assessments, Grading, Reports, Attendance, Homework, Lesson Plans, Resources, Notebooks, Drawing, Portfolio, Rubrics, Comments, Peer Assessment, Tablet Grading, Seating, Subjects, Competitions (19 items)
- School Life (Schulleben) - Calendar, Communication, Announcements, Events, Newsletter, Library, Transport, Counseling, Wellness, Career, Discipline, Behavior, Illness, Substitutes, Timetable, Exam Calendar, Parents (17 items)
- Insights (Erkenntnisse) - Competence Flower, Mastery Matrix, Analytics, Coverage, Grade Analytics, Reports, AI Tests, Data Import/Export (8 items)
- Administration (Verwaltung) - Competencies, Districts, Settings (3 items)
- Added i18n keys for new section labels (DE + EN)
- Pushed to GitHub
4. Bug Fixes
- Fixed Prisma schema: Added missing
schoolIdfield andschoolrelation toClassMessagingLockmodel - Fixed Prisma schema: Added
escalationPoliciesOverriddenandclassMessagingLocksLockedrelation fields toUsermodel - Fixed Prisma schema: Added
classMessagingLocksrelation toClassGroupmodel - Fixed Prisma schema: Added relation names to avoid ambiguity (
"EscalationOverriddenBy","ClassMessagingLockLockedBy") - Fixed seed-demo.ts: Now uses existing school from seed.ts instead of creating a duplicate
Verification Results
- ✅ Lint passes with 0 errors
- ✅ Dev server runs on port 3000
- ✅ All demo accounts login successfully
- ✅ Dashboard shows real data (15 students, 2 classes, 21 parents, enrollment chart, grade distribution)
- ✅ Navigation consolidated into 5 sections (verified via browser)
- ✅ All commits pushed to GitHub
Commits Pushed
9b9115c- Fix: Prisma schema - add missing relation fields for ClassMessagingLock and EscalationPolicy9f26c6d- Fix: seed-demo now links demo accounts to existing school688a91a- Refactor: Consolidate sidebar navigation into 5 top-level sections
Unresolved Issues or Risks, Priority Recommendations for Next Phase
Known Issues
- Onboarding tour - Appears on every login, may need to be dismissible permanently
- WebSocket connection - CT-WS connection timeout warnings in console (real-time features may not work in dev)
- PWA install prompt - Shows "Install SchulOS" dialog on load, may want to delay or suppress in dev
Priority Recommendations for Phase 11
- Page Tab Consolidation - Implement tabs within pages (e.g., Classes page should have tabs: Overview, Students, Subjects, Staff, Timetable, Seating, Attendance, Competencies)
- Remove Duplicate Sidebar Entries - After tab consolidation, remove standalone entries that now belong as tabs
- School Policy DB Records - Move configurable policies, thresholds, and escalation windows into database-backed school policy records
- Authorization Tests - Add server-side authorization tests including cross-school IDOR attempts
- Mobile/Tablet Optimization - Ensure 44x44px minimum touch targets and keyboard/screen-reader support
- PDF Report Generation - Implement @react-pdf/renderer for report cards
- Digital Notebook Enhancement - Ensure stylus/pen support works on iPad
- AI Features - Evaluate CoreAI/ZeroClaw integration needs
Files Modified in Phase 10
/home/z/my-project/prisma/schema.prisma- Fixed 4 relation validation errors/home/z/my-project/prisma/seed-demo.ts- Updated to use existing school/home/z/my-project/src/components/app-layout.tsx- Consolidated navigation into 5 sections/home/z/my-project/src/lib/i18n.ts- Added i18n keys for new nav sections
Key Files to Reference
/home/z/my-project/prisma/schema.prisma- Full database schema (SQLite)/home/z/my-project/prisma/seed.ts- Main seed script (creates school, classes, students, etc.)/home/z/my-project/prisma/seed-demo.ts- Demo account creation/home/z/my-project/src/components/app-layout.tsx- Main layout with navigation/home/z/my-project/src/lib/navigation-config.ts- Navigation configuration/home/z/my-project/src/lib/i18n.ts- German/English translations/home/z/my-project/PRD.md- Full product requirements document/home/z/my-project/TODO.md- Execution plan and remaining tasks