CursivaDocs
Learners

Learner experience

The learner experience prioritizes continuity: finding the content, understanding where you are, interacting without noise, practicing with activities that adapt to your performance, and always resuming from the right spot. This page describes the learner side in depth — from reading to certified completion.

The learning page

Published content appears with the identity defined by the author (cover and theme), but the editorial elements follow a single visual language. Titles, text, media, and activities form a smooth reading column.

When a piece of content composes a larger experience, the navigation also shows the modules that are part of the experience, the availability of each step, and the accumulated progress. The learner always reads the most recent published version: content is updated in place, so there are no "frozen versions" to choose from.

One enrollment, continuous navigation

The sellable unit is the root — the content the learner enrolls in. References within that root work as module destinations and are navigated continuously under the same enrollment, at any nesting depth. There is no new sign-up per sub-content: a single enrollment in the root grants access to the entire tree reachable from it.

This keeps access and progress always coherent — both read exactly the same published tree. Practical consequences:

  • Opening a module via a direct URL re-anchors the learner in the course context when there is an enrollment whose tree reaches that module.
  • Recording progress or answering activities is only allowed on content that belongs to the enrolled tree — a forged viewedId that isn't reachable from the root is rejected.
  • A reference is a "completed" step when all referenced sub-content is complete, calculated by arithmetic over the progress map (no extra document is loaded).

Steps, availability, and resuming

A content's path is the ordered sequence of its sections (titles) plus its references (submodules). Each step exposes a state that the interface uses to guide the learner:

StateMeaning
doneThe step has been completed.
availableThe release rule has been satisfied — the learner can act on it.
currentThe first released and not-yet-completed step (the "continue here" highlight).
lockedThe release rule has not yet been met — content hidden, cannot be completed.
lockReasonWhy the step is locked (null when available).
unlockAtOnly for time-based release (drip): the moment the step opens, so the client can render the countdown.

Progress is stored as a per-content map (content identifier → list of stable section identifiers). Because sections are addressed by a stable id, an author who reorders the content never corrupts progress. Completion is intersected with the current section ids: a section removed after being completed doesn't keep counting, and a newly added section honestly reopens the content.

Resume where you left off

The My learning area brings together in-progress and completed content, each showing how many steps have been done out of the total (sections plus referenced submodules). The index of the first incomplete step points to the next available step, and the learner resumes exactly there.

Two completion signals coexist:

  • completed — the path of the viewed content is complete.
  • rootCompleted — the entire enrolled tree (the root) is complete. This is the signal that unlocks the certificate.

The time-based release anchor depends on the format: atemporal courses release relative to the enrollment date; temporal courses release relative to the learner's cohort start (the cohort opens along with it). Reads and writes share the same anchor, so a step never appears open and is then refused when it's completed.

Activities and assessments

While reading, the learner can answer quizzes, match pairs, order items, fill in blanks, vote in polls, reveal explanations, and flip flashcards. Slides, flashcards, and multi-step activities bring their own controls, without replacing the content's titles.

How each activity is served:

  • Question banks deliver only a sample (reveal) of the questions, with the answer key removed and the options shuffled — the order doesn't give away the answer.
  • Blanks (cloze) arrive without the expected answer; grading happens on the server.
  • Match pairs delivers the left column in the author's order and the right column as a shuffled, unlinked list — reconnecting them is the exercise.
  • Ordering delivers the steps shuffled (never already in the correct order).

Sampling is deterministic per learner: a pseudorandom generator seeded by user:content always produces the same selection and the same option order. This way a reload (or the learner's return) shows the same quiz, and saved answers stay aligned. The most recent submission is preserved and restored on return.

Adaptive learning

When a history of attempts exists, question selection stops being random and becomes mastery-biased. The history is derived on the server: up to the 20 most recent attempts are re-graded against the current published answer key (question ids are stable; removed questions simply drop out of the count), tallying hits and misses per question.

With this history, the bank's questions are ordered by priority and the sample is cut from the top:

PriorityBucketCriterion
1 (first)Needs practiceMisses greater than or equal to hits
2Not yet seenNo recorded history
3 (last)MasteredHits greater than misses

In other words, the order is missed → unseen → mastered: missed questions come back first, and mastered ones make room for fresh material. Flashcards follow exactly the same buckets — the missed cards lead the session and the mastered ones close it.

"Needs review" hints

The learner receives review recommendations for the root's direct modules whose last quiz score fell below 70%. It's the "you stumbled here, revisit" signal. With no attempts, or nothing to improve, the list stays empty.

Testing out (test-out)

A learner who proves mastery of a module can skip it:

  • The module's last quiz attempt must be at least 80% (>= 80%).
  • It only applies to leaf modules — modules that compose other content can't be skipped via their own quiz, because the referenced chapters are separate work.
  • On testing out, all sections of the module are marked complete in ascending order (respecting sequential unlocking), and the path advances.
  • The quiz is the evidence: without an attempt that clears the bar, there's no shortcut.

Completion, certificate, and emails

When the entire enrolled tree is complete (rootCompleted), the learner can access the certificate, on a dedicated page under the content's address (reserved segment certificate). The page requires live completion as its gate — anyone who hasn't yet completed is redirected back to the content. The certificate shows the learner's name, the content title, the issuing organization, and the completion date, and it can be printed.

Two emails accompany the journey, both best-effort (they never block the action and aren't sent when the email provider isn't configured):

MomentEmailContent
On enrollingWelcome / enrollmentContent title and a link to open it
On the first completion of the treeCompletionContent title and a link to the certificate

The completion email fires only on the transition to "completed" — the first time the entire tree becomes complete, not on every later visit.

On small screens

On small screens, the navigation and activities rearrange without changing the logical order of the content. The activity controls keep making clear what can be triggered, what has already been answered, when something is complete, which action the feedback belongs to, and whether or not the answer will be recorded.

Keep exploring