How starringdaggers/boltab works
Purpose and entry points
Boltab Brilliant Schools is a role-based school portal for administrators, teachers, and students. It is a Next.js App Router application that combines dashboards and HTTP APIs in one deployment. Public access begins at src/app/page.tsx and src/app/login/page.tsx; authenticated users are routed into role areas under src/app/admin, src/app/teacher, or src/app/student.
Authentication and authorization boundary
JWT authentication is issued and cleared through src/app/api/auth/login/route.ts and src/app/api/auth/logout/route.ts, using httpOnly cookies. Session, JWT, password hashing, and role checks are centralized in src/lib/session.ts, src/lib/jwt.ts, src/lib/password.ts, and src/middleware.ts. Middleware protects role-prefixed dashboard routes; API handlers must enforce their corresponding role/access rules, including admin delegation and controlled result visibility.
Role-specific application surfaces
Each role has its own layout and server/UI route tree: src/app/admin/layout.tsx, src/app/teacher/layout.tsx, and src/app/student/layout.tsx. Shared dashboard navigation and presentation live in src/components/shared/DashboardShell.tsx. Admin is the operational control plane; teacher routes support assigned teaching work; student routes expose personal academic, attendance, fee, and timetable data.
Admin school-management control plane
Admin pages and APIs manage the school’s core reference and account data: students, teachers, classes, subjects, terms, accounts/delegations, and school fee setup. Representative boundaries are src/app/admin/students/page.tsx, src/app/api/admin/students/route.ts, src/app/api/admin/teachers/route.ts, src/app/api/admin/classes/route.ts, and src/app/api/admin/terms/route.ts. Admin-specific authorization support is in src/lib/adminAccess.ts. CSV student ingestion is a dedicated mutation endpoint at src/app/api/admin/students/import/route.ts.
Academic workflows: assignments, results, and report cards
Teachers obtain their authorized classes, subjects, terms, and assignments through endpoints such as src/app/api/teacher/assignments/route.ts and src/app/api/teacher/results/route.ts, then submit academic results and report-card data. Admin manages report-card records and release/settings via src/app/api/admin/report-cards/route.ts and src/app/api/admin/report-cards/settings/route.ts. Student results are exposed through src/app/api/student/results/route.ts; visibility policy is isolated in src/lib/resultsAccess.ts. Grade computation/presentation logic is supported by src/lib/grading.ts, src/lib/reportCardFields.ts, and src/components/report-card/ReportCardView.tsx.
Operations: attendance, fees, timetables, and presence
Attendance has separate teacher recording, student viewing, and admin oversight paths: src/app/api/teacher/attendance/route.ts, src/app/api/student/attendance/route.ts, and src/app/api/admin/attendance/route.ts. Fees use admin-managed class fees and payments with student-facing balances/history: src/app/api/admin/class-fees/route.ts, src/app/api/admin/fee-payments/route.ts, and src/app/api/student/fees/route.ts. Timetables are constructed by admins using src/components/timetable/TimetableBuilder.tsx, persisted via src/app/api/admin/timetables/route.ts, and consumed through src/app/api/timetables/route.ts. Presence heartbeat/status endpoints support active-user tracking at src/app/api/presence/heartbeat/route.ts and src/app/api/presence/status/route.ts.
Data, runtime, and infrastructure
The runtime is Next.js 14 with React/TypeScript and route handlers; styling is Tailwind-based. Prisma is the persistence boundary: schema and seed data are in prisma/schema.prisma and prisma/seed.ts, accessed through src/lib/db.ts. The intended database is PostgreSQL, with Neon named in setup guidance. Manual SQL migrations under prisma/ indicate schema evolution for attendance, report cards, fees, timetables, profile pictures, and school settings. Deployment targets are Next.js-capable hosting such as Vercel or Netlify, configured with DATABASE_URL, JWT_SECRET, and token-expiry environment variables.
Main entry points: db.ts Prisma data layer · admin/layout.tsx Admin portal · student/layout.tsx Student portal · route.ts Assignments & results
Components 19
Role portals
- Dashboard shell
src/components/shared/DashboardShell.tsx - Admin portal · Operational school-management control plane.
src/app/admin/layout.tsx - Teacher portal · Assigned teaching and recording workflows.
src/app/teacher/layout.tsx - Student portal · Personal academic and operational data.
src/app/student/layout.tsx
HTTP API domains
- Auth endpoints · Issues and clears JWT cookies.
src/app/api/auth/login/route.ts - Admin school management · Manages accounts, students, teachers, classes, subjects, terms, and fee setup.
src/app/api/admin/students/route.ts - Student CSV import
src/app/api/admin/students/import/route.ts - Assignments & results · Teacher submission, admin report-card release, and student result delivery.
src/app/api/teacher/results/route.ts - Attendance workflows · Teacher recording, student viewing, and admin oversight.
src/app/api/teacher/attendance/route.ts - Fees & payments · Admin payment management and student balances.
src/app/api/admin/fee-payments/route.ts - Timetable management · Admin-built schedules consumed by users.
src/app/api/admin/timetables/route.ts - Presence tracking · Heartbeat and active-user status.
src/app/api/presence/heartbeat/route.ts
Persistence
- Prisma data layer · Application persistence boundary.
src/lib/db.ts - School data schema · Models school data and initial records.
prisma/schema.prisma - PostgreSQL / Neon · Production database configured by DATABASE_URL.
Other components
- Public entry & login · Public landing and sign-in entry points.
src/app/login/page.tsx - Session & access control · JWT, passwords, role checks, and route protection.
src/middleware.ts - Report-card rendering · Computes and presents report-card fields.
src/components/report-card/ReportCardView.tsx - Next.js deployment · Single deployment serving App Router pages and route handlers.
Connections 31
- Public entry & login → Auth endpoints: sign in
- Auth endpoints → Session & access control: JWT cookies
- Session & access control → Admin portal: admin route guard
- Session & access control → Teacher portal: teacher route guard
- Session & access control → Student portal: student route guard
- Dashboard shell → Admin portal: shared navigation
- Dashboard shell → Teacher portal: shared navigation
- Dashboard shell → Student portal: shared navigation
- Admin portal → Admin school management: manages school data
- Admin school management → Student CSV import: bulk ingestion
- Admin portal → Assignments & results: report-card control
- Teacher portal → Assignments & results: assignments and results
- Student portal → Assignments & results: view released results
- Assignments & results → Report-card rendering: grades and report cards
- Teacher portal → Attendance workflows: record attendance
- Admin portal → Attendance workflows: oversight
- Student portal → Attendance workflows: view history
- Admin portal → Fees & payments: manage payments
- Student portal → Fees & payments: balances and history
- Admin portal → Timetable management: build schedules
- Student portal → Timetable management: consume schedules
- Admin school management → Prisma data layer: persist
- Assignments & results → Prisma data layer: persist
- Attendance workflows → Prisma data layer: persist
- Fees & payments → Prisma data layer: persist
- Timetable management → Prisma data layer: persist
- Presence tracking → Prisma data layer: track status
- Prisma data layer → School data schema: models
- Prisma data layer → PostgreSQL / Neon: DATABASE_URL
- Next.js deployment → Public entry & login: serves pages
- Next.js deployment → Auth endpoints: serves APIs