psitta

Documentation Index

docs/architecture/domain.md

Purpose

Describe the core business model and the general flow of the learning engine.

This document establishes:

Implementation details are covered in:


Domain Diagram (useful view, not exhaustive)

%%{init: {"class": {"hideEmptyMembersBox": true}} }%%
classDiagram

namespace Contents {
  class Content
  class Field
}

namespace Runtime {
  class Session
  class ExerciseScheduler
  class Exercise
  class WordExercise
  class SentenceExercise
  class ExerciseStatus
}

namespace Progression {
  class SRSConfig
  class SRSState
  class SentenceState
}

namespace Boundary {
  class ExercisePrompt
}



%% Inheritance
Exercise <|-- WordExercise
Exercise <|-- SentenceExercise

%% Session
Session "1" --> "1" ExerciseScheduler : orchestrates
ExerciseScheduler "1" --> "0..*" Exercise : schedule
Session "1" --> "1" SRSConfig : config

%% Exercise core
Exercise "1" --> "1" SRSState : srsState
Exercise "1" --> "1" ExerciseStatus : status

%% Targets (content)
WordExercise "1" --> "1" Content : target
SentenceExercise "1" --> "1..*" Content : sentences
Content "1" --> "1..*" Field : fields

%% Sentence-specific progression
SentenceExercise "1" --> "1..*" SentenceState : updates

%% Boundary projection (created on demand)
Exercise ..> ExercisePrompt : getPrompt()


Quick Model Overview

1) Content

2) Progression

3) Runtime

Note: SessionType (see sessions.md) is an initialisation detail (validation/consistency) and is not a persistent state of Session.

4) Boundary (ExercisePrompt)


What the Domain Intentionally Ignores


Detail Distribution (to keep domain.md concise)