---
sidebar_position: 4
title: "Modelo LMS no Letramento"
---

Esta página descreve como o sistema de letramento aplica princípios de Learning Management Systems (LMS) para organizar conteúdo, acompanhar tentativas e registrar progresso.

Referência externa: https://en.wikipedia.org/wiki/Learning_management_system

## O que significa “LMS” neste contexto

No contexto da plataforma, LMS significa uma arquitetura orientada a aprendizagem com quatro capacidades centrais:

- Catálogo: organizar atividades por categorias e trilhas.
- Runtime: executar cada atividade com isolamento e segurança.
- Tracking: observar eventos de aprendizagem e conclusão.
- Persistência: manter histórico/progresso para continuidade.

```mermaid
graph TD
    LMS[LMS - visão conceitual] --> C[Catálogo]
    LMS --> R[Runtime]
    LMS --> T[Tracking]
    LMS --> P[Persistência]

    C --> REG[letramentoRegistry.js]
    R --> IFRAME[AtividadeRuntimeFrame + iframe sandbox]
    T --> BUS[letramentoEventBus + LetramentoStateContext]
    P --> STORE[letramentoStorage.js]
```

## Mapeamento da arquitetura atual

| Bloco LMS | Implementação na plataforma | Papel |
|---|---|---|
| Catálogo de conteúdo | `letramentoRegistry.js` | Define quais atividades existem e como são agrupadas |
| Runtime da atividade | `AtividadeRuntimeFrame.jsx` + `index.html` | Executa atividade isolada e garante integração por contrato |
| Tracking de execução | `postMessage` + `letramentoEvents.js` + `LetramentoStateContext.jsx` | Converte eventos da atividade em estado da aplicação |
| Persistência de progresso | `letramentoStorage.js` | Mantém progresso entre sessões |

## Fluxo funcional (visão LMS)

```mermaid
flowchart LR
    A[Selecionar atividade] --> B[Carregar runtime]
    B --> C[Iniciar tentativa]
    C --> D[Executar interação]
    D --> E{Resultado}
    E -->|Sucesso| F[Registrar conclusão]
    E -->|Falha| G[Registrar tentativa]
    F --> H[Persistir progresso]
    G --> H
    H --> I[Atualizar trilha do estudante]
```

## O que esse modelo resolve

- Separação clara entre conteúdo pedagógico e shell da aplicação.
- Escalabilidade para incluir muitas atividades sem acoplar lógica ao React.
- Rastreabilidade consistente por contrato de eventos.
- Evolução incremental de trilhas e categorias com baixo impacto estrutural.

## Trade-offs

| Decisão | Benefício | Trade-off |
|---|---|---|
| Iframe sandbox para runtime | Isolamento e segurança | Comunicação depende de contrato explícito (`postMessage`) |
| Estado no contexto React | Integração simples com UI | Exige disciplina para manter consistência de eventos |
| Persistência local (`localStorage`) | Simples, sem backend obrigatório | Sem sincronização multi-dispositivo por padrão |
| Contrato de eventos mínimo | Adoção rápida para novas atividades | Menor granularidade analítica sem payload enriquecido |

## Limites atuais vs LMS completo

A solução atual cobre um subconjunto de capacidades de LMS. Itens fora do escopo atual:

- Gestão de turmas e matrículas.
- Gestão avançada de papéis (docente, coordenação, aluno).
- Relatórios institucionais e trilhas analíticas centralizadas.
- Integração com LTI/SCORM/xAPI.

Mesmo assim, para o objetivo do produto, o modelo atual já entrega o núcleo de experiência de aprendizagem baseada em atividades.

