Library Scope

1. Break Down the Feature Lifecycle

1.1 Define the Feature Goals

  • Purpose: Provide a way to control which Articulate Rise 360 modules are available to a specific organization.

  • Desired Outcomes:

    • Each organization has a excludedModuleIds list that will allow the organization to inherit all modules from platform's library other than exclusions. This will be referred to as the organizations effective library (Platforms library - exclusions)

    • Modules can be added or removed by admin users via a secure API.

    • Learners from an organization can only fetch modules from their organization's library.

    • Library Sections can be created by organization admins by excluded one or more moduleIds from the organizations effective library.

  • Core User Interactions:

    • Platform Admins: Add/remove modules from an organization's library.

    • Organization Admins: Create/update/delete Library Sections.

    • Learners: View and launch modules from their organization's library or a designated section.


1.2 Establish Key Milestones

  • Data Creation: Library is created automatically upon organization creation.

  • Data Storage: Effective library inherited from total modules minus organization's exclusion list. Library sections will inherit from effective library, with it's own inclusion list.

  • Data Retrieval: Organization integration will fetch authorized module lists based on their org and/or curated library section.

  • Data Updates: Admins manage module IDs directly via API.

  • Automation (future):

    • Auto-assignment of baseline modules

    • Scheduled library updates via license tiers


1.3 Prioritize MVP

  • MVP Scope:

    • Read/update library

    • Full CRUD on library sections

    • Maintenance Implementation: Validation against global module list

  • Future Enhancements:

    • UI grouping & tagging for libraries

    • Analytics dashboard per library/section

    • Locking sections per learner group


2. Identify Relevant Entities

2.1 List Entities

  • Organization

    • Holds excludedModuleIds: string[]

  • Module

    • Referenced by _id

  • LibrarySection

    • Collection inside of Organizations Organizations/{orgId}/LibrarySections/{sectionId}

    • name: string, moduleIds: string[]

2.2 Define Relationships

Entity
Relationship

Organization

Has one effective library, has many library sections

Module

Inherited by many libraries / sections

LibrarySection

Belongs to one organization, contains module IDs

Last updated