LMS Module Development

Objective

Build an LMS (Learning Management System) module in the Flutter app with DDD architecture. The module will integrate 10 APIs to handle courses, video playback, user progress tracking, and quizzes.

Scope of Work

  1. UI Integration
  • Follow the provided UI screens for Course List, Course Details, Session Details, Quiz, Add Course, and Add Quiz Questions.
  • Reuse the App Bar and Bottom Navigation Bar components.
  • Implement a seamless UX for course progress, video playback, and quizzes.
  1. Video Playback Integration
  • Use youtube_player_iframe package for video playback.
  • Track video progress and completion events via APIs.
  • Auto-mark videos as completed once fully watched.
  1. API Integration (10 APIs)
  • Course list, course details, session details, video progress tracking, quiz questions, quiz submission, course completion, course creation, quiz creation, and file uploads (thumbnail/documents).
  • All APIs must have proper loading, success, and error states.
  • Authentication tokens must be applied where required.
  1. DDD Architecture Requirements
  • DTO Layer: Create DTO classes for all request/response objects.
  • Domain Layer: Create domain models for Course, Session, Quiz, Progress, etc.
  • Application Layer: Use dependency injection for services and use cases.
  • Presentation Layer:
  • Bloc + Freezed for state management.
  • Separate BLoCs for Course, Quiz, and Progress management.
  1. Quiz Flow
  • After completing the video, quiz questions should be fetched dynamically.
  • Users must answer all required questions before marking the course as Completed.
  • Track correct/incorrect answers and store results via API.
  1. Validation
  • Course Name, Video URL, and Quiz Questions are mandatory while creating courses.
  • Video URL should be a valid YouTube link.
  • Passing Percentage and Quiz Questions should be validated before submission.
  1. Error Handling
  • Handle invalid URLs, API errors, and quiz submission failures gracefully.
  • Display retry options for API errors.
  • Offline mode: Cache previously loaded courses for viewing without internet.

Acceptance Criteria

  • Course List loads with correct progress status.
  • Video plays using youtube_player_iframe and progress is tracked accurately.
  • User cannot mark the course completed without finishing the video and quiz.
  • Quiz questions load dynamically and store answers successfully.
  • Course completion API triggers only after passing the quiz.
  • BLoC handles all states: initial, loading, success, error.
  • Add Course & Add Quiz screens support file uploads and validations.
  • Code follows DDD principles and passes code review.

Validation Checklist

  • ✅ Valid YouTube URL check before playback.
  • ✅ Progress tracking accuracy: must sync with backend API.
  • ✅ Quiz submission with required answers only.
  • ✅ Mandatory fields in Add Course/Add Quiz forms checked.
  • ✅ API response validation for null/missing fields.
  • ✅ UI validation for loading/error states.

Expected Dev Testing Points

  • ✅ Course List API loads courses with correct progress data.
  • ✅ Video Playback triggers progress API at start, mid, and completion events.
  • ✅ Quiz API loads questions dynamically and submits answers correctly.
  • ✅ Course Completion API triggers only after quiz completion.
  • ✅ Offline mode loads cached data if available.
  • ✅ Error states show proper retry options.
  • ✅ Mobile & tablet responsive layout tests.
  • ✅ BLoC states tested for all edge cases.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

More posts