Skip to content

Base Architecture

Esteban Vergara Giraldo edited this page Sep 11, 2024 · 5 revisions

1. Scope

The proposed system is a collaborative learning platform aimed at the creation, evaluation, curation, organization, and dissemination of learning paths in the technology sector. The system will allow users to access external educational resources, organize these resources into personalized learning paths, and assess their progress through interactive activities.

Features Included in the Scope:

  • Creation of Learning Paths: Users will be able to create personalized learning paths that integrate external content, such as videos and tutorials, through links or embedded content.
  • Content Curation: Teachers, mentors, and content curators will be able to select, evaluate, and organize external educational resources, ensuring their relevance and quality.
  • Progress Evaluation: Users will be able to perform interactive assessments to measure their understanding of the material and receive feedback based on their performance.
  • Recommendation Generation: The platform will generate learning path recommendations based on the user's profile, preferences, and progress.
  • Intuitive User Interface: The system will feature a user-friendly interface, developed with React, allowing for easy navigation and use.

System Boundaries:

  • Dependence on External Content: The system will not host proprietary content but will rely entirely on links to tutorials, videos, and other external educational resources.
  • No Certification Integration: External evaluation and certification platforms will not be included; however, their integration may be considered in future versions.

Minimum Viable Product (MVP): The MVP will include the basic functionalities necessary to allow users to create and follow personalized learning paths, curate and organize external content, and assess their progress through interactive activities. This first release will validate the system's viability and gather user feedback for future iterations.

The system's scope is designed to provide a focused and efficient solution to the current needs of autonomous learning in the technology industry, maximizing the use of existing web resources without the need to create or manage proprietary content.

2. Component Description

In the architecture of the learning platform, we have defined several modular components, each performing a specific function within the larger system. These components are self-contained, allowing for easy integration and maintenance. Below is a list and description of these components:

  1. Authentication:

    • Description: This component is responsible for managing the security and access to the system. Its primary function is to verify the identity of users attempting to access the platform, ensuring that only authorized users can interact with the various services.
    • Functionality: Provides login, new user registration, password recovery, and multi-factor authentication services. This component is critical for protecting users' personal information and learning routes.
    • Interaction: It primarily interacts with the Account component to access the user details necessary for authentication and with the Users component to validate credentials.
  2. Account:

    • Description: This component manages all information related to user accounts, such as profiles, personal settings, and preferences.
    • Functionality: Allows users to create, update, and delete their accounts, as well as configure their preferences to personalize the learning experience. It also manages the linking of accounts with other services or external platforms.
    • Interaction: It interacts with the Authentication component to validate credentials and with the Users model to store and retrieve user profile information.
  3. Learning Route Interface:

    • Description: This component provides the interface through which users interact with learning routes. It is the central point for accessing, organizing, and tracking progress in learning routes.
    • Functionality: Allows users to view learning routes, mark content as completed, and receive recommendations based on their progress and preferences. It also supports the creation and customization of new routes.
    • Interaction: This component interacts with the Learning Routes models to fetch and display learning routes and with the Resources models to integrate and display educational content.
  4. Learning Route Generator:

    • Description: This component is responsible for creating personalized learning routes based on the user's preferences and profile data stored in the Account component, it's the main core of the project.
    • Functionality: Generates customized learning paths by analyzing user preferences, knowledge levels, and learning goals. It dynamically creates sequences of educational resources to fit the user's needs.
    • Interaction: This component interacts with the Account component to retrieve user preferences and with the Learning Routes models to create and store the generated routes.
  5. Users:

    • Description: This component represents the users within the system, storing all relevant information such as name, email, knowledge level, and learning preferences.
    • Functionality: Manages the creation and modification of user records, allowing other components to access this information to personalize the learning experience.
    • Interaction: It interacts with the Authentication, Account, and Learning Route Generator components to manage credentials, user profiles, and learning path generation.
  6. Resources:

    • Description: This component represents the various educational resources used in the learning routes, such as videos, articles, and interactive exercises.
    • Functionality: Stores information about the resources, including links, descriptions, and parameters such as difficulty level or covered technologies. It is crucial for the curation and organization of content.
    • Interaction: It is mainly used in the Learning Route Interface and Learning Route Generator components to integrate and display resources within the learning routes.
  7. Learning Routes:

    • Description: This component defines the learning routes that users follow to acquire new skills or knowledge. A route may consist of several resources organized sequentially.
    • Functionality: Allows the creation, modification, and storage of learning routes, including the association of resources and the definition of parameters such as the required knowledge level.
    • Interaction: It is closely linked with the Learning Route Interface and Learning Route Generator components to display, organize, and update learning routes, and with the Users component to customize routes according to the user's profile.

Aquí tienes las descripciones para los componentes Review y Skill en el mismo formato:

  1. Review:

    • Description: This component allows users to evaluate and leave feedback on resources within the platform. It plays a critical role in enhancing the learning experience by providing quality assessments from peers.
    • Functionality: Users can create, update, and delete reviews on resources, which may include ratings and comments. These reviews are used to influence the visibility and recommendation of resources.
    • Interaction: This component interacts with the Resources component to link reviews to specific educational content and with the Users component to identify the reviewer and display their feedback.
  2. Skill:

    • Description: This component tracks the skills associated with both users and resources, providing the foundation for personalized learning paths and resource recommendations.
    • Functionality: Manages user skills, including current skills and target skills. For resources, it tracks required skills and the learning skills they help develop. It helps personalize learning routes and resource suggestions based on skill levels.
    • Interaction: It interacts with the Users component to track user skills and goals, with Learning Route Generator to tailor learning paths, and with Resources to display the required and learning skills for each resource.

3. System Dimension

  • Scalability:

    • Growth of users and content: Horizontal scalability to add at least 1,000 additional users per month without performance degradation. Capacity to integrate at least 100 new external resources daily.
  • Performance:

    • Load times: The load time for any resource should be less than 3 seconds in an environment with a bandwidth of at least 10 Mbps.
    • Volume handling: Support at least 1,000 concurrent users with server response latency of no more than 200 ms.
  • Adaptability:

    • Adaptive learning routes: Implement a system that adjusts content recommendations within less than 1 minute after a user changes their preferences.

4. Non-Functional Requirements

  • Security:

    • Authentication: Implement user authentication with a password.
  • Usability:

    • Intuitive interface: Conduct usability tests with at least a representative group of 5 to 10 users to achieve a success rate of at least 95% in completing key tasks.
    • User experience: The maximum time to complete the platform's main tasks should not exceed 3 clicks or 15 seconds.
  • Accessibility:

    • Compliance with standards: Meet accessibility tests that ensure 100% compliance with the platform's main functions.

5. Class Diagram

Develop the class diagram for the project – this class diagram will focus on the application domain (business elements). Focus on models, ignoring controllers, or other additional programmed classes.

Conceptually, this is the class diagram we had planned. CLASS DIAGRAM

In development, it was simplified with some of the django tools, and named with snake_case when needed (in the attributes), becoming this:
SoftServeAcademy_models
(With the same functions)

The most notable changes in the development one are the mix between user and contentManager, they are now differenced by the is_superuser bool attribute, inherited from django models. Also the mix of all the middle tables between skill and other classes, because in django development they didn't had to be different, they had the same attributes.

6. System Component Diagram

Copia de P2_components drawio

The architectural solution chosen for the system is based on a modular, component-based approach. This approach is well-suited for the type of application—a collaborative learning platform—because it allows for flexibility, scalability, and maintainability. The priority non-functional requirements such as security, performance, scalability, and usability are addressed through the careful selection and interaction of components.

This architecture not only meets the system's functional requirements but also addresses critical non-functional requirements, such as scalability, performance, and security, ensuring that the platform remains robust, flexible, and user-friendly as it grows.

  • Authentication: Ensures security by managing user access, crucial for protecting user data. Its modularity allows security updates without affecting other components.

  • Account: Centralizes user data management, interacting with Authentication for security and Learning Route Generator for personalization, ensuring scalability and consistency.

  • Learning Route Interface: Provides a user-friendly experience, crucial for usability. Its separation allows UI updates without impacting the system's logic.

  • Learning Route Generator: Personalizes learning paths based on user data, supporting adaptability and scalability by handling complex data efficiently.

  • Users: Serves as the backbone for user information, ensuring consistent access across components and supporting scalability as the user base grows.

  • Resources: Manages educational content independently, allowing easy integration of new resources without affecting other system parts.

  • Learning Routes: Defines and manages learning paths, enabling flexible content updates and personalization without disrupting user interactions.

  • Review: Users evaluate resources, influencing recommendations and improving content quality.

  • Skill: Defines the current and target skills of users and resources. Users update their skills as they progress, while resources specify required and learning skills.