# Online Learning Platform using C4 Modelling ## Use cases - User Registration and Profile Management - Course Enrollment and Management - Quiz and Assessment Taking - Discussion Forums and Community Interaction - Certification and Progress Tracking ### User Registration and Profile Management Context Diagram ### Output ```json [ { "section_title": "Learning Management System", "section_text": "In this video we will find how to build a learning management system app in 60 secs. The first step is to identify usecases, next we identify the actors/systems, then we set the intgration patterns and finally translate our design into a single cloud deployment view", "graphic_type":"pointers", "pointers":["List usecases","Identify systems and actors","Integration Pattern","Deployment View"] }, { "section_title": "Usecases", "section_text": "Keeping things simple, lets say our system is supposed to stream videos uploaded by tutors to students. Apart from generic requirements like login, catalog, account management etc, Lets focus on 2 of the main usecases here, uploading/storing videos and streaming videos to students on demand", "graphic_type": "pointers", "pointers":["Upload videos","Stream videos"] }, { "section_title": "Systems and Actors", "section_text": "Here we will have teachers uploading videos to lms system, these videos will then need to be converted to different resolutions and saved to storage. When a student tries viwewing a video the system fetches the most suitable video format metadata from database and starts streaming the corresponding file from storage to viwers.", "graphic_type":"flowchart", "flowchart_icons":{ "lms system":"system-icon", "teacher":"user-icon", "student system":"user-icon", }, "flowchart":[{ "link":"teacher -> lms system", "link_label":"upload video" },{ "link":"lms system -> storage", "link_label":"store video" },{ "link":"lms system -> database", "link_label":"video metadata" },{ "link":"student -> lms system", "link_label":"stream video" }] }, { "section_title": "Deployment View", "section_text": "Now lets translate our conceptual model to reality. We can use a NextJS frontend hosted on aws beanstalk to interface with users, During upload the frontend will send the video file to the lms system hosted on aws EC2 instance which will store it in a S3 bucket and simultaneously pass it through AWS Kinesis to convert the video in different formats and save the metadata to database which can be hosted on Aurora DB. During read he backend will decide the best video and use AWS Cloudfront as a CDN to stream the video back to client in chunks. And there you have it, a basic learning management platform.", "graphic_type":"flowchart", "flowchart_icons":{ "nextjs web":"aws-beanstalk-icon", "lms system":"aws-ec2-icon", "s3 storage":"aws-s3-icon", "aurora db":"aws-aurora-icon", "kinesis":"aws-kinesis-icon", "cloudfront cdn":"amazon-cloudfront-icon", }, "flowchart":[{ "link":"teacher -> nextjs web", "link_label":"upload video" },{ "link":"nextjs web -> lms system", "link_label":"process video" },{ "link":"lms system -> aurora db", "link_label":"read/write video metadata" },{ "link":"lms system -> kinesis", "link_label":"video processing" },{ "link":"kinesis -> s3 storage", "link_label":"save video formats" },{ "link":"client -> lms system", "link_label":"stream video" },{ "link":"lms system -> s3 storage", "link_label":"stream video" }] } ] ```