/student/*: homework, goals, grades, progress, attendance, calendar, activities, and notifications.
Access is gated to the
student Clerk organization role. Every other role is redirected away from /student/* routes, and the middleware plus the (student) route group layout both enforce the check.Self-scoped by design
Every server action resolves the student’s identity fromstudents.clerk_user_id = auth().userId. A student ID is never accepted from the client, so a student can only ever load their own record. This closes off the class of bug where one student could request another student’s data by changing an ID in a request.
What the portal offers
Dashboard
A personalized greeting, a count of homework due today (or “All caught up!” when there is none), today’s PACE goals with status pills, and a 30-day attendance widget.
Homework
Today, Upcoming, and Done tabs. One-tap Mark Done on a pending item, an Overdue badge on the Today tab, and a Done history capped at the most recent 30 items.
My Goals
Today’s PACE goals plus a 30-day history collapsed to one status per day, and a current met streak.
My Grades
Finalized PACE scores only. In-flight PACEs show a parent-safe status instead of a number, and no moderator identities or notes are exposed.
My Progress
A 30-day goal-achievement trend chart plus per-subject termly projections with an on-track, at-risk, or off-track badge.
Attendance
The student’s own last-30-school-day attendance, shown on the dashboard.
Calendar
A read-only agenda of the student’s own centre plus org-wide events, with a Subscribe link for a private ICS feed.
Activities
Browse the extracurricular catalog for the student’s own centre and org-wide activities, and express interest in one.
Notifications are reached from the header bell’s “See all” link rather than a main sidebar item, and open the full in-app notification history at
/student/notifications.Homework: Today, Upcoming, Done
Land on the dashboard
A student who signs in is routed to
/student/dashboard. Any other role is bounced to /dashboard instead.Open homework
The dashboard card shows how many homework items are due today, with a “View Homework” button to
/student/homework. The Today tab is the default.Goals and grades
Today’s goals show a subject, PACE number, page range, and a status pill: Met, Keep trying, Absent, Excused, No attempt, or Pending. A “View goal history” link opens/student/goals, which shows the current met streak and a 30-day history with one worst-of-day status per day (met, missed, non-attempt, pending).
/student/grades shows a PACE score only once it is finalized. A finalized PACE that was failed on every attempt shows N/A rather than 0%. A PACE still moving through moderation shows a status label instead: Awaiting moderation, Under external review, Returned for re-entry, Under review, or Pending. Readiness checks (self-tests) are excluded from graded results.
Progress
/student/progress shows a 30-day goal-achievement-rate line chart and, per subject, a termly PACE projection card: PACEs completed against the term target, a status badge (on track, at risk, off track), and the student’s current weekly pace against the required weekly pace. The view is strictly read-only, with no comparison to other students or centres, and an empty state reads “No progress data yet” rather than showing an error.
Calendar
/student/calendar lists events for the student’s own learning centre plus org-wide events, filtered to student-visible items only. Admin, staff, and parent-only events are excluded. Each entry shows a title, formatted date or time, and an event-type badge, with no edit or delete controls. The Subscribe link at /student/calendar/subscribe generates a private ICS feed URL scoped to the student’s own visibility and centre, for syncing with an external calendar app.
Activities
/student/extracurriculars shows the same activity catalog staff use, narrowed to org-wide activities plus the student’s own centre, with admin controls hidden and an option to express interest. Opening an activity from the catalog goes to /student/extracurriculars/[id] for its detail view; an activity from a different centre renders as not found.
Student guide: getting started
A step-by-step walkthrough for students using the portal.
Parent portal overview
The equivalent read-only view for a parent, covering the same domains.
Homework overview
How homework is assigned and verified on the staff side.
Roles and permissions reference
The full list of roles and what each can access.