Domain map
This page is an orientation map of the domain. It does not replace models in code, but it gives the team shared language for product and documentation discussion.
flowchart TD CompanySpace[CompanySpace] --> UICS[UserInCompanySpace] User[User] --> UICS CompanySpace --> UserGroup[UserGroup] UICS --> UserInUserGroup[UserInUserGroup] UserGroup --> UserInUserGroup UserGroup --> GroupLeader[GroupLeader] UICS --> GroupLeader CompanySpace --> CICS[ContentInCompanySpace] Content[Content] --> CICS Content --> ContentVersion[ContentVersion] CICS --> AssignedContent[AssignedContent] UserGroup --> AssignedContent UICS --> AssignedContent AssignedContent --> ParticipationSource[ParticipationSource] ParticipationSource --> ContentParticipation[ContentParticipation] ContentVersion --> ContentParticipation User --> ContentParticipation CICS --> ContentLicense[ContentLicense] UICS --> ContentLicense
Domain areas
Section titled “Domain areas”| Area | Main entities | Why it matters |
|---|---|---|
| Tenant | CompanySpace | Separates client data, settings, and ownership. |
| Identity | User, UserInCompanySpace | One person can have different roles and states in different spaces. |
| Organization | UserGroup, UserInUserGroup, GroupLeader | Groups drive bulk processes and blended learning. |
| Content | Content, ContentVersion, ContentInCompanySpace | Separates a course, its versions, and availability for a client. |
| Assignment | AssignedContent, ParticipationSource | Explains why a user should study content. |
| Study | ContentParticipation, StepParticipation, TestAttempt | Holds learning state, progress, completion, and certificates. |
| Integration | REST API, webhooks | External contract for client systems. |
Source of truth
Section titled “Source of truth”This map is derived from Rails models in knowspread/app/models. If it differs
from code, code wins and the page should be fixed.