Skip to content
cursareDocs
Sign inGet started

Start here

  • Overview
  • Getting started
  • Platform concepts

Create

  • Content
  • Editor and blocks
  • Block reference

Publish & access

  • Publishing and access
  • Custom domain & white-label

Learners

  • Learner experience
  • Learners and enrollments
  • Progress and certificates

Teams & cohort

  • Teams
  • Cohorts

Sales

  • Offers & checkout
  • Payments & payouts
  • Affiliates
  • Links
  • Insights and reports

Admin

  • Organization & security
  • Subscription, trial & billing
  • Appearance
  • Members & roles
  • Audit log

Developer

  • Integrations
  • Learner UI registry
  • API keys & webhooks
  • MCP server
  • API reference
Explore the API

Platform concepts

This is Cursare's mental model: a small set of concepts that combine to describe any learning experience, from a standalone piece of text to a complete program. Understanding how they connect prevents you from duplicating material and creating conflicting rules.

Content is the central unit

A content is the platform's only publishable unit. It owns identity (route segment, tags, theme) and the editorial body; access, format, and commercial terms live on explicit offers (see Offers & checkout). Everything else in Cursare — enrollments, purchases, reviews, quiz history, and references — points to a content's stable id.

Each content is a single row in the database, updated in place. It holds two states:

StateWhat it isWho reads it
Draft (draftDocument)The editable working versionThe team, in the editor
Published (publishedDocument)The frozen copy from the last publishLearners

Publishing copies draftDocument into publishedDocument, records the date, and recomputes derived facts. There are no version rows: the learner always reads the latest published document, and progress survives because it is anchored to stable section identifiers, not to version numbers.

The id is the identity — the slug is just the address

Internal links use the stable id, so renaming never breaks the graph. A content's public URL is {organization}.cursare.com/{slug}, while each reference placement owns its local route segment.

Roles emerge from relationships

Content has no persisted kind. The same object can play several roles at once:

  • Standalone — published and read directly, with or without an offer.
  • Root — the content linked to an offer and therefore the single enrollment boundary.
  • Reusable child — referenced from one or many roots, at any depth.
  • Listed — discoverable in the public catalog independently of whether it is referenced elsewhere.

Adding or archiving an offer changes commercial entry, not the content's identity, document, route, or graph. Referencing content changes composition, not enrollment ownership.

Composition through references

A reference is an edge that links a parent content to a child content. You insert it in the editor, and it carries three pieces of information:

Reference fieldMeaning
targetContentIdThe stable id of the referenced content
blockIdThe stable identity of this exact placement
routeSegmentThe local URL segment owned by the placement
afterHours, dripAnchorThe placement's release timing
requiresExplicit prerequisite placement ids

A content's references form a directed graph. On publish, the learner manifest and graph projection are recomputed and every reference must target a published content from the same organization. Publication is refused for three dangerous cases:

  • Targets from another organization — prevents an enrolled learner from reading someone else's paid or unlisted material for free.
  • Targets with no published version — prevents a card that could never be completed, leaving the course forever incomplete.
  • Deleted targets — prevents dangling edges.

In addition, cycles and self-references block publication. The previous published document and graph remain unchanged. Publishes within the same organization are serialized so two simultaneous publishes cannot jointly form a cycle.

One source, many contexts

Updating referenced content keeps authorship centralized, while each placement controls its own title, URL segment, and release pacing. A content referenced by others cannot be deleted: remove the references first.

Continuous navigation under a single enrollment

A composition can have any depth of nesting, but the learner enrolls only once, in the root content connected to the selected offer. There is no separate enrollment for each referenced content.

From the root, the learner navigates continuously across the entire referenced tree. The platform resolves each URL segment against the enrolled tree (the shallowest match wins) and builds the breadcrumb along the shortest path from the root to the open module. A module is only accessible if it belongs to that person's active enrollment tree.

Access and progression

Access determines who can get in. Progression determines what becomes available after someone is already in. The two rules are independent: a learner can have access to the entire course and still find modules released over time (drip) or by prerequisite.

ConceptResponsibility
PublishingDefines the version visible to the learner
ListingDefines whether the content appears in the catalog
AccessDefines who can get in (price, approval, seat limit)
OfferThe sellable package of a content — price, format, entry terms
EnrollmentLinks a person to a root content (the learner row)
ProgressRecords completed sections by stable id
DripReleases steps after an interval
PrerequisiteRequires completing another step before releasing

When an offer exists, access derives above all from its price: a free offer allows direct enrollment; with a price, access goes through checkout. Additional layers can require approval and impose a seat limit. A content can carry multiple offers with different prices and terms for the same graph; campaigns can discount them. Progress is keyed by root, stable content id, and stable section or placement id, so reused content stays individually measurable without creating extra enrollments.

Completing a tree

A root is only considered complete when all of its own required sections and every required referenced placement at any depth are complete. This whole-graph completion unlocks the certificate.

Learners and members

Two distinct populations coexist in an organization, and the distinction must always stay clear:

RoleWho they areLink
LearnerA student enrolled in a course through an offerlearner row (person + course + current offer)
MemberSomeone on the team who runs the operationOrganization member

The same user can be a learner in one organization and a member in another — they are independent links. There is at most one enrollment per person and course, and it points to exactly one offer of that course. Alternative offers are entry choices before enrollment, not parallel entitlements: while the enrollment is active or past due, the learner cannot switch offers or buy another offer for the same course. Enrollment is idempotent: enrolling through the same offer returns the existing row. Only an active enrollment grants access; refunded or past-due enrollments keep the row (for history) but do not open the course. A paid learner also points to its exact current purchase, while free/comped learners keep that pointer null.

Member roles and the content's four functions

At the organization level, owner and admin hold structural authority and pass any content check. Below that, authority over a content is assigned by function, and each function corresponds to a member's role on the content's owning team (content.teamId):

Function (domain)Team roleWhat it authorizes
draftDocumenteditorEdit the body, publish, tags, theme, format
financefinancePrice, currency, installments, refunds, listing
cohortcohortManage cohorts, moderate, act as tutor
learnerslearnersManage enrollment, progress, intake answers, and attachments

Campaigns (coupons) are not covered by any of these functions: creating and editing them is an organization surface, restricted to owner and admin.

A content can be owned by a person (personal content) or a team — never both at the same time. The owning person holds all functions over their content. Owner-level actions (transferring ownership, deleting), however, require the owning person or an organization admin — no team role reaches that level.

Organizational structure

The organization is the operation's main space; it is the source of the public catalog and the producer pages. Within it:

  • Teams are the organization's curriculum areas: they slice the staff by subject (Programming, Backend), not by company function, and each team owns the contents of its area. The team that owns a content is the authority over it, and the per-member roles (editor, finance, cohort, learners) provide the granularity described above.
  • Cohorts are delivery groups for one offer: they keep dates, seats, one tutor, and discussion together. An enrollment points directly to at most one cohort of its own offer.

Self-paced or cohort delivery

Format belongs to the offer, not the content. The same course may have a self-paced offer and a cohort-delivered offer:

deliveryModeHow it works
self_pacedThe learner advances at their own pace; drip counts from enrollment. A cohort is optional and can exist only for discussion.
cohortEnrollment points to a dated cohort of the same offer; drip counts from that cohort's start.

Cohort-delivered offers can create cohorts automatically, with configurable duration, seat limit, and tutor. The tutor can be fixed or selected by least load among eligible owning-team members.

Next steps

ContentCreate, configure, publish, and compose reusable content.Publishing and accessPublish, list, and define who can get in.Learners and enrollmentsEnrollments, requests, seats, and progress.TeamsRoles and per-member functions around the content.
PreviousGetting startedNextContent

Your privacy choices

The technical Tag Manager container is required to apply your choices. Analytics and marketing cookies and storage remain optional and stay off until you authorize them. Privacy Policy.

Sign-in, security, core functions and consent enforcement.

Audience measurement such as Google Analytics.

Marketing storage, campaign attribution and optional tags.