0% found this document useful (0 votes)
5 views11 pages

LMS Parallel Development Integration Guide

This guide outlines the integration process for modules developed by a team for the RISE LMS project, focusing on shared database schema management, API contract definitions, and shared data models. It emphasizes critical dependencies among user management, course management, assessments, attendance, and certificates. Additionally, it includes common services, utilities, and a development workflow to ensure effective collaboration and integration among team members.

Uploaded by

Yashika
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views11 pages

LMS Parallel Development Integration Guide

This guide outlines the integration process for modules developed by a team for the RISE LMS project, focusing on shared database schema management, API contract definitions, and shared data models. It emphasizes critical dependencies among user management, course management, assessments, attendance, and certificates. Additionally, it includes common services, utilities, and a development workflow to ensure effective collaboration and integration among team members.

Uploaded by

Yashika
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

# LMS Parallel Development Integration Guide

## 📋 Overview

This guide ensures seamless integration of modules developed by Geetanjali, Raj, Yash, Yashika, and
Kumkum for the RISE LMS project.

## 🎯 Critical Success Factors

1. Shared Database Schema Management

*Owner: Tech Lead (suggest appointing one) *

Core Entities Schema (Must be agreed upon FIRST)

sql

-- Users table (Foundation for all modules)

CREATE TABLE users (

id BIGINT PRIMARY KEY AUTO_INCREMENT,

email VARCHAR(255) UNIQUE NOT NULL,

username VARCHAR(100) UNIQUE,

password_hash VARCHAR(255) NOT NULL,

first_name VARCHAR(100),

last_name VARCHAR(100),

role ENUM('admin', 'instructor', 'student') NOT NULL,

is_active BOOLEAN DEFAULT true,

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

);
-- Courses table (Foundation for most modules)

CREATE TABLE courses (

id BIGINT PRIMARY KEY AUTO_INCREMENT,

title VARCHAR(255) NOT NULL,

description TEXT,

instructor_id BIGINT NOT NULL,

category VARCHAR(100),

status ENUM('draft', 'published', 'archived') DEFAULT 'draft',

start_date DATE,

end_date DATE,

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

FOREIGN KEY (instructor_id) REFERENCES users(id)

);

-- Enrollments table (Critical intersection)

CREATE TABLE enrollments (

id BIGINT PRIMARY KEY AUTO_INCREMENT,

user_id BIGINT NOT NULL,

course_id BIGINT NOT NULL,

enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

status ENUM('active', 'completed', 'dropped') DEFAULT 'active',

progress_percentage DECIMAL(5,2) DEFAULT 0.00,

FOREIGN KEY (user_id) REFERENCES users(id),

FOREIGN KEY (course_id) REFERENCES courses(id),


UNIQUE KEY unique_enrollment (user_id, course_id)

);

Module-Specific Tables with Dependencies

sql

-- Assessments (Kumkum's module)

CREATE TABLE assessments (

id BIGINT PRIMARY KEY AUTO_INCREMENT,

course_id BIGINT NOT NULL,

title VARCHAR(255) NOT NULL,

type ENUM('quiz', 'assignment') NOT NULL,

max_score DECIMAL(5,2),

FOREIGN KEY (course_id) REFERENCES courses(id)

);

-- Attendance (Raj's module)

CREATE TABLE attendance_sessions (

id BIGINT PRIMARY KEY AUTO_INCREMENT,

course_id BIGINT NOT NULL,

session_date DATE NOT NULL,

qr_code VARCHAR(255),

FOREIGN KEY (course_id) REFERENCES courses(id)

);
-- Certificates (Yashika's module - depends on course completion)

CREATE TABLE certificates (

id BIGINT PRIMARY KEY AUTO_INCREMENT,

user_id BIGINT NOT NULL,

course_id BIGINT NOT NULL,

certificate_url VARCHAR(500),

issued_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,

FOREIGN KEY (user_id) REFERENCES users(id),

FOREIGN KEY (course_id) REFERENCES courses(id)

);

### 2. API Contract Definitions

#### User Management APIs (Geetanjali)

javascript

// POST /api/users (Manual creation)

"email": "string",

"username": "string",

"password": "string",

"role": "admin|instructor|student",

"profile": {...}

}
// POST /api/users/bulk (Bulk creation)

"users": [...],

"notify_users": boolean

// GET /api/users/{id}

// PUT /api/users/{id}

// DELETE /api/users/{id}

Course Management APIs (Yashika)

javascript

// POST /api/courses

"title": "string",

"description": "string",

"instructor_id": number,

"category": "string",

"schedule": {...}

// GET /api/courses/{id}/enrollment-status/{user_id}

// POST /api/courses/{id}/content

// GET /api/courses/{id}/progress/{user_id}
Assessment APIs (Kumkum)

javascript

// POST /api/assessments

"course_id": number,

"title": "string",

"questions": [...],

"settings": {...}

// POST /api/assessments/{id}/submissions

// GET /api/assessments/{id}/grades/{user_id}

Attendance APIs (Raj)

javascript

// POST /api/attendance/sessions

"course_id": number,

"session_date": "date",

"students": [...]

}
// GET /api/attendance/courses/{course_id}/summary

// POST /api/attendance/qr-scan

3. Shared Data Models & Interfaces

TypeScript Interfaces (Recommend using across all modules)

typescript

// Core interfaces

interface User {

id: number;

email: string;

username?: string;

role: 'admin' | 'instructor' | 'student';

profile?: UserProfile;

isActive: boolean;

interface Course {

id: number;

title: string;

description?: string;

instructorId: number;

category?: string;

status: 'draft' | 'published' | 'archived';


schedule?: CourseSchedule;

interface Enrollment {

id: number;

userId: number;

courseId: number;

status: 'active' | 'completed' | 'dropped';

progressPercentage: number;

enrollmentDate: Date;

// Assessment interfaces (for Kumkum)

interface Assessment {

id: number;

courseId: number;

title: string;

type: 'quiz' | 'assignment';

maxScore?: number;

questions: Question[];

// Certificate interfaces (for Yashika)

interface Certificate {

id: number;
userId: number;

courseId: number;

templateId: number;

issuedDate: Date;

verificationCode: string;

4. Integration Points & Dependencies

Critical Dependencies Map

User Management (Geetanjali) → Foundation for ALL modules

Course Management (Yashika) → Required by Assessment, Attendance, Certificates

Enrollment Management (Geetanjali) → Required by all course-related modules

Assessment (Kumkum) ← Depends on: Users, Courses, Enrollments

Attendance (Raj) ← Depends on: Users, Courses, Enrollments

Certificate (Yashika) ← Depends on: Users, Courses, Completion data

Integration Testing Points

1. *User-Course Integration*: Test user enrollment in courses


2. *Course-Assessment Integration*: Test assessment creation within courses

3. *Course-Attendance Integration*: Test attendance tracking for enrolled students

4. *Assessment-Certificate Integration*: Test certificate generation upon completion

5. Shared Services & Utilities

Common Services (Create shared library)

javascript

// EmailService (shared across modules)

class EmailService {

sendWelcomeEmail(user) { /* ... */ }

sendEnrollmentConfirmation(user, course) { /* ... */ }

sendCertificateNotification(user, certificate) { /* ... */ }

// NotificationService

class NotificationService {

notify(userId, type, message) { /* ... */ }

broadcastToRole(role, message) { /* ... */ }

// FileStorageService

class FileStorageService {

upload(file, folder) { /* ... */ }

getUrl(filePath) { /* ... */ }
delete(filePath) { /* ... */ }

// ValidationService

class ValidationService {

validateEmail(email) { /* ... */ }

validateUserRole(userId, requiredRole) { /* ... */ }

validateCourseAccess(userId, courseId) { /* ... */ }

6. Development Workflow

Daily Sync Requirements

1. *Daily Standup* (15 mins)

- What did you complete yesterday?

- What are you working on today?

- Any blockers or d…

You might also like