# 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…