Round 25: Substitute Teacher, School Newsletter, Career Guidance, Styling
- Substitute Teacher Management View: pool, absences, assignments, statistics, weekly schedule - School Newsletter View: editor, templates, distribution, analytics, open/click tracking - Student Career & Guidance View: career exploration, interest quiz, portfolio, goals, appointments - 6 new Prisma models: SubstituteTeacher, TeacherAbsence, SubstitutionAssignment, CareerProfile, CareerGoal, CareerAppointment - Enhanced Newsletter model with content, scheduling, and analytics fields - Enhanced settings-view with gradient header, glassmorphism cards, danger zone - Enhanced student-portal-view with animated welcome banner, quick action cards - 16+ new API route files - 300+ i18n keys added - All views verified working in browser
This commit is contained in:
1 parent
a159ed7fe6
commit
3d0d518bb9
57 files changed
+8370
-48
No files matched your search
+281
@@ -1703,4 +1703,285 @@ Unresolved issues / Next phase priorities:
|
||||
- Calendar reminders on tablet
|
||||
- More schlaukopf.de exercises and questions
|
||||
- School event management needs seeded data
|
||||
|
||||
## Task ID: 2-d
|
||||
Agent: Styling Enhancer Round 25
|
||||
Task: Enhance settings-view.tsx and student-portal-view.tsx with professional styling improvements
|
||||
|
||||
Work Log:
|
||||
- Added new CSS utility classes and keyframe animations to globals.css:
|
||||
- `.gradient-border-left` — Left border with gradient accent (emerald/teal/amber)
|
||||
- `.animate-slide-in-left` — Slide in from left (slideInLeft keyframe)
|
||||
- `.animate-fade-up` — Fade in while moving up (fadeUp keyframe)
|
||||
- `.status-dot` — Small status indicator dot with glow variants (amber, rose, violet)
|
||||
- `.progress-animated` — Progress bar with fill animation (progressFill keyframe)
|
||||
- `.animate-pulse-glow` — Pulsing glow effect (pulseGlow keyframe, dark mode variant)
|
||||
- `.glassmorphism-card` — Frosted glass card with backdrop blur and translucent surface
|
||||
- `.gradient-border-card` — Card with gradient border on all sides
|
||||
- Enhanced settings-view.tsx:
|
||||
- Replaced simple header with gradient banner with school branding (decorative elements, animated settings icon)
|
||||
- Added user profile avatar section with initials and role badge
|
||||
- Added date display with CalendarDays icon
|
||||
- Added hover lift effects on stat cards using framer-motion whileHover
|
||||
- Added glassmorphism card effects on school, years, data, and branding tabs
|
||||
- Added AnimatePresence wrapper with smooth tab transitions (slide in/out)
|
||||
- Added TabsList backdrop blur and ring styling
|
||||
- Enhanced branding tab with logo preview section (fallback School icon)
|
||||
- Added color preview strip showing primary/secondary/accent colors
|
||||
- Enhanced Danger Zone with animate-pulse-glow effect
|
||||
- Added AnimatePresence import from framer-motion
|
||||
- Added Avatar/AvatarFallback import
|
||||
- Enhanced student-portal-view.tsx:
|
||||
- Added animate-pulse-glow effect on hero banner
|
||||
- Added gradient-border-card on stat cards inside hero
|
||||
- Added glassmorphism-card on all major cards (level up, streak, radar, grade trend, heatmap, daily challenge, learning time)
|
||||
- Enhanced Quick Action Cards with card-hover-lift and glassmorphism-card
|
||||
- Added "Today's Schedule" mini-timeline widget with current period indicator and status-dot
|
||||
- Added "Motivational Quote" section with fade animation and locale-aware quotes
|
||||
- Added "My Progress" section with animated progress bars using progress-animated class
|
||||
- Added backdrop blur and ring styling on main TabsList
|
||||
- All lint checks pass (0 errors, 1 pre-existing warning in unrelated file)
|
||||
|
||||
Stage Summary:
|
||||
- Both settings and student portal views now have consistent glassmorphism card effects
|
||||
- Smooth tab transitions with framer-motion AnimatePresence
|
||||
- New CSS utility classes available for future use across the app
|
||||
- Enhanced visual hierarchy with gradient borders, status dots, and progress animations
|
||||
- Dark mode fully supported across all new styling
|
||||
- Wellness view needs seeded check-in data
|
||||
|
||||
## Task ID: 2-a
|
||||
Agent: Substitute Teacher Management Builder
|
||||
Task: Build Substitute Teacher Management View with pool, absences, assignments, and statistics
|
||||
|
||||
Work Log:
|
||||
- Added SubstituteTeacher, TeacherAbsence, SubstitutionAssignment models to Prisma schema
|
||||
- Added reverse relations to School, User, ClassGroup, and Subject models
|
||||
- Set userId as @unique on SubstituteTeacher to satisfy one-to-one relation with User
|
||||
- Ran `bunx prisma db push --accept-data-loss` successfully
|
||||
- Created 6 API routes:
|
||||
- `/api/substitutes/route.ts` - GET (list with search/filter), POST (create)
|
||||
- `/api/substitutes/[id]/route.ts` - GET, PUT (update), DELETE (soft delete)
|
||||
- `/api/substitutes/absences/route.ts` - GET (list with date/status/teacher filters), POST (create)
|
||||
- `/api/substitutes/absences/[id]/route.ts` - GET, PUT, DELETE (cascading assignment delete)
|
||||
- `/api/substitutes/assignments/route.ts` - GET (list with filters), POST (create + auto-update counts)
|
||||
- `/api/substitutes/assignments/[id]/route.ts` - GET, PUT (status update), DELETE (count decrement)
|
||||
- API includes auto-coverage detection: when all assignments for an absence are confirmed/completed, absence status updates to 'covered'
|
||||
- Added 100+ i18n keys in both German and English (sub.* namespace)
|
||||
- Added 'substitute-teacher' to ViewName type in store.ts
|
||||
- Built comprehensive substitute-teacher-view.tsx (1849 lines) with:
|
||||
- Gradient header banner with emerald/teal theme and animated stat counters
|
||||
- Substitute Pool tab: card grid with search/filter, star ratings, qualifications badges, contact info, CRUD dialogs
|
||||
- Absences tab: list with type icons, coverage progress bars, status badges, auto-assign and manual assign buttons
|
||||
- Schedule tab: weekly grid view with color-coded assignment cards, week navigation, print button, notification button
|
||||
- Statistics tab: 4 stat cards, monthly trends line chart, assignments-by-status pie chart, top absent teachers bar chart, substitute utilization bar chart, cost tracking section (admin only)
|
||||
- Rating dialog with interactive star selection
|
||||
- Role-based access: admin/vice_principal full CRUD, teacher report own absences, student/parent read-only
|
||||
- Auto-assign logic: scores substitutes by rating and utilization, assigns to all weekdays in absence range
|
||||
- Delete confirmation dialogs for all entity types
|
||||
- Responsive design with dark mode support, framer-motion animations
|
||||
- Added navigation entry in app-layout.tsx for teacher, student, and parent nav sections with UserCheck icon
|
||||
- All lint checks pass (no new errors)
|
||||
|
||||
Stage Summary:
|
||||
- 3 new Prisma models (SubstituteTeacher, TeacherAbsence, SubstitutionAssignment)
|
||||
- 6 new API routes with full CRUD and relationship management
|
||||
- 100+ i18n keys (DE/EN)
|
||||
- 1849-line frontend component with 4 tabs, 5 dialogs, Recharts charts, role-based access
|
||||
- Navigation integrated into teacher, student, and parent sidebars
|
||||
|
||||
## Task ID: 2-b
|
||||
Agent: School Newsletter & Communication Builder
|
||||
Task: Build School Newsletter & Communication View
|
||||
|
||||
Work Log:
|
||||
- Extended Newsletter model in Prisma schema with new fields: subject, bannerImageUrl, templateType, targetAudience, status, scheduledAt, sentAt, openCount, clickCount, bounceCount, totalRecipients
|
||||
- Added CareerProfile and CareerAppointment models to fix schema validation errors
|
||||
- Added SubstituteTeacher, TeacherAbsence, SubstitutionAssignment models to fix schema validation errors
|
||||
- Created API route `/api/newsletters/route.ts` with extended GET (status, templateType, authorId, search filters) and POST (new fields: subject, bannerImageUrl, templateType, targetAudience, scheduledAt)
|
||||
- Created API route `/api/newsletters/[id]/route.ts` with extended PUT (all new fields), POST (duplicate, archive, publish actions), and DELETE
|
||||
- Created API route `/api/newsletters/[id]/send/route.ts` with POST (target audience selection, scheduled send, recipient counting)
|
||||
- Created API route `/api/newsletters/[id]/stats/route.ts` with GET (single newsletter stats and aggregate school analytics with monthly trends, best sending time, template performance)
|
||||
- Built comprehensive frontend component `school-newsletter-view.tsx` (1558 lines) with:
|
||||
- Newsletter list with status badges, search, filters (status, category), animated stat counters
|
||||
- Newsletter editor with rich text toolbar (bold, italic, underline, lists, alignment, links, images, headings)
|
||||
- Template system (Monthly Update, Event Recap, Parent Newsletter, Emergency Alert) with auto-populated content
|
||||
- Preview mode with desktop/mobile toggle
|
||||
- Distribution panel with target audience selection (all, teachers, parents, classes, roles)
|
||||
- Send dialog with scheduling option
|
||||
- Analytics dashboard with Recharts (engagement trend, template performance, engagement distribution pie chart, subscriber growth)
|
||||
- Best sending time analysis with Sparkles icon
|
||||
- View newsletter dialog with stats display
|
||||
- Role-based views: ADMIN/VICE_PRINCIPAL full CRUD, TEACHER create/edit own, STUDENT/PARENT read-only
|
||||
- Added 110+ i18n keys in both German and English for newsletter feature
|
||||
- Added 'school-newsletter' to ViewName in store.ts
|
||||
- Added Newspaper icon import and navigation entry in app-layout.tsx for teacher, student, and parent nav sections
|
||||
- Added SchoolNewsletterView import and rendering case in app-layout.tsx
|
||||
- All lint checks pass
|
||||
|
||||
Stage Summary:
|
||||
- Full school newsletter & communication feature with creation, editing, distribution, and analytics
|
||||
- Newsletter model extended with template types, audience targeting, sending status, and tracking stats
|
||||
- API supports role-based CRUD with audience counting, scheduled sending, and aggregate analytics
|
||||
- Frontend supports newsletter list, rich text editor, preview, distribution, and analytics with Recharts
|
||||
- Complete i18n support (DE + EN) with 110+ keys
|
||||
|
||||
## Task ID: 2-c
|
||||
Agent: Student Career & Guidance View Builder
|
||||
Task: Build Student Career & Guidance View for career exploration, guidance, and planning
|
||||
|
||||
Work Log:
|
||||
- Added CareerProfile, CareerGoal, CareerAppointment models to Prisma schema with proper indexes and @@map
|
||||
- Added reverse relations to School (careerProfiles, careerAppointments), Student (careerProfile), and User (careerAppointments)
|
||||
- Fixed duplicate SubstituteTeacher model and userId unique constraint issue in existing schema
|
||||
- Created API route `/api/career/route.ts` with GET (career data with stats) and POST (create career profile)
|
||||
- Created API route `/api/career/profile/route.ts` with GET (get student profile with role-based access) and PUT (update profile)
|
||||
- Created API route `/api/career/appointments/route.ts` with GET (list appointments with role-based filters) and POST (create appointment)
|
||||
- Created API route `/api/career/appointments/[id]/route.ts` with GET, PUT, DELETE
|
||||
- Created API route `/api/career/goals/route.ts` with GET (list goals by profile) and POST (create goal)
|
||||
- Created API route `/api/career/goals/[id]/route.ts` with GET, PUT, DELETE
|
||||
- Built comprehensive frontend component `student-career-view.tsx` (1750+ lines) with:
|
||||
- Career exploration tab with interactive interest quiz (8 questions, 1-5 scale, radar chart results)
|
||||
- Career cluster exploration with visual grid (Technology, Health, Business, Arts, Science, Social)
|
||||
- Career profile cards with descriptions, requirements, salary ranges, subject recommendations, skills needed
|
||||
- Career portfolio tab with interests, strengths, education path, desired career, work experience, volunteer experience, certifications
|
||||
- Career planning tab with goals CRUD, milestones, progress tracking, scholarship finder, application tracker
|
||||
- Guidance appointments tab with scheduling, upcoming/past views, status management
|
||||
- Admin statistics tab with cluster distribution pie chart, education path bar chart, goal stats
|
||||
- Animated stat counters, gradient header banner, smooth framer-motion transitions
|
||||
- Role-based views: STUDENT (full exploration, portfolio, planning), TEACHER (appointments, student views), ADMIN (statistics dashboard), PARENT (read-only child views)
|
||||
- Career interest quiz with Recharts radar chart visualization
|
||||
- 12 pre-defined career profiles with German school system paths (Hauptschule, Realschule, Gymnasium, Berufsschule)
|
||||
- 3 scholarship entries (Deutschlandstipendium, Bafög, Erasmus+)
|
||||
- Added 120+ i18n keys in both German and English for career guidance feature
|
||||
- Added 'student-career' to ViewName in store.ts
|
||||
- Added Compass icon import to app-layout.tsx
|
||||
- Added StudentCareerView import and rendering case in app-layout.tsx
|
||||
- Added navigation entry in all three nav sections (admin, student, parent) with Compass icon
|
||||
- All lint checks pass
|
||||
|
||||
Stage Summary:
|
||||
- Full career guidance feature with exploration quiz, portfolio, planning, and appointments
|
||||
- CareerProfile, CareerGoal, CareerAppointment models with proper relations and cascade deletes
|
||||
- API supports role-based CRUD with STUDENT/PARENT read filtering and TEACHER/ADMIN full access
|
||||
- Frontend supports 5 tabs: Exploration, Portfolio, Planning, Appointments, Statistics (admin only)
|
||||
- Interactive interest quiz with radar chart, career cluster grid, 12 career profiles
|
||||
- Complete i18n support (DE + EN) with 120+ keys
|
||||
|
||||
|
||||
---
|
||||
Task ID: 2-a
|
||||
Agent: Substitute Teacher Management Builder
|
||||
Task: Build Substitute Teacher Management View
|
||||
|
||||
Work Log:
|
||||
- Built comprehensive Substitute Teacher Management View (substitute-teacher-view.tsx, 1849 lines)
|
||||
- Features: Substitute teacher pool, absence management, substitution schedule, statistics
|
||||
- Created API routes: /api/substitutes/route.ts, /api/substitutes/[id]/route.ts, /api/substitutes/absences/route.ts, /api/substitutes/absences/[id]/route.ts, /api/substitutes/assignments/route.ts, /api/substitutes/assignments/[id]/route.ts
|
||||
- Added Prisma models: SubstituteTeacher, TeacherAbsence, SubstitutionAssignment with relations
|
||||
- Added 'substitute-teacher' to ViewName type in store.ts
|
||||
- Added i18n keys (DE + EN) for navigation and view content
|
||||
- Added navigation entry in app-layout.tsx with UserCheck icon
|
||||
- All lint checks pass
|
||||
|
||||
Stage Summary:
|
||||
- Substitute Teacher Management view with pool, absences, assignments, and statistics
|
||||
- 6 API route files created
|
||||
- 3 new Prisma models (SubstituteTeacher, TeacherAbsence, SubstitutionAssignment)
|
||||
- Role-based access control for all views
|
||||
|
||||
---
|
||||
Task ID: 2-b
|
||||
Agent: School Newsletter & Communication Builder
|
||||
Task: Build School Newsletter & Communication View
|
||||
|
||||
Work Log:
|
||||
- Built comprehensive School Newsletter View (school-newsletter-view.tsx, 1558 lines)
|
||||
- Features: Newsletter editor, management, distribution, analytics
|
||||
- Created/updated API routes: /api/newsletters/route.ts, /api/newsletters/[id]/route.ts, /api/newsletters/[id]/send/route.ts, /api/newsletters/[id]/stats/route.ts
|
||||
- Enhanced Newsletter model with new fields for content, status, scheduling, analytics
|
||||
- Added 'school-newsletter' to ViewName type in store.ts
|
||||
- Added i18n keys (DE + EN) for navigation and view content
|
||||
- Added navigation entry in app-layout.tsx with Newspaper icon
|
||||
- All lint checks pass
|
||||
|
||||
Stage Summary:
|
||||
- School Newsletter view with editor, templates, distribution, and analytics
|
||||
- 4 API route files created/updated
|
||||
- Enhanced Newsletter model with content, scheduling, and analytics fields
|
||||
- Role-based access control for all views
|
||||
|
||||
---
|
||||
Task ID: 2-c
|
||||
Agent: Student Career & Guidance View Builder
|
||||
Task: Build Student Career & Guidance View
|
||||
|
||||
Work Log:
|
||||
- Built comprehensive Student Career & Guidance View (student-career-view.tsx, 1750 lines)
|
||||
- Features: Career exploration, interest quiz, guidance appointments, career portfolio, goals
|
||||
- Created API routes: /api/career/route.ts, /api/career/profile/route.ts, /api/career/appointments/route.ts, /api/career/appointments/[id]/route.ts, /api/career/goals/route.ts, /api/career/goals/[id]/route.ts
|
||||
- Added Prisma models: CareerProfile, CareerGoal, CareerAppointment with relations
|
||||
- Added 'student-career' to ViewName type in store.ts
|
||||
- Added i18n keys (DE + EN) for navigation and view content
|
||||
- Added navigation entry in app-layout.tsx with Compass icon
|
||||
- All lint checks pass
|
||||
|
||||
Stage Summary:
|
||||
- Student Career & Guidance view with career exploration, profile, goals, and appointments
|
||||
- 6 API route files created
|
||||
- 3 new Prisma models (CareerProfile, CareerGoal, CareerAppointment)
|
||||
- Career interest quiz with German school system paths
|
||||
- Role-based access control for all views
|
||||
|
||||
---
|
||||
Task ID: 2-d
|
||||
Agent: Styling Enhancer Round 25
|
||||
Task: Enhance styling across settings-view, student-portal-view, and global CSS
|
||||
|
||||
Work Log:
|
||||
- Enhanced settings-view.tsx with gradient header banner, glassmorphism cards, smooth tab transitions
|
||||
- Enhanced student-portal-view.tsx with animated welcome banner, quick action cards, progress bars
|
||||
- Added global CSS utility classes and keyframe animations to globals.css
|
||||
- All changes pass ESLint validation
|
||||
|
||||
Stage Summary:
|
||||
- Settings view: gradient header, glassmorphism cards, danger zone, school branding section
|
||||
- Student portal: animated welcome banner, quick actions, motivational quotes, progress bars
|
||||
- Global CSS: card-hover-lift, gradient-border-left, animate-slide-in, animate-fade-up utilities
|
||||
|
||||
---
|
||||
Task ID: Round-25
|
||||
Agent: main
|
||||
Task: Round 25 — Substitute Teacher, School Newsletter, Student Career, Styling
|
||||
|
||||
Work Log:
|
||||
- Built 3 new views: substitute-teacher, school-newsletter, student-career
|
||||
- Integrated all views into app-layout.tsx navigation, store, and i18n
|
||||
- Added 6 new Prisma models (SubstituteTeacher, TeacherAbsence, SubstitutionAssignment, CareerProfile, CareerGoal, CareerAppointment)
|
||||
- Enhanced Newsletter model with new fields
|
||||
- Enhanced settings-view and student-portal-view styling
|
||||
- Added global CSS utility classes and animations
|
||||
- Re-created demo accounts after database reset
|
||||
- All lint checks pass, dev server running, browser verified all views render correctly
|
||||
- All new views accessible via sidebar navigation
|
||||
|
||||
Stage Summary:
|
||||
- 3 new views built (5,157 lines total)
|
||||
- 16+ new API route files
|
||||
- 6 new Prisma models
|
||||
- Enhanced styling on settings and student portal views
|
||||
- All views verified working in browser
|
||||
- 300+ i18n keys added
|
||||
|
||||
Unresolved issues / Next phase priorities:
|
||||
- WebSocket connection timeout errors (Caddy proxy)
|
||||
- Need more schlaukopf.de content cloning
|
||||
- Voice communication support in rooms
|
||||
- More styling improvements across all views
|
||||
- Student achievements view needs badge seed data
|
||||
- Calendar reminders on tablet
|
||||
- School event management needs seeded data
|
||||
- Wellness view needs seeded check-in data
|
||||
- Substitute teacher view needs seeded data
|
||||
- Newsletter view needs seeded data
|
||||
- Career view needs seeded data
|
||||
Reference in new issue
Block a user