119 lines
6.7 KiB
Markdown
Executable File
119 lines
6.7 KiB
Markdown
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 at `db/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:push` to create database schema
|
|
- Ran `bun run db:seed` to populate full demo data (school, classes, students, subjects, competencies, etc.)
|
|
- Updated `prisma/seed-demo.ts` to 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:
|
|
1. **Home** (Start) - Dashboard, Notifications
|
|
2. **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)
|
|
3. **School Life** (Schulleben) - Calendar, Communication, Announcements, Events, Newsletter, Library, Transport, Counseling, Wellness, Career, Discipline, Behavior, Illness, Substitutes, Timetable, Exam Calendar, Parents (17 items)
|
|
4. **Insights** (Erkenntnisse) - Competence Flower, Mastery Matrix, Analytics, Coverage, Grade Analytics, Reports, AI Tests, Data Import/Export (8 items)
|
|
5. **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 `schoolId` field and `school` relation to `ClassMessagingLock` model
|
|
- Fixed Prisma schema: Added `escalationPoliciesOverridden` and `classMessagingLocksLocked` relation fields to `User` model
|
|
- Fixed Prisma schema: Added `classMessagingLocks` relation to `ClassGroup` model
|
|
- 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
|
|
1. `9b9115c` - Fix: Prisma schema - add missing relation fields for ClassMessagingLock and EscalationPolicy
|
|
2. `9f26c6d` - Fix: seed-demo now links demo accounts to existing school
|
|
3. `688a91a` - Refactor: Consolidate sidebar navigation into 5 top-level sections
|
|
|
|
## Unresolved Issues or Risks, Priority Recommendations for Next Phase
|
|
|
|
### Known Issues
|
|
1. **Onboarding tour** - Appears on every login, may need to be dismissible permanently
|
|
2. **WebSocket connection** - CT-WS connection timeout warnings in console (real-time features may not work in dev)
|
|
3. **PWA install prompt** - Shows "Install SchulOS" dialog on load, may want to delay or suppress in dev
|
|
|
|
### Priority Recommendations for Phase 11
|
|
1. **Page Tab Consolidation** - Implement tabs within pages (e.g., Classes page should have tabs: Overview, Students, Subjects, Staff, Timetable, Seating, Attendance, Competencies)
|
|
2. **Remove Duplicate Sidebar Entries** - After tab consolidation, remove standalone entries that now belong as tabs
|
|
3. **School Policy DB Records** - Move configurable policies, thresholds, and escalation windows into database-backed school policy records
|
|
4. **Authorization Tests** - Add server-side authorization tests including cross-school IDOR attempts
|
|
5. **Mobile/Tablet Optimization** - Ensure 44x44px minimum touch targets and keyboard/screen-reader support
|
|
6. **PDF Report Generation** - Implement @react-pdf/renderer for report cards
|
|
7. **Digital Notebook Enhancement** - Ensure stylus/pen support works on iPad
|
|
8. **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
|