Spaces:
Sleeping
Developer Assignment & Sprint Plan
Overview
This document outlines how all backend implementation work is distributed across 3 developers working in parallel sprints. Each sprint is designed so developers can work independently with minimal blocking dependencies.
Conventions
- Dev A (Backend Developer 1)
- Dev B (Backend Developer 2)
- Dev C (Backend Developer 3)
Priority Rules
- Gamification, Payments, and AI are last priority
- AI module integration is handled by a separate team β backend devs only create the integration endpoints/interfaces
- Tasks & Reminders is separated from Gamification and done earlier
- All modules follow the standard NestJS pattern: Entities β DTOs β Services β Controllers β Tests
Localization Requirements (Arabic + English)
The database uses a centralized translation pattern via these tables:
content_translationsβ stores entity-level translations (courses, assignments, quizzes, announcements, etc.)localization_stringsβ UI string translations (dashboard labels, menu items, etc.)language_preferencesβ per-user language settings
How Localization Works in APIs:
Request Header: All API endpoints accept
Accept-Language: arorAccept-Language: enheader (default:en)Entities with Translatable Content (must support Arabic + English):
Entity Translatable Fields Courses name,descriptionAssignments title,description,instructionsQuizzes title,descriptionQuiz Questions question_text,optionsAnnouncements title,contentCourse Materials title,descriptionLabs title,descriptionLab Instructions contentNotifications title,messageCalendar Events title,descriptionAchievements name,descriptionBadges name,descriptionForum Categories name,descriptionSystem Settings (branding) site_name,taglineSupport Tickets Category labels Implementation Pattern (for every module):
// In each service, inject TranslationService @Injectable() export class AssignmentsService { constructor( private translationService: TranslationService, ) {} async findAll(lang: string = 'en') { const assignments = await this.repo.find(); // Merge translations if lang !== 'en' if (lang !== 'en') { return this.translationService.applyTranslations( assignments, 'assignment', lang ); } return assignments; } } // Controller reads Accept-Language header @Get() findAll(@Headers('accept-language') lang: string = 'en') { return this.service.findAll(lang); }Translation CRUD Endpoints (part of Localization Module - Sprint 5, Dev A):
Method Endpoint Description Roles GET /api/translations/:entityType/:entityIdGet translations for entity ALL POST /api/translationsAdd translation INSTRUCTOR, ADMIN PUT /api/translations/:idUpdate translation INSTRUCTOR, ADMIN DELETE /api/translations/:idDelete translation ADMIN GET /api/localization/stringsGet UI strings for language ALL POST /api/localization/stringsAdd/update UI string ADMIN GET /api/localization/languagesList supported languages ALL Response Format (when Arabic is requested):
{ "id": 1, "title": "Ψ§ΩΩΨ§Ψ¬Ψ¨ Ψ§ΩΨ£ΩΩ", // Arabic title "title_original": "First Assignment", // Original English "description": "ΩΨ΅Ω Ψ§ΩΩΨ§Ψ¬Ψ¨", "dueDate": "2025-03-15" }Entities that DON'T need translation (data-only, no user-facing text):
- Grades (numeric)
- Attendance records (status enum)
- Enrollments (references)
- Files (binary data)
- Payments (numeric)
- Security logs (system data)
- Analytics (numeric data)
Shared TranslationService (built in Sprint 5 Localization Module, but the interface should be defined in Sprint 1 so modules can prepare):
// Create this interface early in Sprint 1 // src/common/interfaces/translation.interface.ts export interface ITranslationService { applyTranslations<T>(entities: T[], entityType: string, lang: string): Promise<T[]>; getTranslation(entityType: string, entityId: number, field: string, lang: string): Promise<string>; setTranslation(entityType: string, entityId: number, field: string, lang: string, value: string): Promise<void>; }
Action Item for Sprint 1: Define the
ITranslationServiceinterface and create a simple pass-through implementation. The full implementation comes in Sprint 5 with the Localization module. All modules should acceptAccept-Languageheader from day one.
Sprint Overview
| Sprint | Focus | Dev A | Dev B | Dev C | Status |
|---|---|---|---|---|---|
| 1 | Core Academic | Assignments + Grades | Attendance + Quizzes | Labs + Notifications | β DONE |
| 2 | Communication + Content | Messaging + Discussions | Announcements + Community | Schedule + Course Materials | β DONE |
| 3 | Analytics + Admin | Analytics + Reports | User Management + Roles & Permissions | Tasks & Reminders + Search | β DONE |
| 4 | System & IT + Advanced | Security & Audit + System Settings | Monitoring + Backup | Study Groups + Office Hours + Peer Review | π² REMAINING |
| 5 | Advanced (continued) | Live Sessions + Localization | Support & Feedback + Certificates | Voice & Transcription | π² REMAINING |
| 6 | Last Priority | Gamification | Payments | AI Integration (external team) | π² REMAINING |
Sprint 1: Core Academic Operations π΄ CRITICAL β β DONE
Goal: Build the foundational academic modules that ALL dashboards depend on. Prerequisite: Existing Courses, Enrollments, and Auth modules must be stable. Blocking: Sprint 2 and beyond depend on Sprint 1 completion.
Dev A: Assignments Module + Grades Module
Assignments Module
Reference Doc: Phase 1 - Section 1.1
DB Tables:
assignments,assignment_submissionsEntities: Assignment, AssignmentSubmission
Key Endpoints:
Method Endpoint Description Roles GET /api/assignmentsList assignments (filterable by course, section, status) ALL POST /api/assignmentsCreate assignment INSTRUCTOR, TA GET /api/assignments/:idGet assignment details ALL PATCH /api/assignments/:idUpdate assignment INSTRUCTOR, TA DELETE /api/assignments/:idDelete assignment INSTRUCTOR POST /api/assignments/:id/submitSubmit assignment (file upload) STUDENT GET /api/assignments/:id/submissionsList submissions INSTRUCTOR, TA GET /api/assignments/:id/submissions/myGet student's own submission STUDENT PATCH /api/assignments/:id/submissions/:subId/gradeGrade submission INSTRUCTOR, TA PATCH /api/assignments/:id/submissions/:subId/feedbackAdd feedback INSTRUCTOR, TA Business Logic:
- Validate due dates (cannot submit after deadline unless late submission allowed)
- File upload integration with existing Files module
- Auto-calculate submission stats (on time, late, missing)
- Support different assignment types (individual, group, project)
- Plagiarism check integration point (future)
Files to Create:
src/modules/assignments/ βββ assignments.module.ts βββ entities/ β βββ assignment.entity.ts β βββ assignment-submission.entity.ts βββ dto/ β βββ create-assignment.dto.ts β βββ update-assignment.dto.ts β βββ submit-assignment.dto.ts β βββ grade-submission.dto.ts β βββ assignment-query.dto.ts βββ enums/ β βββ assignment-type.enum.ts β βββ submission-status.enum.ts βββ controllers/ β βββ assignments.controller.ts βββ services/ β βββ assignments.service.ts βββ exceptions/ βββ assignment-not-found.exception.ts βββ submission-deadline-passed.exception.ts
Grades Module
Reference Doc: Phase 1 - Section 1.2
DB Tables:
grades,grade_components,rubrics,rubric_criteriaEntities: Grade, GradeComponent, Rubric, RubricCriteria
Key Endpoints:
Method Endpoint Description Roles GET /api/gradesList grades (filter by student, course, section) ALL GET /api/grades/myStudent's own grades STUDENT POST /api/gradesCreate/update grade INSTRUCTOR, TA PUT /api/grades/:idUpdate grade INSTRUCTOR, TA GET /api/grades/transcript/:studentIdFull transcript STUDENT, ADMIN GET /api/grades/gpa/:studentIdGPA calculation STUDENT, ADMIN GET /api/grades/distribution/:sectionIdGrade distribution chart data INSTRUCTOR, ADMIN GET /api/rubricsList rubrics INSTRUCTOR, TA POST /api/rubricsCreate rubric INSTRUCTOR GET /api/rubrics/:idGet rubric with criteria ALL PUT /api/rubrics/:idUpdate rubric INSTRUCTOR DELETE /api/rubrics/:idDelete rubric INSTRUCTOR Business Logic:
- GPA calculation (support different grading scales: 4.0, percentage, letter)
- Grade component weighting (e.g., assignments 30%, quizzes 20%, final 50%)
- Auto-calculate final grade from components
- Grade history/audit trail
- Transcript generation with cumulative GPA
Files to Create:
src/modules/grades/ βββ grades.module.ts βββ entities/ β βββ grade.entity.ts β βββ grade-component.entity.ts β βββ rubric.entity.ts β βββ rubric-criteria.entity.ts βββ dto/ β βββ create-grade.dto.ts β βββ update-grade.dto.ts β βββ grade-query.dto.ts β βββ create-rubric.dto.ts β βββ transcript-response.dto.ts βββ enums/ β βββ grade-status.enum.ts βββ controllers/ β βββ grades.controller.ts β βββ rubrics.controller.ts βββ services/ β βββ grades.service.ts β βββ rubrics.service.ts βββ exceptions/ βββ grade-not-found.exception.ts
Dev B: Attendance Module + Quizzes Module
Attendance Module
Reference Doc: Phase 1 - Section 1.3
DB Tables:
attendance_sessions,attendance_records,attendance_photos,ai_attendance_processing,face_recognition_dataEntities: AttendanceSession, AttendanceRecord, AttendancePhoto
Key Endpoints:
Method Endpoint Description Roles GET /api/attendance/sessionsList attendance sessions INSTRUCTOR, TA, ADMIN POST /api/attendance/sessionsCreate attendance session INSTRUCTOR, TA GET /api/attendance/sessions/:idGet session with records INSTRUCTOR, TA POST /api/attendance/recordsMark attendance (single or batch) INSTRUCTOR, TA PUT /api/attendance/records/:idUpdate attendance record INSTRUCTOR, TA GET /api/attendance/by-course/:courseIdCourse attendance summary INSTRUCTOR, TA, ADMIN GET /api/attendance/by-student/:studentIdStudent attendance summary STUDENT, INSTRUCTOR, ADMIN GET /api/attendance/myStudent's own attendance STUDENT GET /api/attendance/summaryOverall attendance stats INSTRUCTOR, ADMIN POST /api/attendance/photosUpload attendance photo (for AI) INSTRUCTOR, TA GET /api/attendance/report/:sectionIdAttendance report for section INSTRUCTOR, TA PATCH /api/attendance/sessions/:id/closeClose attendance session INSTRUCTOR, TA POST /api/attendance/import-excelImport attendance from Excel file INSTRUCTOR, TA GET /api/attendance/export-excel/:sessionIdExport attendance session to Excel INSTRUCTOR, TA POST /api/attendance/ai-photoSend photo to AI microservice for face recognition INSTRUCTOR, TA GET /api/attendance/ai-photo/:processingIdGet AI processing result INSTRUCTOR, TA Business Logic:
- Attendance status: PRESENT, ABSENT, LATE, EXCUSED
- Auto-close sessions after configured time
- Calculate attendance percentage per student per course
- Generate attendance reports (per course, per student, per date range)
- Support QR code / location-based attendance (future integration point)
- Excel Import/Export (requires
exceljsnpm package):- Upload
.xlsxfile with columns:student_id,status(PRESENT/ABSENT/LATE/EXCUSED) - Validate student IDs exist and are enrolled in the course
- Return validation errors for invalid entries
- Export attendance records for a session to
.xlsx
- Upload
- AI Photo Attendance Integration (external microservice):
- Instructor uploads a class photo via
POST /api/attendance/ai-photo - Backend forwards photo to AI microservice (separate service, URL configurable via system settings)
- AI microservice returns Excel file with recognized student IDs
- Backend parses the returned Excel and auto-marks attendance
- Flow:
Upload Photo β AI Microservice β Excel Response β Parse β Mark Attendance - Processing is async: returns a
processingId, poll for results - AI microservice endpoint is configurable:
AI_ATTENDANCE_SERVICE_URLenv variable
- Instructor uploads a class photo via
AI Attendance Integration Detail:
// Flow for POST /api/attendance/ai-photo // 1. Receive photo file from instructor // 2. Send to AI microservice: POST {AI_ATTENDANCE_SERVICE_URL}/process-photo // Body: multipart/form-data { photo: File, sectionId: number } // 3. AI returns: { processingId: string, status: 'processing' } // 4. Poll: GET {AI_ATTENDANCE_SERVICE_URL}/result/{processingId} // Returns: Excel file with student_id column of attended students // 5. Parse Excel β mark those students as PRESENT // 6. Students NOT in Excel β mark as ABSENTNPM Dependencies to Add:
npm install exceljs # For Excel import/exportFiles to Create:
src/modules/attendance/ βββ attendance.module.ts βββ entities/ β βββ attendance-session.entity.ts β βββ attendance-record.entity.ts β βββ attendance-photo.entity.ts βββ dto/ β βββ create-session.dto.ts β βββ mark-attendance.dto.ts β βββ batch-attendance.dto.ts β βββ attendance-query.dto.ts β βββ attendance-summary.dto.ts β βββ import-attendance.dto.ts // Excel import validation βββ enums/ β βββ attendance-status.enum.ts βββ controllers/ β βββ attendance.controller.ts βββ services/ β βββ attendance.service.ts β βββ attendance-excel.service.ts // Excel import/export logic β βββ attendance-ai.service.ts // AI microservice integration βββ exceptions/ βββ session-not-found.exception.ts βββ session-closed.exception.ts βββ invalid-excel-format.exception.ts
Quizzes Module
Reference Doc: Phase 1 - Section 1.4
DB Tables:
quizzes,quiz_questions,quiz_attempts,quiz_answers,quiz_difficulty_levelsEntities: Quiz, QuizQuestion, QuizAttempt, QuizAnswer, QuizDifficultyLevel
Key Endpoints:
Method Endpoint Description Roles GET /api/quizzesList quizzes (by course/section) ALL POST /api/quizzesCreate quiz INSTRUCTOR, TA GET /api/quizzes/:idGet quiz details ALL PUT /api/quizzes/:idUpdate quiz INSTRUCTOR, TA DELETE /api/quizzes/:idDelete quiz INSTRUCTOR POST /api/quizzes/:id/publishPublish quiz INSTRUCTOR GET /api/quizzes/:id/questionsGet questions (no answers for students) ALL POST /api/quizzes/:id/questionsAdd question INSTRUCTOR, TA PUT /api/quizzes/:id/questions/:qIdUpdate question INSTRUCTOR, TA DELETE /api/quizzes/:id/questions/:qIdDelete question INSTRUCTOR, TA POST /api/quizzes/:id/attemptStart quiz attempt STUDENT POST /api/quizzes/:id/submitSubmit quiz answers STUDENT GET /api/quizzes/:id/resultsGet quiz results (student's own) STUDENT GET /api/quizzes/:id/attemptsList all attempts (stats) INSTRUCTOR, TA GET /api/quizzes/:id/analyticsQuiz analytics (avg score, etc.) INSTRUCTOR, TA Business Logic:
- Question types: MCQ, True/False, Short Answer, Essay, Fill-in-the-blank
- Auto-grading for MCQ, True/False, Fill-in-the-blank
- Manual grading queue for Short Answer, Essay
- Time limits with auto-submit
- Randomize question order option
- Attempt limits (e.g., max 3 attempts)
- Show/hide correct answers after submission (configurable)
- Difficulty levels for adaptive quizzing (future)
Files to Create:
src/modules/quizzes/ βββ quizzes.module.ts βββ entities/ β βββ quiz.entity.ts β βββ quiz-question.entity.ts β βββ quiz-attempt.entity.ts β βββ quiz-answer.entity.ts β βββ quiz-difficulty-level.entity.ts βββ dto/ β βββ create-quiz.dto.ts β βββ update-quiz.dto.ts β βββ create-question.dto.ts β βββ submit-quiz.dto.ts β βββ quiz-query.dto.ts β βββ quiz-results.dto.ts βββ enums/ β βββ question-type.enum.ts β βββ quiz-status.enum.ts β βββ attempt-status.enum.ts βββ controllers/ β βββ quizzes.controller.ts βββ services/ β βββ quizzes.service.ts β βββ quiz-grading.service.ts βββ exceptions/ βββ quiz-not-found.exception.ts βββ attempt-limit-reached.exception.ts βββ quiz-time-expired.exception.ts
Dev C: Labs Module + Notifications Module
Labs Module
Reference Doc: Phase 1 - Section 1.5
DB Tables:
labs,lab_submissions,lab_instructions,lab_attendanceEntities: Lab, LabSubmission, LabInstruction, LabAttendance
Key Endpoints:
Method Endpoint Description Roles GET /api/labsList labs (by course/section) ALL POST /api/labsCreate lab INSTRUCTOR, TA GET /api/labs/:idGet lab details ALL PUT /api/labs/:idUpdate lab INSTRUCTOR, TA DELETE /api/labs/:idDelete lab INSTRUCTOR GET /api/labs/:id/instructionsGet lab instructions ALL POST /api/labs/:id/instructionsAdd/update instructions INSTRUCTOR, TA POST /api/labs/:id/submitSubmit lab work STUDENT GET /api/labs/:id/submissionsList submissions INSTRUCTOR, TA GET /api/labs/:id/submissions/myStudent's own submission STUDENT PATCH /api/labs/:id/submissions/:subId/gradeGrade submission INSTRUCTOR, TA POST /api/labs/:id/attendanceMark lab attendance INSTRUCTOR, TA GET /api/labs/:id/attendanceGet lab attendance INSTRUCTOR, TA GET /api/labs/:id/resourcesGet lab resources/files ALL POST /api/labs/:id/resourcesUpload lab resource INSTRUCTOR, TA Business Logic:
- Lab types: regular, virtual, practical
- Lab instructions support markdown/rich text
- Lab submission with code files upload
- Lab attendance separate from class attendance
- Resource files linked to existing Files module
- Pre-lab and post-lab assessments support
Files to Create:
src/modules/labs/ βββ labs.module.ts βββ entities/ β βββ lab.entity.ts β βββ lab-submission.entity.ts β βββ lab-instruction.entity.ts β βββ lab-attendance.entity.ts βββ dto/ β βββ create-lab.dto.ts β βββ update-lab.dto.ts β βββ create-instruction.dto.ts β βββ submit-lab.dto.ts β βββ grade-submission.dto.ts β βββ lab-query.dto.ts βββ enums/ β βββ lab-type.enum.ts β βββ lab-submission-status.enum.ts βββ controllers/ β βββ labs.controller.ts βββ services/ β βββ labs.service.ts βββ exceptions/ βββ lab-not-found.exception.ts
Notifications Module
Reference Doc: Phase 2 - Section 2.1
DB Tables:
notifications,notification_preferences,scheduled_notificationsEntities: Notification, NotificationPreference, ScheduledNotification
Key Endpoints:
Method Endpoint Description Roles GET /api/notificationsList user's notifications (paginated) ALL GET /api/notifications/unread-countGet unread count ALL PATCH /api/notifications/:id/readMark as read ALL PATCH /api/notifications/read-allMark all as read ALL DELETE /api/notifications/:idDelete notification ALL GET /api/notifications/preferencesGet notification preferences ALL PUT /api/notifications/preferencesUpdate preferences ALL Business Logic:
- Notification types: ASSIGNMENT, GRADE, ANNOUNCEMENT, MESSAGE, SYSTEM, DEADLINE, ENROLLMENT
- Real-time delivery via WebSocket (future) or polling
- Notification preferences per type (email, in-app, push)
- Scheduled notifications for deadlines
- Batch create notifications (e.g., notify all students in a course)
- IMPORTANT: Export
NotificationServicefor other modules to inject and create notifications
Files to Create:
src/modules/notifications/ βββ notifications.module.ts βββ entities/ β βββ notification.entity.ts β βββ notification-preference.entity.ts β βββ scheduled-notification.entity.ts βββ dto/ β βββ create-notification.dto.ts β βββ notification-query.dto.ts β βββ update-preferences.dto.ts βββ enums/ β βββ notification-type.enum.ts βββ controllers/ β βββ notifications.controller.ts βββ services/ β βββ notifications.service.ts // EXPORTED for other modules βββ exceptions/ βββ notification-not-found.exception.ts
Sprint 2: Communication + Content π HIGH β β DONE
Goal: Build all communication features and course content management. Prerequisite: Sprint 1 Notifications module must be complete (for notification integration). Dependencies: Messaging and Discussions can use Notifications service.
Dev A: Messaging Module + Discussions Module
Messaging Module
Reference Doc: Phase 2 - Section 2.2
DB Tables:
messages,message_participantsEntities: Message, MessageParticipant
Key Endpoints:
Method Endpoint Description Roles GET /api/messages/conversationsList conversations ALL GET /api/messages/conversations/:idGet conversation messages ALL POST /api/messagesSend message ALL PATCH /api/messages/:id/readMark as read ALL DELETE /api/messages/:idDelete message ALL GET /api/messages/searchSearch messages ALL GET /api/messages/unread-countUnread message count ALL Business Logic:
- Conversations are between 2+ participants
- Support text, file attachments (via Files module)
- Message read receipts
- Trigger notifications on new message
- Group messaging support
Discussions Module
Reference Doc: Phase 2 - Section 2.4
DB Tables:
course_chat_threads,chat_messagesEntities: DiscussionThread, DiscussionMessage
Key Endpoints:
Method Endpoint Description Roles GET /api/discussionsList discussions (by course) ALL POST /api/discussionsCreate discussion thread ALL GET /api/discussions/:idGet thread with replies ALL POST /api/discussions/:id/replyPost reply ALL PATCH /api/discussions/:id/pinPin/unpin INSTRUCTOR, TA PATCH /api/discussions/:id/closeClose discussion INSTRUCTOR, TA PATCH /api/discussions/:id/mark-answerMark reply as answer INSTRUCTOR, TA DELETE /api/discussions/:idDelete thread INSTRUCTOR, ADMIN Business Logic:
- Threaded discussions per course/section
- Pin important threads
- Mark best answer
- Notification on replies to own threads
Dev B: Announcements Module + Community Module
Announcements Module
Reference Doc: Phase 2 - Section 2.3
DB Tables:
announcements(or uses messages with type annotation)Entities: Announcement
Key Endpoints:
Method Endpoint Description Roles GET /api/announcementsList announcements ALL POST /api/announcementsCreate announcement INSTRUCTOR, TA, ADMIN GET /api/announcements/:idGet announcement ALL PUT /api/announcements/:idUpdate announcement INSTRUCTOR, TA, ADMIN DELETE /api/announcements/:idDelete announcement INSTRUCTOR, ADMIN PATCH /api/announcements/:id/publishPublish announcement INSTRUCTOR, ADMIN PATCH /api/announcements/:id/scheduleSchedule for future INSTRUCTOR, ADMIN PATCH /api/announcements/:id/pinPin announcement INSTRUCTOR, ADMIN Business Logic:
- Scope: course-level, department-level, or system-wide
- Draft β Published β Archived workflow
- Schedule for future publishing
- Notify all relevant users on publish
- Support attachments
Community Module
Reference Doc: Phase 2 - Section 2.5
DB Tables:
community_posts,community_post_comments,community_post_reactions,forum_categoriesEntities: CommunityPost, PostComment, PostReaction, ForumCategory
Key Endpoints:
Method Endpoint Description Roles GET /api/community/postsList posts (by category, course) ALL POST /api/community/postsCreate post ALL GET /api/community/posts/:idGet post with comments ALL PUT /api/community/posts/:idUpdate post OWNER DELETE /api/community/posts/:idDelete post OWNER, ADMIN POST /api/community/posts/:id/commentAdd comment ALL POST /api/community/posts/:id/reactAdd/toggle reaction ALL PATCH /api/community/posts/:id/pinPin post INSTRUCTOR, ADMIN GET /api/community/categoriesList forum categories ALL POST /api/community/categoriesCreate category ADMIN Business Logic:
- Post types: question, discussion, resource-share, poll
- Reactions: like, helpful, insightful
- Categorized forums per course
- Moderation capabilities
Dev C: Schedule Module (Enhanced) + Course Materials Module
Schedule Module (Enhanced)
Reference Doc: Phase 3
DB Tables:
course_schedules,exam_schedules,calendar_events,calendar_integrationsEntities: ExamSchedule, CalendarEvent, CalendarIntegration (CourseSchedule already exists)
Key Endpoints:
Method Endpoint Description Roles GET /api/schedule/my/dailyToday's schedule for current user ALL GET /api/schedule/my/weeklyWeekly schedule for current user ALL GET /api/schedule/section/:sectionIdSection schedule ALL GET /api/calendar/eventsCalendar events (date range) ALL POST /api/calendar/eventsCreate calendar event INSTRUCTOR, ADMIN PUT /api/calendar/events/:idUpdate event INSTRUCTOR, ADMIN DELETE /api/calendar/events/:idDelete event INSTRUCTOR, ADMIN GET /api/exams/scheduleExam schedule ALL POST /api/exams/scheduleCreate exam schedule INSTRUCTOR, ADMIN PUT /api/exams/schedule/:idUpdate exam schedule INSTRUCTOR, ADMIN DELETE /api/exams/schedule/:idDelete exam schedule INSTRUCTOR, ADMIN GET /api/calendar/academicAcademic calendar ALL GET /api/calendar/integrationsExternal calendar integrations ALL POST /api/calendar/integrationsAdd integration (Google, Outlook) ALL Business Logic:
- Aggregate class schedules + exams + events into unified calendar
- Conflict detection for exams
- Academic calendar with semester milestones
- External calendar sync (Google Calendar, Outlook)
- Daily/weekly view aggregation per user role
Course Materials Module
Reference Doc: Phase 5
DB Tables:
course_materials,lecture_sections_labsEntities: CourseMaterial, LectureSectionLab
Key Endpoints:
Method Endpoint Description Roles GET /api/courses/:courseId/materialsList course materials ALL POST /api/courses/:courseId/materialsUpload material INSTRUCTOR, TA GET /api/materials/:idGet material details ALL PUT /api/materials/:idUpdate material metadata INSTRUCTOR, TA DELETE /api/materials/:idDelete material INSTRUCTOR PATCH /api/materials/:id/visibilityToggle visibility INSTRUCTOR, TA GET /api/materials/:id/downloadDownload material ALL GET /api/courses/:courseId/structureGet course content structure (lectures/sections/labs) ALL POST /api/courses/:courseId/structureCreate content structure INSTRUCTOR PUT /api/courses/:courseId/structure/:idUpdate content structure INSTRUCTOR Business Logic:
- Material types: PDF, video, document, presentation, link
- Organize by weeks/modules/topics
- Version tracking via Files module
- Visibility control (visible/hidden from students)
- Download tracking for analytics
- Video Upload via YouTube Module:
- When material type is
video, use existing YouTube module to upload - Flow:
Instructor uploads video β YouTube Module uploads to YouTube (unlisted) β Returns video URL + video ID β Store as course material with YouTube embed URL - Store
youtube_video_idandyoutube_urlin material record - Frontend displays video using YouTube iframe embed:
https://www.youtube.com/embed/{videoId} - Video metadata (title, description) synced between material and YouTube
- When material type is
// Video upload flow in MaterialsService async uploadVideoMaterial(courseId: number, file: Express.Multer.File, dto: CreateMaterialDto) { // 1. Upload to YouTube via existing YouTubeService const youtubeResult = await this.youtubeService.uploadVideo(file, { title: dto.title, description: dto.description, tags: [courseName, 'lecture'], }); // 2. Create material record with YouTube data return this.materialsRepo.save({ courseId, title: dto.title, type: MaterialType.VIDEO, youtubeVideoId: youtubeResult.videoId, youtubeUrl: youtubeResult.videoUrl, embedUrl: `https://www.youtube.com/embed/${youtubeResult.videoId}`, ...dto, }); }Additional Video Endpoints:
Method Endpoint Description Roles POST /api/courses/:courseId/materials/videoUpload video material (via YouTube) INSTRUCTOR, TA GET /api/materials/:id/embedGet YouTube embed URL/iframe ALL
Sprint 3: Analytics + Administration π‘ MEDIUM β β DONE
Goal: Build analytics, user management enhancements, and utility features. Prerequisite: Sprint 1 data must exist (assignments, grades, attendance) for meaningful analytics.
Dev A: Analytics Module + Reports Module
Analytics Module
Reference Doc: Phase 4 - Section 4.1
DB Tables:
course_analytics,learning_analytics,performance_metrics,student_progress,weak_topics_analysis,activity_logsEntities: CourseAnalytics, LearningAnalytics, PerformanceMetrics, StudentProgress, WeakTopicAnalysis, ActivityLog
Key Endpoints:
Method Endpoint Description Roles GET /api/analytics/dashboardDashboard overview stats ALL GET /api/analytics/courses/:courseIdCourse-level analytics INSTRUCTOR, TA, ADMIN GET /api/analytics/students/:studentIdStudent analytics STUDENT, INSTRUCTOR, ADMIN GET /api/analytics/performancePerformance trends (time series) ALL GET /api/analytics/engagementEngagement metrics INSTRUCTOR, ADMIN GET /api/analytics/attendance-trendsAttendance analytics INSTRUCTOR, ADMIN GET /api/analytics/at-risk-studentsAt-risk student identification INSTRUCTOR, ADMIN GET /api/analytics/grade-distributionGrade distribution data INSTRUCTOR, ADMIN GET /api/analytics/enrollment-trendsEnrollment analytics ADMIN GET /api/analytics/course-comparisonCompare courses ADMIN GET /api/analytics/weak-topics/:courseIdWeak topics analysis INSTRUCTOR, TA Business Logic:
- Real-time aggregation from existing data (grades, attendance, submissions)
- Periodic snapshot generation (cron job) for historical trends
- At-risk student detection algorithm (low attendance + low grades + missing submissions)
- Dashboard stats differ by role (student sees own, instructor sees course, admin sees all)
- Export data as JSON for frontend chart rendering
Reports Module
Reference Doc: Phase 4 - Section 4.2
DB Tables:
generated_reports,report_templates,export_historyEntities: GeneratedReport, ReportTemplate, ExportHistory
Key Endpoints:
Method Endpoint Description Roles GET /api/reports/templatesList report templates INSTRUCTOR, ADMIN POST /api/reports/generateGenerate report INSTRUCTOR, ADMIN GET /api/reports/:idGet report status/details INSTRUCTOR, ADMIN GET /api/reports/:id/downloadDownload report (PDF/CSV/Excel) INSTRUCTOR, ADMIN GET /api/reports/historyExport history INSTRUCTOR, ADMIN DELETE /api/reports/:idDelete report INSTRUCTOR, ADMIN Business Logic:
- Report types: attendance, grades, enrollment, performance, financial
- Template-based generation
- Export formats: PDF, CSV, Excel
- Async generation for large reports (queue/job system)
- Store generated reports for re-download
Dev B: User Management (Enhanced) + Roles & Permissions
User Management Module (Enhanced)
Reference Doc: Phase 8 - Section 8.1
NOTE: The Auth module already has basic user management. This enhances it with:
- Advanced user search and filtering
- Bulk user operations (import, status change)
- User profile enhancements (avatar, bio, social links)
- User preferences (language, theme, notification settings)
- User activity tracking
Key Additional Endpoints:
Method Endpoint Description Roles POST /api/admin/users/bulk-importImport users from CSV ADMIN, IT_ADMIN POST /api/admin/users/bulk-statusBulk status change ADMIN, IT_ADMIN GET /api/users/profileGet current user profile (full) ALL PUT /api/users/profileUpdate profile (avatar, bio) ALL GET /api/users/preferencesGet user preferences ALL PUT /api/users/preferencesUpdate preferences ALL PATCH /api/users/passwordChange password ALL GET /api/admin/users/statisticsUser registration stats ADMIN, IT_ADMIN GET /api/admin/users/exportExport user list ADMIN, IT_ADMIN Business Logic:
- Extend existing Auth module's UserManagementController
- CSV import with validation and error reporting
- Profile completeness tracking
- User preferences stored in DB (language, theme, notification prefs)
Roles & Permissions Module (Enhanced)
Reference Doc: Phase 8 - Section 8.2
NOTE: Already partially implemented in Auth module. Enhancements:
- Custom role creation
- Fine-grained permission management
- Permission inheritance
- Role-based dashboard configuration
Key Additional Endpoints:
Method Endpoint Description Roles GET /api/admin/roles/with-usersRoles with user counts ADMIN, IT_ADMIN POST /api/admin/roles/customCreate custom role IT_ADMIN PUT /api/admin/roles/:id/permissions/bulkBulk permission update IT_ADMIN GET /api/admin/permissions/matrixPermission matrix view ADMIN, IT_ADMIN
Dev C: Tasks & Reminders Module + Search Module
Tasks & Reminders Module
Reference Doc: Phase 6 - Section 6.2
DB Tables:
student_tasks,task_completion,deadline_remindersEntities: StudentTask, TaskCompletion, DeadlineReminder
Key Endpoints:
Method Endpoint Description Roles GET /api/tasksList user's tasks ALL POST /api/tasksCreate task ALL PATCH /api/tasks/:idUpdate task ALL PATCH /api/tasks/:id/completeMark task complete ALL DELETE /api/tasks/:idDelete task ALL GET /api/tasks/upcomingUpcoming tasks/deadlines ALL GET /api/remindersGet active reminders ALL POST /api/remindersCreate reminder ALL DELETE /api/reminders/:idDelete reminder ALL Business Logic:
- Auto-generate tasks from assignments/quizzes deadlines
- Custom user-created tasks
- Priority levels: HIGH, MEDIUM, LOW
- Due date tracking
- Integrate with Notifications for deadline reminders
- Recurring tasks support
Search Module
Reference Doc: Phase 11 - Section 11.6
DB Tables:
search_history,search_indexEntities: SearchHistory, SearchIndex
Key Endpoints:
Method Endpoint Description Roles GET /api/searchGlobal search across entities ALL GET /api/search/coursesSearch courses ALL GET /api/search/usersSearch users ADMIN, INSTRUCTOR GET /api/search/materialsSearch materials ALL GET /api/search/historySearch history ALL DELETE /api/search/historyClear search history ALL Business Logic:
- Full-text search across courses, materials, discussions, announcements
- Role-based result filtering (students see less than admins)
- Search history per user
- Autocomplete suggestions
- MySQL FULLTEXT index support
β οΈ Integration Gaps Identified in Sprints 1-3
Action Required Before Sprint 4: The following cross-module integrations were planned but not yet wired. Each gap has a recommended owner. These should be resolved as a dedicated integration sprint or folded into Sprint 4 kickoff. Track each gap as a separate issue/ticket in the project board with the label
integration-gapto ensure accountability.
Priority 1 β Must Fix
| # | Gap | Source Module | Target Module | Recommended Fix | Owner |
|---|---|---|---|---|---|
| 1 | Notifications not triggered β NotificationsService is built but no module calls it | Assignments, Quizzes, Labs, Grades, Discussions, Announcements | Notifications | Inject NotificationsService into each module's service and call createNotification() on key events (create, grade, publish) |
Dev C |
| 2 | Quiz scores not in gradebook β QuizGradingService doesn't create Grade records | Quizzes | Grades | After quiz auto-grading or manual grading, call GradesService.createOrUpdate() to sync score |
Dev B |
| 3 | Lab scores not in gradebook β Lab grading doesn't create Grade records | Labs | Grades | After lab grading, call GradesService.createOrUpdate() |
Dev C |
Priority 2 β Should Fix
| # | Gap | Source Module | Target Module | Recommended Fix | Owner |
|---|---|---|---|---|---|
| 4 | Schedule missing deadlines β Calendar doesn't show assignment/quiz/lab due dates | Assignments, Quizzes, Labs | Schedule | Add GET /api/schedule/deadlines that queries due dates from Assignments, Quizzes, Labs |
Dev C |
| 5 | Discussions/Announcements silent β Creating a discussion thread or publishing an announcement doesn't notify enrolled students | Discussions, Announcements | Notifications | Call NotificationsService on reply, publish events |
Dev B |
Priority 3 β Important for Completeness
| # | Gap | Source Module | Target Module | Recommended Fix | Owner |
|---|---|---|---|---|---|
| 6 | Analytics has no data pipeline β AnalyticsService doesn't import or aggregate from academic modules | Assignments, Grades, Attendance, Quizzes, Labs | Analytics | Import services from Sprint 1 modules; implement aggregateCourseAnalytics() method |
Dev A |
| 7 | Reports has no data sources β ReportsService can't generate meaningful reports | Analytics, Grades, Attendance | Reports | Import AnalyticsService and academic services; implement data-driven report generation | Dev A |
| 8 | Tasks not auto-generated β Students must manually create tasks for every deadline | Assignments, Quizzes, Labs | Tasks | Implement event-driven auto-creation: when assignment/quiz/lab is created, auto-generate tasks for enrolled students | Dev C |
| 9 | Search scope too narrow β SearchService only searches its own index, doesn't index content from other modules | Assignments, Quizzes, Labs, Discussions, Announcements | Search | Extend SearchService to query across all content types, or implement search index population on content creation | Dev C |
Integration Wiring Summary
Assignments ββnotifyβββΊ NotificationsService (on create, submit, grade)
ββgradeβββΊ GradesService (already done via gradeSubmission)
ββtaskββββΊ TasksService (auto-create task on publish)
ββindexβββΊ SearchService (index on create/update)
ββschedβββΊ ScheduleService (expose deadlines)
Quizzes ββββnotifyβββΊ NotificationsService (on publish, due, grade)
ββgradeβββΊ GradesService (on auto-grade or manual grade)
ββtaskββββΊ TasksService (auto-create task on publish)
ββindexβββΊ SearchService (index on create/update)
ββschedβββΊ ScheduleService (expose deadlines)
Labs βββββββnotifyβββΊ NotificationsService (on create, submit, grade)
ββgradeβββΊ GradesService (on grade submission)
ββtaskββββΊ TasksService (auto-create task on publish)
ββindexβββΊ SearchService (index on create/update)
Discussions βnotifyβββΊ NotificationsService (on reply, endorse)
ββindexβββΊ SearchService (index threads)
Announcements βnotifyβββΊ NotificationsService (on publish)
ββindexβββΊ SearchService (index on publish)
Grades βββββnotifyβββΊ NotificationsService (on finalize/publish)
Attendance ββanalyticsββΊ AnalyticsService (attendance trends)
ALL academic modules βββΊ AnalyticsService (aggregation pipeline)
ALL academic modules βββΊ ReportsService (data sources for reports)
Sprint 4: System & IT Administration π‘ MEDIUM β π² REMAINING
Goal: Build system administration and advanced features for IT Admin dashboard. Prerequisite: Sprint 1-2 complete.
π New Connections Identified for Sprint 4
Sprint 4 modules must integrate with completed modules from Sprints 1-3:
| New Connection | From Module | To Module | API / Integration |
|---|---|---|---|
| Security logs from Auth events | Auth (existing) | Security & Audit | Write SecurityLog on login, logout, password change, failed attempts |
| Audit trail for academic actions | Assignments, Grades, Quizzes | Security & Audit | Write AuditLog on grade changes, assignment updates, quiz modifications |
| System settings for AI attendance | System Settings | Attendance | Store AI_ATTENDANCE_SERVICE_URL in system_settings table |
| System settings for YouTube API | System Settings | YouTube (existing) | Store YouTube API credentials in system_settings |
| Monitoring for WebSocket health | Monitoring | Messaging (Chat) | Monitor WebSocket connection count, message throughput |
| Backup coverage for new tables | Backup | All Sprint 1-3 tables | Include assignments, grades, quizzes, attendance, labs, notifications, discussions, announcements, community, schedule, analytics, reports, tasks, search tables |
| Study Groups β Course enrollment check | Study Groups | Enrollments (existing) | Verify students are enrolled in the same course before joining a study group |
| Study Groups β Notifications | Study Groups | Notifications | Notify group members on new posts, invitations |
| Office Hours β Schedule integration | Office Hours | Schedule | Create calendar events for office hour slots; show in instructor/student schedule |
| Office Hours β Notifications | Office Hours | Notifications | Notify student when appointment is confirmed/cancelled |
| Peer Review β Assignments | Peer Review | Assignments | Link peer reviews to specific assignment submissions |
| Peer Review β Notifications | Peer Review | Notifications | Notify reviewers when assigned; notify students when review submitted |
| Peer Review β Grades | Peer Review | Grades | Aggregate peer review scores into grade components |
π Missing APIs for Sprint 4
These additional endpoints were identified as needed based on frontend dashboard requirements:
| Method | Endpoint | Description | Roles | Needed By |
|---|---|---|---|---|
| GET | /api/security/threats |
Active threat detection summary | IT_ADMIN | IT Admin SecurityPage |
| GET | /api/security/logs/stats |
Security event statistics | ADMIN, IT_ADMIN | IT Admin Dashboard |
| GET | /api/audit/logs/entity/:type/:id |
Audit history for specific entity | ADMIN, IT_ADMIN | Admin audit view |
| POST | /api/backups/integrity-check |
Verify backup integrity | IT_ADMIN | IT Admin DatabasePage |
| GET | /api/study-groups/my |
Current user's study groups | ALL | Student Dashboard |
| POST | /api/study-groups/:id/invite |
Invite user to group | OWNER | Study Group detail |
| GET | /api/office-hours/my-slots |
Instructor's own slots | INSTRUCTOR | Instructor schedule |
| GET | /api/office-hours/available |
Available slots for booking | STUDENT | Student office hours |
| GET | /api/peer-reviews/assignment/:assignmentId/summary |
Review summary for assignment | INSTRUCTOR | Instructor grading view |
Dev A: Security & Audit Module + System Settings Module
Security & Audit Module
- Reference Doc: Phase 9 - Section 9.1
- DB Tables:
security_logs,audit_logs,activity_logs,login_attempts - Entities: SecurityLog, AuditLog, ActivityLog
- Key Endpoints:
Method Endpoint Description Roles GET /api/security/logsSecurity event logs ADMIN, IT_ADMIN GET /api/audit/logsAudit trail ADMIN, IT_ADMIN GET /api/activity/logsUser activity logs ADMIN, IT_ADMIN GET /api/security/sessionsActive sessions ADMIN, IT_ADMIN DELETE /api/security/sessions/:idRevoke session ADMIN, IT_ADMIN POST /api/security/block-ipBlock IP address IT_ADMIN GET /api/security/blocked-ipsList blocked IPs IT_ADMIN DELETE /api/security/blocked-ips/:idUnblock IP IT_ADMIN GET /api/security/login-attemptsFailed login attempts ADMIN, IT_ADMIN GET /api/security/dashboardSecurity dashboard stats ADMIN, IT_ADMIN
System Settings Module
- Reference Doc: Phase 9 - Section 9.2
- DB Tables:
system_settings,branding_settings,api_integrations,api_rate_limits - Entities: SystemSetting, BrandingSetting, ApiIntegration, ApiRateLimit
- Key Endpoints:
Method Endpoint Description Roles GET /api/settingsAll system settings ADMIN, IT_ADMIN PUT /api/settingsUpdate settings ADMIN, IT_ADMIN GET /api/settings/brandingBranding configuration ALL PUT /api/settings/brandingUpdate branding ADMIN, IT_ADMIN GET /api/integrationsAPI integrations list ADMIN, IT_ADMIN POST /api/integrationsAdd integration IT_ADMIN PUT /api/integrations/:idUpdate integration IT_ADMIN DELETE /api/integrations/:idRemove integration IT_ADMIN GET /api/settings/rate-limitsRate limit config IT_ADMIN PUT /api/settings/rate-limitsUpdate rate limits IT_ADMIN
Dev B: Monitoring Module + Backup Module
Monitoring Module
- Reference Doc: Phase 9 - Section 9.3
- DB Tables:
server_monitoring,system_errors,ssl_certificates - Entities: ServerMonitoring, SystemError, SslCertificate
- Key Endpoints:
Method Endpoint Description Roles GET /api/monitoring/serversServer status IT_ADMIN GET /api/monitoring/healthSystem health metrics IT_ADMIN GET /api/monitoring/metricsPerformance metrics (CPU, RAM, disk) IT_ADMIN GET /api/errorsError logs (paginated, filterable) IT_ADMIN PUT /api/errors/:idUpdate error status (resolved, ignored) IT_ADMIN GET /api/errors/:idError details with stack trace IT_ADMIN GET /api/ssl/certificatesSSL certificate status IT_ADMIN POST /api/ssl/certificatesAdd SSL certificate IT_ADMIN GET /api/monitoring/alertsSystem alerts IT_ADMIN POST /api/monitoring/alertsCreate alert rule IT_ADMIN PUT /api/monitoring/alerts/:idUpdate alert rule IT_ADMIN DELETE /api/monitoring/alerts/:idDelete alert rule IT_ADMIN
Backup Module
- Reference Doc: Phase 9 - Section 9.4
- DB Tables: Uses system operations
- Key Endpoints:
Method Endpoint Description Roles GET /api/backupsList backups ADMIN, IT_ADMIN POST /api/backupsCreate manual backup ADMIN, IT_ADMIN POST /api/backups/:id/restoreRestore from backup IT_ADMIN DELETE /api/backups/:idDelete backup IT_ADMIN GET /api/backups/scheduleGet backup schedule ADMIN, IT_ADMIN PUT /api/backups/scheduleSet backup schedule IT_ADMIN GET /api/backups/:id/downloadDownload backup IT_ADMIN GET /api/database/statusDatabase status IT_ADMIN GET /api/database/tablesList tables with sizes IT_ADMIN POST /api/database/optimizeOptimize database IT_ADMIN
Dev C: Study Groups + Office Hours + Peer Review
Study Groups Module
- Reference Doc: Phase 11 - Section 11.1
- DB Tables:
study_groups,study_group_members - Entities: StudyGroup, StudyGroupMember
- Key Endpoints:
Method Endpoint Description Roles GET /api/study-groupsList study groups ALL POST /api/study-groupsCreate study group ALL GET /api/study-groups/:idGet group details ALL PUT /api/study-groups/:idUpdate group OWNER DELETE /api/study-groups/:idDelete group OWNER, ADMIN POST /api/study-groups/:id/joinJoin group ALL DELETE /api/study-groups/:id/leaveLeave group ALL GET /api/study-groups/:id/membersList members ALL
Office Hours Module
- Reference Doc: Phase 11 - Section 11.3
- DB Tables:
office_hour_slots,office_hour_appointments - Entities: OfficeHourSlot, OfficeHourAppointment
- Key Endpoints:
Method Endpoint Description Roles GET /api/office-hours/slotsList office hour slots ALL POST /api/office-hours/slotsCreate office hour slot INSTRUCTOR, ADMIN, IT_ADMIN PUT /api/office-hours/slots/:idUpdate slot INSTRUCTOR, ADMIN, IT_ADMIN DELETE /api/office-hours/slots/:idDelete slot INSTRUCTOR, ADMIN, IT_ADMIN GET /api/office-hours/appointmentsList appointments INSTRUCTOR, ADMIN, IT_ADMIN POST /api/office-hours/appointmentsBook appointment STUDENT PATCH /api/office-hours/appointments/:idUpdate appointment STUDENT, INSTRUCTOR, ADMIN, IT_ADMIN DELETE /api/office-hours/appointments/:idCancel appointment STUDENT, INSTRUCTOR, ADMIN, IT_ADMIN GET /api/office-hours/my-appointmentsStudent's appointments STUDENT
Peer Review Module
- Reference Doc: Phase 11 - Section 11.2
- DB Tables:
peer_reviews - Entities: PeerReview
- Key Endpoints:
Method Endpoint Description Roles GET /api/peer-reviewsList peer reviews ALL POST /api/peer-reviews/assignAssign peer reviews INSTRUCTOR GET /api/peer-reviews/:idGet review details ALL POST /api/peer-reviews/:id/submitSubmit review STUDENT GET /api/peer-reviews/pendingPending reviews for current user STUDENT GET /api/peer-reviews/receivedReviews received STUDENT
Sprint 5: Advanced Features (Continued) π’ LOWER β π² REMAINING
Goal: Complete remaining advanced features. Prerequisite: Sprints 1-4 complete.
π New Connections Identified for Sprint 5
| New Connection | From Module | To Module | API / Integration |
|---|---|---|---|
| Live Sessions β Schedule | Live Sessions | Schedule | Create calendar events for live sessions |
| Live Sessions β Notifications | Live Sessions | Notifications | Notify enrolled students when live session starts/scheduled |
| Live Sessions β Course Materials | Live Sessions | Course Materials | Store session recordings as course materials (YouTube upload) |
| Live Sessions β Attendance | Live Sessions | Attendance | Auto-mark attendance for live session participants |
| Localization β All translatable modules | Localization | Assignments, Quizzes, Announcements, Materials, Labs, Notifications, Calendar Events | TranslationService must be injectable into all Sprint 1-3 modules |
| Support Tickets β Notifications | Support & Feedback | Notifications | Notify staff on new ticket; notify user on response |
| Support Tickets β User Management | Support & Feedback | Auth | Link tickets to user accounts; show ticket history in admin user view |
| Certificates β Grades | Certificates | Grades | Verify course completion (all assignments graded, minimum GPA) |
| Certificates β Enrollments | Certificates | Enrollments | Verify enrollment status is 'completed' |
| Certificates β Notifications | Certificates | Notifications | Notify student when certificate is generated |
| Voice Transcription β Course Materials | Voice & Transcription | Course Materials | Store transcriptions as supplementary materials |
| Voice Transcription β AI Module | Voice & Transcription | AI (Sprint 6) | Feed transcriptions to AI for summarization |
π Missing APIs for Sprint 5
| Method | Endpoint | Description | Roles | Needed By |
|---|---|---|---|---|
| POST | /api/live-sessions/:id/start |
Start a live session | INSTRUCTOR | Instructor live session |
| POST | /api/live-sessions/:id/end |
End a live session | INSTRUCTOR | Instructor live session |
| GET | /api/live-sessions/:id/participants |
List participants | INSTRUCTOR, TA | Live session monitoring |
| POST | /api/live-sessions/:id/recording |
Save recording as material | INSTRUCTOR | Post-session |
| GET | /api/translations/:entityType/:entityId |
Get translations for entity | ALL | All localized views |
| POST | /api/translations |
Add translation | INSTRUCTOR, ADMIN | Content management |
| GET | /api/localization/languages |
List supported languages | ALL | Settings page |
| GET | /api/support/tickets/my |
User's own tickets | ALL | Student support page |
| GET | /api/support/tickets/stats |
Ticket statistics | ADMIN, IT_ADMIN | IT Admin FeedbackSupportPage |
| POST | /api/certificates/verify/:code |
Verify certificate authenticity | PUBLIC | Certificate verification |
| GET | /api/certificates/my |
Student's certificates | STUDENT | Student profile |
| POST | /api/voice/transcribe |
Upload audio for transcription | ALL | Voice input feature |
| POST | /api/voice/ocr |
Upload image for text extraction | ALL | Image-to-text feature |
Dev A: Live Sessions + Localization
Live Sessions Module
- DB Tables:
live_sessions,live_session_participants - Endpoints: CRUD for sessions, join/leave, recording management
- Integration: WebSocket for real-time, or link to external tools (Zoom, Teams)
Localization Module
- DB Tables:
content_translations,localization_strings,language_preferences,theme_preferences - Endpoints: CRUD translations, user language/theme preferences
Dev B: Support & Feedback + Certificates
Support & Feedback Module
- DB Tables:
support_tickets,user_feedback,feedback_responses - Endpoints: CRUD tickets, submit feedback, respond to feedback
- Business Logic: Ticket priority/status workflow, assignment to staff
Certificates Module
- DB Tables:
certificates - Endpoints: Generate, list, download, verify certificates
- Business Logic: Auto-generate on course completion, PDF generation, verification QR code
Dev C: Voice & Transcription Module
Voice & Transcription Module
- DB Tables:
voice_recordings,voice_transcriptions,image_text_extractions - Endpoints: Upload audio/image, get transcription/OCR results
- Integration: External speech-to-text API
Sprint 6: Last Priority Modules π΅ LAST β π² REMAINING
Goal: Build gamification, payments, and prepare AI integration interfaces. Note: AI module is built by a separate team. Backend devs only create the integration layer.
π New Connections Identified for Sprint 6
| New Connection | From Module | To Module | API / Integration |
|---|---|---|---|
| Gamification β Assignments | Gamification | Assignments | Award XP on assignment submission and high-scoring grades |
| Gamification β Quizzes | Gamification | Quizzes | Award XP on quiz completion; bonus XP for perfect scores |
| Gamification β Attendance | Gamification | Attendance | Award XP for attendance; streak tracking for consecutive attendance |
| Gamification β Community | Gamification | Community | Award XP for helpful posts, best answers, active participation |
| Gamification β Labs | Gamification | Labs | Award XP on lab completion |
| Gamification β Notifications | Gamification | Notifications | Notify on badge earned, level up, leaderboard position change |
| Gamification β Analytics | Gamification | Analytics | Feed gamification metrics into analytics dashboards |
| Payments β Enrollments | Payments | Enrollments | Block enrollment if payment pending; release on payment completion |
| Payments β Notifications | Payments | Notifications | Notify on payment due, successful payment, refund |
| Payments β Certificates | Payments | Certificates | Fee verification before certificate generation (if applicable) |
| AI β Course Materials | AI | Course Materials | Read material content for summarization, flashcard generation |
| AI β Quizzes | AI | Quizzes | Generate quiz questions from course materials |
| AI β Assignments | AI | Assignments | AI-assisted grading for essay-type submissions |
| AI β Grades | AI | Grades | Write AI-generated grades with confidence scores |
| AI β Notifications | AI | Notifications | Notify when AI task completes (summary ready, flashcards generated) |
| AI β Search | AI | Search | Index AI-generated content for searchability |
π Missing APIs for Sprint 6
| Method | Endpoint | Description | Roles | Needed By |
|---|---|---|---|---|
| POST | /api/gamification/award-xp |
Internal endpoint to award XP (called by other modules) | SYSTEM | Cross-module integration |
| GET | /api/gamification/progress/:userId |
Detailed progress toward next level | ALL | Student gamification page |
| GET | /api/gamification/achievements/available |
Achievements not yet earned | ALL | Student achievement page |
| POST | /api/payments/webhook |
Payment gateway webhook handler | PUBLIC | Payment processing |
| GET | /api/payments/pending |
Pending payments for user | STUDENT | Student payment page |
| GET | /api/payments/revenue/trend |
Revenue trend over time | ADMIN | Admin revenue dashboard |
| POST | /api/ai/summarize |
Summarize course material | STUDENT, INSTRUCTOR | AI features tab |
| POST | /api/ai/flashcards/generate |
Generate flashcards from material | STUDENT | AI features tab |
| POST | /api/ai/quiz/generate |
Generate quiz from material | INSTRUCTOR | AI quiz generation |
| POST | /api/ai/grade |
AI-assisted grading | INSTRUCTOR, TA | Grading page |
| POST | /api/ai/chatbot/conversations |
Start AI chatbot conversation | ALL | AI assistant tab |
| POST | /api/ai/chatbot/conversations/:id/messages |
Send message to AI chatbot | ALL | AI assistant tab |
| GET | /api/ai/usage/stats |
AI usage statistics | ADMIN, IT_ADMIN | IT Admin dashboard |
Dev A: Gamification Module
Gamification Module
Reference Doc: Phase 6 - Section 6.1
DB Tables:
achievements,badges,user_badges,user_levels,daily_streaks,xp_transactions,leaderboards,leaderboard_rankings,milestone_definitions,points_rules,rewards,reward_redemptions12 tables, complex module
Key Endpoints:
Method Endpoint Description Roles GET /api/gamification/achievementsList achievements ALL GET /api/gamification/badgesList badges ALL GET /api/gamification/badges/myStudent's earned badges STUDENT GET /api/gamification/leaderboardGet leaderboard ALL GET /api/gamification/profileUser gamification profile ALL GET /api/gamification/profile/:userIdSpecific user profile ALL GET /api/gamification/streaksDaily streaks ALL GET /api/gamification/rewardsAvailable rewards ALL POST /api/gamification/rewards/:id/redeemRedeem reward STUDENT GET /api/gamification/xp-historyXP transaction history ALL Business Logic:
- XP awarded for: attendance, assignment submission, quiz completion, community participation
- Level progression based on XP thresholds
- Daily streaks tracking
- Leaderboard rankings (weekly, monthly, all-time)
- Achievement unlock conditions (configurable rules)
- Export
GamificationServicefor other modules to award XP
Dev B: Payments Module
Payments Module
- Reference Doc: Phase 10 - Section 10.1
- DB Tables: May need new payment tables
- Key Endpoints:
Method Endpoint Description Roles GET /api/payments/historyPayment history STUDENT, ADMIN GET /api/payments/myStudent's payment history STUDENT GET /api/payments/revenueRevenue dashboard ADMIN GET /api/payments/transactionsTransaction list ADMIN POST /api/payments/initiateInitiate payment STUDENT POST /api/payments/refund/:idProcess refund ADMIN GET /api/payments/invoicesList invoices STUDENT, ADMIN GET /api/payments/invoices/:id/downloadDownload invoice STUDENT, ADMIN
Dev C: AI Integration Interfaces (For External Team)
AI Module Integration Layer
- Reference Doc: Phase 7
- NOTE: Only build the NestJS module structure and interfaces. The actual AI logic is implemented by the external AI team.
- What to build:
- Entity definitions for all AI tables
- Controller endpoints (stubbed)
- Service interfaces/abstract classes
- DTOs for request/response
- Configuration for AI provider credentials
- The external AI team will implement the actual service logic
Cross-Sprint Dependencies
Sprint 1 βββββββββββββββββββββββββββββββββββββββββββββββββββ
βββ Assignments βββ β
βββ Grades ββββββββ€ β
βββ Attendance ββββΌβββ Sprint 3: Analytics (needs data) β
βββ Quizzes βββββββ€ β
βββ Labs ββββββββββ β
βββ Notifications βββ Sprint 2: All modules use it β
β
Sprint 2 βββββββββββββββββββββββββββββββββββββββββββββββββββ€
βββ Messaging β
βββ Discussions β
βββ Announcements β
βββ Community β
βββ Schedule (Enhanced) β
βββ Course Materials β
β
Sprint 3 βββββββββββββββββββββββββββββββββββββββββββββββββββ€
βββ Analytics (depends on Sprint 1 data) β
βββ Reports (depends on Analytics) β
βββ User Management (Enhanced) β
βββ Roles & Permissions (Enhanced) β
βββ Tasks & Reminders β
βββ Search β
β
Sprint 4 βββββββββββββββββββββββββββββββββββββββββββββββββββ€
βββ Security & Audit β
βββ System Settings β
βββ Monitoring β
βββ Backup β
βββ Study Groups β
βββ Office Hours β
βββ Peer Review β
β
Sprint 5 βββββββββββββββββββββββββββββββββββββββββββββββββββ€
βββ Live Sessions β
βββ Localization β
βββ Support & Feedback β
βββ Certificates β
βββ Voice & Transcription β
β
Sprint 6 (LAST) ββββββββββββββββββββββββββββββββββββββββββββ
βββ Gamification
βββ Payments
βββ AI Integration (external team)
Shared Modules & Services
These services should be built as shared/exported so other modules can inject them:
| Service | Provided By | Used By |
|---|---|---|
NotificationService |
Notifications Module | Assignments, Messaging, Announcements, Grades, Attendance, etc. |
GamificationService |
Gamification Module | Assignments, Quizzes, Attendance, Community (for XP awards) |
FilesService |
Files Module (existing) | Assignments, Labs, Materials, Messaging |
EmailService |
Email Module (existing) | Auth, Notifications, Reminders |
CoursesService |
Courses Module (existing) | Materials, Analytics, Schedule, Assignments |
EnrollmentsService |
Enrollments Module (existing) | Grades, Analytics, Attendance |
Frontend Coverage Verification β
All 5 dashboards are fully covered (sidebar-active components only):
| Dashboard | Active Sidebar Tabs | Coverage |
|---|---|---|
| Admin | 8 tabs | β 100% β All mapped to existing or planned modules |
| Instructor | 13 tabs | β 100% β All mapped to existing or planned modules |
| Student | 17 tabs | β 100% β All mapped to existing or planned modules |
| IT Admin | 15 tabs | β 100% β All mapped to existing or planned modules |
| TA | 15 tabs | β 100% β All mapped to existing or planned modules |
Note: Components that exist as files but are NOT in the sidebar are considered deleted and not counted. See Dashboard API Mapping for details on which components are active.
Already Covered by Existing Backend Modules
These frontend pages are already served by existing backend modules:
- Course Management pages β Courses module β
- Enrollment pages β Enrollments module β
- Department/Program pages β Campus module β
- Prerequisites pages β Courses module (prerequisites feature) β
- Multi-campus pages β Campus module β
- Login/Register/Profile β Auth module β
- File management β Files module β
See Also
- Dashboard-to-API Mapping β Complete mapping of every frontend component to backend endpoints
Getting Started Checklist
Before Sprint 1 begins, ensure:
- Database is set up with all 137 tables from
eduverse_db.sql - Existing modules (Auth, Campus, Courses, Enrollments, Files) are working
- Each developer has the repo cloned and can run
npm run start:dev - Agree on branch strategy (e.g.,
feature/sprint1-assignments,feature/sprint1-attendance) - Set up PR review process (each dev reviews one other dev's PRs)
Branch Naming Convention
feature/sprint{N}-{module-name}
Example: feature/sprint1-assignments
feature/sprint1-attendance
feature/sprint2-messaging
Module Creation Checklist (for each new module)
- Create module folder structure
- Define TypeORM entities matching DB tables
- Create DTOs with class-validator decorators
- Implement service with business logic
- Implement controller with Swagger decorators
- Register module in
app.module.ts - Test all endpoints via Postman/Swagger
- Add Postman collection to
Documentation/folder