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