Commit Graph
10 Commits
Author SHA1 Message Date
adminandClaude Opus 4.8 9020b214f3 Fix empty class dropdown on Attendance for admins
The classes query filtered by teacher_id when isAdmin was momentarily false
(roles not yet loaded) and never refetched — cache key lacked isAdmin. Gate on
!loading and include isAdmin in the query key.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 17:11:25 -04:00
adminandClaude Opus 4.8 8fe6ad00f4 Gradebook: classes, weighted grading, assignments, grades, student role
- Migration: student role, students.user_id, grade_categories/grade_scale
  (school defaults + per-class override), assignments, grades + RLS
- Classes area (nav): list/create classes, class page with Gradebook / Roster /
  Grading setup tabs; teachers see their classes, admins all
- Weighted-category grade calc -> letter scale (shared helper)
- Roster assignment (admin), assignment + grade entry (teacher/admin)
- Student profile: view-only Grades tab (parents/students)
- Portal access: create parent OR student logins linked to the student

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 16:57:27 -04:00
adminandClaude Opus 4.8 73a4e70f0b Parent hand-off: admin creates parent/teacher accounts + portal edit
- Admin server function (service-role) to create accounts, set role, and
  optionally link a parent to a student; wired via env_file (.env.secret)
- Admin > Users: "Add a user" form (teacher/parent/admin) with one-time temp password
- Student profile > Family: "Parent portal access" — create + link a parent login
- Parents can now edit their own child's profile (RLS-scoped); internal notes stay admin-only

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 16:30:56 -04:00
adminandClaude Opus 4.8 894b0722e0 Student profile: read-only view by default, Edit button to edit
Profile / Family & pickup / Academics tabs now render a clean read-only
view with an Edit toggle that reveals the editable form (Save/Cancel/Done).
Guardian/pickup/login cards show summaries in view mode, inputs in edit mode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 16:21:04 -04:00
adminandClaude Opus 4.8 48cf441cba Profile model: quick-create + full editable student profile
- /students/new: quick create (name + DOB) -> redirects into the profile
- /students/$id: full editable profile with photo upload, and tabs for
  Profile / Family & pickup (guardians, emergency contacts, pickups) /
  Academics (curriculum logins + records) / Attendance / Tuition / Contracts
- Migration: students.photo_path + private student-photos storage bucket
  (admin write, linked-user read); regenerate types

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 16:13:36 -04:00
adminandClaude Opus 4.8 9d5b11bb10 Fix blank /students/new and /students/$id (missing Outlet)
students.tsx was the list AND the parent of students.new / students.$id but
rendered no <Outlet/>, so child routes never showed. Make students.tsx an
Outlet layout and move the list to students.index.tsx. Add an errorComponent
to students.new as a safety net.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 22:42:45 -04:00
adminandClaude Opus 4.8 cee27a6189 Add full-page student intake form matching Bayside paper forms
- Migration: student intake fields (health, academic, dismissal, agreement),
  student_guardians + student_curriculum_logins tables, extend authorized_pickups
  (alt_phone, notes, kind) with RLS mirroring existing policies
- New /students/new full-page multi-section form (replaces the add dialog)
- Students list links to the full page; regenerate Supabase types

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 22:21:38 -04:00
adminandClaude Opus 4.8 f509fa6528 Wire compose to VPS Traefik (host-mode, wildcard hostname, HTTPS)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 20:14:11 -04:00
adminandClaude Opus 4.8 36d3d8526e Add Docker deploy config for VPS (node-server + Traefik)
- Dockerfile: bun build with Nitro node-server preset -> standalone Node runner
- docker-compose.yml: Traefik labels for automatic HTTPS, runtime env from .env
- .dockerignore + DEPLOY.md (Hostinger VPS: Docker + Dockge + Traefik steps)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 19:06:42 -04:00
adminandClaude Opus 4.8 45d36827d2 Migrate backend from Lovable Cloud to own Supabase (EDU project)
- Point .env + supabase/config.toml at EDU (qgmcpounpkgsjlwosjdi)
- Replace Lovable Google-OAuth shim with native supabase.auth.signInWithOAuth
- Remove src/integrations/lovable and @lovable.dev/cloud-auth-js dependency
- Drop .lovable metadata; gitignore supabase/.temp

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 18:04:18 -04:00