Taleem is built as a small number of strict, independent layers.
Each layer has a single responsibility. No layer overlaps with another.
This structure is not stylistic. It exists to prevent long-term architectural collapse.
Structure flows downward. Control never flows upward.
Every Taleem system can be understood by reading from top to bottom.
Schema → Renderer → Engine → UI
Each layer consumes the output of the layer above it and exposes a simpler surface to the layer below.
The schema defines what a Taleem deck is.
It is pure, declarative data.
If data does not conform to the schema, it is not a Taleem deck.
The renderer converts validated schema data into concrete HTML.
It owns:
The renderer does not know:
Rendering happens exactly once.
Engines decide which rendered output is visible.
They operate on rendered slides, not on raw schema data.
Taleem provides two engines:
Engines:
Engines treat slides as opaque units.
Time exists in exactly one place.
Time lives only in the player engine.
The browser engine is completely time-agnostic.
This separation allows the same deck to be:
Without rewriting content.
The UI layer handles user interaction.
It may include:
The UI:
UI is replaceable. Engines and content are not affected.
Most systems fail because responsibilities blur over time.
Logic leaks upward. Data becomes reactive. Behavior becomes implicit.
Taleem avoids this by enforcing:
If a feature does not clearly belong to one layer, it does not belong in the system.