---
sidebar_position: 7
title: "Sistema de Persistência"
---

A aplicação usa `localStorage` para manter progresso e dados de edição entre sessões.

## Visão geral

```mermaid
graph TD
    APP[Aplicação] --> PR[Atividades de **Programação**]
    APP --> LT[Atividades de **Letramento**]

    PR --> BS[**blockstorage.js**
blocos do editor]
    PR --> CS[**codestorage.js**
código em texto]
    PR --> GP[**GameProgressContext**
progresso de fases]

    LT --> LS[**letramentoStorage.js**
progresso e status]
    LT --> LC[**LetramentoStateContext**
estado de execução]

    BS --> LOC[(localStorage)]
    CS --> LOC
    GP --> LOC
    LS --> LOC
```

## Persistência em atividades de programação

Principais pontos:

- Progresso de fases por atividade.
- Workspace/código do editor.
- Estado de execução relevante para retomada.

Arquivos de referência:

- `app/src/services/blockstorage.js`
- `app/src/services/codestorage.js`
- `app/src/services/createStorageService.js`
- `app/src/contexts/GameProgressContext.jsx`

## Persistência em atividades de letramento

Principais pontos:

- Status da atividade (`started`, `running`, `success`, `failure`, `completed`).
- Tentativas e score.
- Controle de fases concluídas por categoria.

Arquivos de referência:

- `app/src/services/letramentoStorage.js`
- `app/src/contexts/LetramentoStateContext.jsx`

## Diretrizes

- Nunca persistir dados sensíveis.
- Sempre versionar estruturas quando houver mudança de contrato.
- Tratar leitura com fallback para dados ausentes ou corrompidos.

Referências externas:

- Web Storage API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API
- JSON.parse error handling: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse
