copilot-swe-agent[bot]
Fix emoji consistency, add AI timeline note, and issue tracking reference
e0dd263
|
Raw
History Blame Contribute Delete
74.4 kB

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

  1. Gamification, Payments, and AI are last priority
  2. AI module integration is handled by a separate team β€” backend devs only create the integration endpoints/interfaces
  3. Tasks & Reminders is separated from Gamification and done earlier
  4. 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:

  1. Request Header: All API endpoints accept Accept-Language: ar or Accept-Language: en header (default: en)

  2. Entities with Translatable Content (must support Arabic + English):

    Entity Translatable Fields
    Courses name, description
    Assignments title, description, instructions
    Quizzes title, description
    Quiz Questions question_text, options
    Announcements title, content
    Course Materials title, description
    Labs title, description
    Lab Instructions content
    Notifications title, message
    Calendar Events title, description
    Achievements name, description
    Badges name, description
    Forum Categories name, description
    System Settings (branding) site_name, tagline
    Support Tickets Category labels
  3. 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);
    }
    
  4. Translation CRUD Endpoints (part of Localization Module - Sprint 5, Dev A):

    Method Endpoint Description Roles
    GET /api/translations/:entityType/:entityId Get translations for entity ALL
    POST /api/translations Add translation INSTRUCTOR, ADMIN
    PUT /api/translations/:id Update translation INSTRUCTOR, ADMIN
    DELETE /api/translations/:id Delete translation ADMIN
    GET /api/localization/strings Get UI strings for language ALL
    POST /api/localization/strings Add/update UI string ADMIN
    GET /api/localization/languages List supported languages ALL
  5. Response Format (when Arabic is requested):

    {
      "id": 1,
      "title": "Ψ§Ω„ΩˆΨ§Ψ¬Ψ¨ Ψ§Ω„Ψ£ΩˆΩ„",          // Arabic title
      "title_original": "First Assignment", // Original English
      "description": "وءف Ψ§Ω„ΩˆΨ§Ψ¬Ψ¨",
      "dueDate": "2025-03-15"
    }
    
  6. 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)
  7. 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 ITranslationService interface and create a simple pass-through implementation. The full implementation comes in Sprint 5 with the Localization module. All modules should accept Accept-Language header 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_submissions

  • Entities: Assignment, AssignmentSubmission

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/assignments List assignments (filterable by course, section, status) ALL
    POST /api/assignments Create assignment INSTRUCTOR, TA
    GET /api/assignments/:id Get assignment details ALL
    PATCH /api/assignments/:id Update assignment INSTRUCTOR, TA
    DELETE /api/assignments/:id Delete assignment INSTRUCTOR
    POST /api/assignments/:id/submit Submit assignment (file upload) STUDENT
    GET /api/assignments/:id/submissions List submissions INSTRUCTOR, TA
    GET /api/assignments/:id/submissions/my Get student's own submission STUDENT
    PATCH /api/assignments/:id/submissions/:subId/grade Grade submission INSTRUCTOR, TA
    PATCH /api/assignments/:id/submissions/:subId/feedback Add 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_criteria

  • Entities: Grade, GradeComponent, Rubric, RubricCriteria

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/grades List grades (filter by student, course, section) ALL
    GET /api/grades/my Student's own grades STUDENT
    POST /api/grades Create/update grade INSTRUCTOR, TA
    PUT /api/grades/:id Update grade INSTRUCTOR, TA
    GET /api/grades/transcript/:studentId Full transcript STUDENT, ADMIN
    GET /api/grades/gpa/:studentId GPA calculation STUDENT, ADMIN
    GET /api/grades/distribution/:sectionId Grade distribution chart data INSTRUCTOR, ADMIN
    GET /api/rubrics List rubrics INSTRUCTOR, TA
    POST /api/rubrics Create rubric INSTRUCTOR
    GET /api/rubrics/:id Get rubric with criteria ALL
    PUT /api/rubrics/:id Update rubric INSTRUCTOR
    DELETE /api/rubrics/:id Delete 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_data

  • Entities: AttendanceSession, AttendanceRecord, AttendancePhoto

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/attendance/sessions List attendance sessions INSTRUCTOR, TA, ADMIN
    POST /api/attendance/sessions Create attendance session INSTRUCTOR, TA
    GET /api/attendance/sessions/:id Get session with records INSTRUCTOR, TA
    POST /api/attendance/records Mark attendance (single or batch) INSTRUCTOR, TA
    PUT /api/attendance/records/:id Update attendance record INSTRUCTOR, TA
    GET /api/attendance/by-course/:courseId Course attendance summary INSTRUCTOR, TA, ADMIN
    GET /api/attendance/by-student/:studentId Student attendance summary STUDENT, INSTRUCTOR, ADMIN
    GET /api/attendance/my Student's own attendance STUDENT
    GET /api/attendance/summary Overall attendance stats INSTRUCTOR, ADMIN
    POST /api/attendance/photos Upload attendance photo (for AI) INSTRUCTOR, TA
    GET /api/attendance/report/:sectionId Attendance report for section INSTRUCTOR, TA
    PATCH /api/attendance/sessions/:id/close Close attendance session INSTRUCTOR, TA
    POST /api/attendance/import-excel Import attendance from Excel file INSTRUCTOR, TA
    GET /api/attendance/export-excel/:sessionId Export attendance session to Excel INSTRUCTOR, TA
    POST /api/attendance/ai-photo Send photo to AI microservice for face recognition INSTRUCTOR, TA
    GET /api/attendance/ai-photo/:processingId Get 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 exceljs npm package):
      • Upload .xlsx file 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
    • 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_URL env variable
  • 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 ABSENT
    
  • NPM Dependencies to Add:

    npm install exceljs   # For Excel import/export
    
  • Files 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_levels

  • Entities: Quiz, QuizQuestion, QuizAttempt, QuizAnswer, QuizDifficultyLevel

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/quizzes List quizzes (by course/section) ALL
    POST /api/quizzes Create quiz INSTRUCTOR, TA
    GET /api/quizzes/:id Get quiz details ALL
    PUT /api/quizzes/:id Update quiz INSTRUCTOR, TA
    DELETE /api/quizzes/:id Delete quiz INSTRUCTOR
    POST /api/quizzes/:id/publish Publish quiz INSTRUCTOR
    GET /api/quizzes/:id/questions Get questions (no answers for students) ALL
    POST /api/quizzes/:id/questions Add question INSTRUCTOR, TA
    PUT /api/quizzes/:id/questions/:qId Update question INSTRUCTOR, TA
    DELETE /api/quizzes/:id/questions/:qId Delete question INSTRUCTOR, TA
    POST /api/quizzes/:id/attempt Start quiz attempt STUDENT
    POST /api/quizzes/:id/submit Submit quiz answers STUDENT
    GET /api/quizzes/:id/results Get quiz results (student's own) STUDENT
    GET /api/quizzes/:id/attempts List all attempts (stats) INSTRUCTOR, TA
    GET /api/quizzes/:id/analytics Quiz 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_attendance

  • Entities: Lab, LabSubmission, LabInstruction, LabAttendance

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/labs List labs (by course/section) ALL
    POST /api/labs Create lab INSTRUCTOR, TA
    GET /api/labs/:id Get lab details ALL
    PUT /api/labs/:id Update lab INSTRUCTOR, TA
    DELETE /api/labs/:id Delete lab INSTRUCTOR
    GET /api/labs/:id/instructions Get lab instructions ALL
    POST /api/labs/:id/instructions Add/update instructions INSTRUCTOR, TA
    POST /api/labs/:id/submit Submit lab work STUDENT
    GET /api/labs/:id/submissions List submissions INSTRUCTOR, TA
    GET /api/labs/:id/submissions/my Student's own submission STUDENT
    PATCH /api/labs/:id/submissions/:subId/grade Grade submission INSTRUCTOR, TA
    POST /api/labs/:id/attendance Mark lab attendance INSTRUCTOR, TA
    GET /api/labs/:id/attendance Get lab attendance INSTRUCTOR, TA
    GET /api/labs/:id/resources Get lab resources/files ALL
    POST /api/labs/:id/resources Upload 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_notifications

  • Entities: Notification, NotificationPreference, ScheduledNotification

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/notifications List user's notifications (paginated) ALL
    GET /api/notifications/unread-count Get unread count ALL
    PATCH /api/notifications/:id/read Mark as read ALL
    PATCH /api/notifications/read-all Mark all as read ALL
    DELETE /api/notifications/:id Delete notification ALL
    GET /api/notifications/preferences Get notification preferences ALL
    PUT /api/notifications/preferences Update 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 NotificationService for 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_participants

  • Entities: Message, MessageParticipant

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/messages/conversations List conversations ALL
    GET /api/messages/conversations/:id Get conversation messages ALL
    POST /api/messages Send message ALL
    PATCH /api/messages/:id/read Mark as read ALL
    DELETE /api/messages/:id Delete message ALL
    GET /api/messages/search Search messages ALL
    GET /api/messages/unread-count Unread 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_messages

  • Entities: DiscussionThread, DiscussionMessage

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/discussions List discussions (by course) ALL
    POST /api/discussions Create discussion thread ALL
    GET /api/discussions/:id Get thread with replies ALL
    POST /api/discussions/:id/reply Post reply ALL
    PATCH /api/discussions/:id/pin Pin/unpin INSTRUCTOR, TA
    PATCH /api/discussions/:id/close Close discussion INSTRUCTOR, TA
    PATCH /api/discussions/:id/mark-answer Mark reply as answer INSTRUCTOR, TA
    DELETE /api/discussions/:id Delete 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/announcements List announcements ALL
    POST /api/announcements Create announcement INSTRUCTOR, TA, ADMIN
    GET /api/announcements/:id Get announcement ALL
    PUT /api/announcements/:id Update announcement INSTRUCTOR, TA, ADMIN
    DELETE /api/announcements/:id Delete announcement INSTRUCTOR, ADMIN
    PATCH /api/announcements/:id/publish Publish announcement INSTRUCTOR, ADMIN
    PATCH /api/announcements/:id/schedule Schedule for future INSTRUCTOR, ADMIN
    PATCH /api/announcements/:id/pin Pin 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_categories

  • Entities: CommunityPost, PostComment, PostReaction, ForumCategory

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/community/posts List posts (by category, course) ALL
    POST /api/community/posts Create post ALL
    GET /api/community/posts/:id Get post with comments ALL
    PUT /api/community/posts/:id Update post OWNER
    DELETE /api/community/posts/:id Delete post OWNER, ADMIN
    POST /api/community/posts/:id/comment Add comment ALL
    POST /api/community/posts/:id/react Add/toggle reaction ALL
    PATCH /api/community/posts/:id/pin Pin post INSTRUCTOR, ADMIN
    GET /api/community/categories List forum categories ALL
    POST /api/community/categories Create 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_integrations

  • Entities: ExamSchedule, CalendarEvent, CalendarIntegration (CourseSchedule already exists)

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/schedule/my/daily Today's schedule for current user ALL
    GET /api/schedule/my/weekly Weekly schedule for current user ALL
    GET /api/schedule/section/:sectionId Section schedule ALL
    GET /api/calendar/events Calendar events (date range) ALL
    POST /api/calendar/events Create calendar event INSTRUCTOR, ADMIN
    PUT /api/calendar/events/:id Update event INSTRUCTOR, ADMIN
    DELETE /api/calendar/events/:id Delete event INSTRUCTOR, ADMIN
    GET /api/exams/schedule Exam schedule ALL
    POST /api/exams/schedule Create exam schedule INSTRUCTOR, ADMIN
    PUT /api/exams/schedule/:id Update exam schedule INSTRUCTOR, ADMIN
    DELETE /api/exams/schedule/:id Delete exam schedule INSTRUCTOR, ADMIN
    GET /api/calendar/academic Academic calendar ALL
    GET /api/calendar/integrations External calendar integrations ALL
    POST /api/calendar/integrations Add 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_labs

  • Entities: CourseMaterial, LectureSectionLab

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/courses/:courseId/materials List course materials ALL
    POST /api/courses/:courseId/materials Upload material INSTRUCTOR, TA
    GET /api/materials/:id Get material details ALL
    PUT /api/materials/:id Update material metadata INSTRUCTOR, TA
    DELETE /api/materials/:id Delete material INSTRUCTOR
    PATCH /api/materials/:id/visibility Toggle visibility INSTRUCTOR, TA
    GET /api/materials/:id/download Download material ALL
    GET /api/courses/:courseId/structure Get course content structure (lectures/sections/labs) ALL
    POST /api/courses/:courseId/structure Create content structure INSTRUCTOR
    PUT /api/courses/:courseId/structure/:id Update 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_id and youtube_url in material record
      • Frontend displays video using YouTube iframe embed: https://www.youtube.com/embed/{videoId}
      • Video metadata (title, description) synced between material and YouTube
    // 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/video Upload video material (via YouTube) INSTRUCTOR, TA
    GET /api/materials/:id/embed Get 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_logs

  • Entities: CourseAnalytics, LearningAnalytics, PerformanceMetrics, StudentProgress, WeakTopicAnalysis, ActivityLog

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/analytics/dashboard Dashboard overview stats ALL
    GET /api/analytics/courses/:courseId Course-level analytics INSTRUCTOR, TA, ADMIN
    GET /api/analytics/students/:studentId Student analytics STUDENT, INSTRUCTOR, ADMIN
    GET /api/analytics/performance Performance trends (time series) ALL
    GET /api/analytics/engagement Engagement metrics INSTRUCTOR, ADMIN
    GET /api/analytics/attendance-trends Attendance analytics INSTRUCTOR, ADMIN
    GET /api/analytics/at-risk-students At-risk student identification INSTRUCTOR, ADMIN
    GET /api/analytics/grade-distribution Grade distribution data INSTRUCTOR, ADMIN
    GET /api/analytics/enrollment-trends Enrollment analytics ADMIN
    GET /api/analytics/course-comparison Compare courses ADMIN
    GET /api/analytics/weak-topics/:courseId Weak 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_history

  • Entities: GeneratedReport, ReportTemplate, ExportHistory

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/reports/templates List report templates INSTRUCTOR, ADMIN
    POST /api/reports/generate Generate report INSTRUCTOR, ADMIN
    GET /api/reports/:id Get report status/details INSTRUCTOR, ADMIN
    GET /api/reports/:id/download Download report (PDF/CSV/Excel) INSTRUCTOR, ADMIN
    GET /api/reports/history Export history INSTRUCTOR, ADMIN
    DELETE /api/reports/:id Delete 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-import Import users from CSV ADMIN, IT_ADMIN
    POST /api/admin/users/bulk-status Bulk status change ADMIN, IT_ADMIN
    GET /api/users/profile Get current user profile (full) ALL
    PUT /api/users/profile Update profile (avatar, bio) ALL
    GET /api/users/preferences Get user preferences ALL
    PUT /api/users/preferences Update preferences ALL
    PATCH /api/users/password Change password ALL
    GET /api/admin/users/statistics User registration stats ADMIN, IT_ADMIN
    GET /api/admin/users/export Export 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-users Roles with user counts ADMIN, IT_ADMIN
    POST /api/admin/roles/custom Create custom role IT_ADMIN
    PUT /api/admin/roles/:id/permissions/bulk Bulk permission update IT_ADMIN
    GET /api/admin/permissions/matrix Permission 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_reminders

  • Entities: StudentTask, TaskCompletion, DeadlineReminder

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/tasks List user's tasks ALL
    POST /api/tasks Create task ALL
    PATCH /api/tasks/:id Update task ALL
    PATCH /api/tasks/:id/complete Mark task complete ALL
    DELETE /api/tasks/:id Delete task ALL
    GET /api/tasks/upcoming Upcoming tasks/deadlines ALL
    GET /api/reminders Get active reminders ALL
    POST /api/reminders Create reminder ALL
    DELETE /api/reminders/:id Delete 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_index

  • Entities: SearchHistory, SearchIndex

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/search Global search across entities ALL
    GET /api/search/courses Search courses ALL
    GET /api/search/users Search users ADMIN, INSTRUCTOR
    GET /api/search/materials Search materials ALL
    GET /api/search/history Search history ALL
    DELETE /api/search/history Clear 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-gap to 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/logs Security event logs ADMIN, IT_ADMIN
    GET /api/audit/logs Audit trail ADMIN, IT_ADMIN
    GET /api/activity/logs User activity logs ADMIN, IT_ADMIN
    GET /api/security/sessions Active sessions ADMIN, IT_ADMIN
    DELETE /api/security/sessions/:id Revoke session ADMIN, IT_ADMIN
    POST /api/security/block-ip Block IP address IT_ADMIN
    GET /api/security/blocked-ips List blocked IPs IT_ADMIN
    DELETE /api/security/blocked-ips/:id Unblock IP IT_ADMIN
    GET /api/security/login-attempts Failed login attempts ADMIN, IT_ADMIN
    GET /api/security/dashboard Security 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/settings All system settings ADMIN, IT_ADMIN
    PUT /api/settings Update settings ADMIN, IT_ADMIN
    GET /api/settings/branding Branding configuration ALL
    PUT /api/settings/branding Update branding ADMIN, IT_ADMIN
    GET /api/integrations API integrations list ADMIN, IT_ADMIN
    POST /api/integrations Add integration IT_ADMIN
    PUT /api/integrations/:id Update integration IT_ADMIN
    DELETE /api/integrations/:id Remove integration IT_ADMIN
    GET /api/settings/rate-limits Rate limit config IT_ADMIN
    PUT /api/settings/rate-limits Update 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/servers Server status IT_ADMIN
    GET /api/monitoring/health System health metrics IT_ADMIN
    GET /api/monitoring/metrics Performance metrics (CPU, RAM, disk) IT_ADMIN
    GET /api/errors Error logs (paginated, filterable) IT_ADMIN
    PUT /api/errors/:id Update error status (resolved, ignored) IT_ADMIN
    GET /api/errors/:id Error details with stack trace IT_ADMIN
    GET /api/ssl/certificates SSL certificate status IT_ADMIN
    POST /api/ssl/certificates Add SSL certificate IT_ADMIN
    GET /api/monitoring/alerts System alerts IT_ADMIN
    POST /api/monitoring/alerts Create alert rule IT_ADMIN
    PUT /api/monitoring/alerts/:id Update alert rule IT_ADMIN
    DELETE /api/monitoring/alerts/:id Delete 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/backups List backups ADMIN, IT_ADMIN
    POST /api/backups Create manual backup ADMIN, IT_ADMIN
    POST /api/backups/:id/restore Restore from backup IT_ADMIN
    DELETE /api/backups/:id Delete backup IT_ADMIN
    GET /api/backups/schedule Get backup schedule ADMIN, IT_ADMIN
    PUT /api/backups/schedule Set backup schedule IT_ADMIN
    GET /api/backups/:id/download Download backup IT_ADMIN
    GET /api/database/status Database status IT_ADMIN
    GET /api/database/tables List tables with sizes IT_ADMIN
    POST /api/database/optimize Optimize 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-groups List study groups ALL
    POST /api/study-groups Create study group ALL
    GET /api/study-groups/:id Get group details ALL
    PUT /api/study-groups/:id Update group OWNER
    DELETE /api/study-groups/:id Delete group OWNER, ADMIN
    POST /api/study-groups/:id/join Join group ALL
    DELETE /api/study-groups/:id/leave Leave group ALL
    GET /api/study-groups/:id/members List 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/slots List office hour slots ALL
    POST /api/office-hours/slots Create office hour slot INSTRUCTOR, ADMIN, IT_ADMIN
    PUT /api/office-hours/slots/:id Update slot INSTRUCTOR, ADMIN, IT_ADMIN
    DELETE /api/office-hours/slots/:id Delete slot INSTRUCTOR, ADMIN, IT_ADMIN
    GET /api/office-hours/appointments List appointments INSTRUCTOR, ADMIN, IT_ADMIN
    POST /api/office-hours/appointments Book appointment STUDENT
    PATCH /api/office-hours/appointments/:id Update appointment STUDENT, INSTRUCTOR, ADMIN, IT_ADMIN
    DELETE /api/office-hours/appointments/:id Cancel appointment STUDENT, INSTRUCTOR, ADMIN, IT_ADMIN
    GET /api/office-hours/my-appointments Student'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-reviews List peer reviews ALL
    POST /api/peer-reviews/assign Assign peer reviews INSTRUCTOR
    GET /api/peer-reviews/:id Get review details ALL
    POST /api/peer-reviews/:id/submit Submit review STUDENT
    GET /api/peer-reviews/pending Pending reviews for current user STUDENT
    GET /api/peer-reviews/received Reviews 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_redemptions

  • 12 tables, complex module

  • Key Endpoints:

    Method Endpoint Description Roles
    GET /api/gamification/achievements List achievements ALL
    GET /api/gamification/badges List badges ALL
    GET /api/gamification/badges/my Student's earned badges STUDENT
    GET /api/gamification/leaderboard Get leaderboard ALL
    GET /api/gamification/profile User gamification profile ALL
    GET /api/gamification/profile/:userId Specific user profile ALL
    GET /api/gamification/streaks Daily streaks ALL
    GET /api/gamification/rewards Available rewards ALL
    POST /api/gamification/rewards/:id/redeem Redeem reward STUDENT
    GET /api/gamification/xp-history XP 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 GamificationService for 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/history Payment history STUDENT, ADMIN
    GET /api/payments/my Student's payment history STUDENT
    GET /api/payments/revenue Revenue dashboard ADMIN
    GET /api/payments/transactions Transaction list ADMIN
    POST /api/payments/initiate Initiate payment STUDENT
    POST /api/payments/refund/:id Process refund ADMIN
    GET /api/payments/invoices List invoices STUDENT, ADMIN
    GET /api/payments/invoices/:id/download Download 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


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)

  1. Create module folder structure
  2. Define TypeORM entities matching DB tables
  3. Create DTOs with class-validator decorators
  4. Implement service with business logic
  5. Implement controller with Swagger decorators
  6. Register module in app.module.ts
  7. Test all endpoints via Postman/Swagger
  8. Add Postman collection to Documentation/ folder