How chaudhary-danish/examforge works
ExamForge is a student and administrator portal for academic resources, notices, and AI study help. The main workflow spans account access, academic organization, learning-material uploads and retrieval, and student-facing AI and notice features; administrators also manage students and subjects. The graph emphasizes those product stages and the shared authentication and database layer. Several UI and API files were not excerpted, so their internal interactions are omitted rather than inferred; dashed links are not used to imply undocumented flows.
Main entry points: server.ts Supabase client · auth.ts JWT auth · students/route.ts Student management · upload/route.ts Resource upload
Components 23
Identity & Access
- Login screen
src/app/login/page.tsx - Login API
src/app/api/auth/login/route.ts - Student signup
src/app/api/auth/student-signup/route.ts
Academic Administration
- Student management
src/app/api/admin/students/route.ts - Department management
src/app/api/admin/departments/route.ts - Subject catalog
src/app/api/subjects/route.ts - Admin portal
src/app/admin/dashboard/page.tsx
Learning Resources
- Resource upload
src/app/api/upload/route.ts - Past exam papers
src/app/api/pyqs/route.ts - File delivery
src/app/api/files/[id]/route.ts - Subject learning
src/app/student/subject/[id]/page.tsx
Student Services
- AI study chat
src/app/api/ai/chat/route.ts - AI question endpoint
src/app/api/ai/ask/route.ts - AI study interface
src/app/student/ai/page.tsx - Notice service
src/app/api/notices/route.ts - Notice feed
src/app/student/notices/page.tsx
Shared Services
- JWT auth
src/lib/auth.ts - Supabase client
src/lib/supabase/server.ts - Supabase database
- Email delivery
src/lib/email.ts - Telegram file storage
src/lib/telegram.ts
Other components
- Student or admin
- OpenRouter AI
Connections 19
- Login API → Supabase client: creates client
src/app/api/auth/login/route.ts - Login API → JWT auth: creates token
src/app/api/auth/login/route.ts - Student signup → Supabase client: creates client
src/app/api/auth/student-signup/route.ts - Student signup → Email delivery: sends credentials
src/app/api/auth/student-signup/route.ts - Student management → JWT auth: verifies access
src/app/api/admin/students/route.ts - Student management → Supabase client: creates client
src/app/api/admin/students/route.ts - Student management → Email delivery: sends credentials
src/app/api/admin/students/route.ts - Department management → JWT auth: verifies access
src/app/api/admin/departments/route.ts - Subject catalog → JWT auth: verifies access
src/app/api/subjects/route.ts - Subject catalog → Supabase client: creates client
src/app/api/subjects/route.ts - Resource upload → JWT auth: verifies access
src/app/api/upload/route.ts - Resource upload → Supabase client: creates client
src/app/api/upload/route.ts - Resource upload → Telegram file storage: uploads document
src/app/api/upload/route.ts - AI study chat → JWT auth: verifies access
src/app/api/ai/chat/route.ts - AI study chat → Supabase client: creates client
src/app/api/ai/chat/route.ts - AI study chat → OpenRouter AI: requests completion
src/app/api/ai/chat/route.ts - Notice service → JWT auth: verifies access
src/app/api/notices/route.ts - Notice service → Supabase client: creates client
src/app/api/notices/route.ts - Supabase client → Supabase database: connects to
src/lib/supabase/server.ts