Instruções condensadas para assistentes de IA (Cursor, Windsurf, GitHub Copilot, Claude, etc.)
public/data/
├── index.json ← Índice (SEMPRE atualize ao adicionar cantoria)
├── estilos.json ← Referência de estilos
└── cantorias/ ← Arquivos individuais (um por cantoria)
├── {id}.json
Importante: Arquivos pequenos (2-8 KB) são melhores para IA processar!
Adicione esta cantoria:
https://www.youtube.com/watch?v=MrQSh9-k5XU
[Transcrição ou informações]
Localização: public/data/cantorias/{id}.json
ID Format: kebab-case sem acentos
- ✅
pensamento-positivo-os-nonatos - ❌
Pensamento_Positivo
Estrutura mínima:
{
"id": "cantoria-id",
"slug": "url-slug",
"titulo": "Título",
"estilo": { /* ver estilos.json */ },
"cantadores": [{ "nome": "...", "slug": "..." }],
"local": null,
"ano": null,
"contexto": "...",
"estrofes": [ /* array de estrofes */ ],
"links": { "youtube": "..." },
"destaque": true,
"_metadata": {
"created_at": "YYYY-MM-DD",
"file_ref": "/cantorias/{id}.json"
}
}Arquivo: public/data/index.json
// Adicione no array "cantorias"
{
"id": "cantoria-id",
"slug": "url-slug",
"titulo": "Título",
"estilo": "Nome do Estilo",
"destaque": true,
"youtube": "URL",
"_ref": "/cantorias/{id}.json"
}
// Atualize "metadata"
"metadata": {
"ultima_atualizacao": "2025-01-17", // ← Data ATUAL
"total_repentes": 14, // ← INCREMENTE
"total_estrofes_catalogadas": 65 // ← SOME estrofes novas
}Arquivo: view/src/lib/acervoCompat.ts
Adicione import e inclua no array repentes.
npm run data:sync- ❌ Não crie
repentes/{id}.txt(duplicação!) - ✅ Tudo já está no JSON
Consulte public/data/estilos.json para estrutura completa.
| Estilo | Versos | Métrica | Rima |
|---|---|---|---|
| Sextilha | 6 | 7 sílabas | AABCCB |
| Oitava | 8 | 7 sílabas | ABBAACCA |
| Martelo Alagoano | 10 + mote 3x | 10 sílabas | AAAAAAAAAB |
| Galope à Beira Mar | 10 | 10 sílabas | AAAAABBCCM |
| Décima | 10 | 10 sílabas | ABBAACCDDC |
- ✅ Crie arquivo em
cantorias/{id}.json - ✅ Adicione entrada em
index.json(arraycantorias) - ✅ Atualize
metadata(total_repentes, total_estrofes, data) - ✅ Use ID único
- ✅ Valide JSON (sintaxe correta)
- ❌ Edite
acervo.json(obsoleto) - ❌ Edite arquivos em
dist/(gerados pelo build) - ❌ Esqueça de atualizar
index.json - ❌ Use IDs duplicados
- ❌ Importe diretamente de
public/data/acervo.json
// ✅ Para usar dados agregados (retrocompatível)
import acervoData from "../lib/acervoCompat";
const cantorias = acervoData.repentes;
// ✅ Para usar nova estrutura modular
import { getIndex, loadCantoria } from "../lib/loadAcervo";
const index = getIndex();
const cantoria = await loadCantoria('cantoria-id');Arquivo: public/data/cantorias/pensamento-positivo-os-nonatos.json
- ID:
pensamento-positivo-os-nonatos - Estilo: Martelo Alagoano
- Cantadores: Nonato Costa, Nonato Neto
- Estrofes: 8
- YouTube: https://www.youtube.com/watch?v=MrQSh9-k5XU
Arquivo: public/data/cantorias/sextilha-lampiao-gruta-angicos.json
- ID:
sextilha-lampiao-gruta-angicos - Estilo: Sextilha
- Cantadores: Valdir Teles, Sebastião Dias
- Estrofes: 22
- YouTube: https://www.youtube.com/watch?v=f1dN-dkSOuY
{
"ultima_atualizacao": "2025-01-17",
"total_repentes": 13,
"total_estrofes_catalogadas": 57
}Ao adicionar: Incremente esses números!
Adicionar cantoria:
- Crie
cantorias/{id}.json - Atualize
index.json(array + metadata) - Atualize
acervoCompat.ts(import + array) - Rode
npm run data:sync
Editar cantoria:
- Edite
cantorias/{id}.json - Atualize metadata em
index.jsonse necessário
Imports:
- Use
import acervoData from "../lib/acervoCompat"
NUNCA:
- Edite
dist/ - Crie
acervo.json - Esqueça
index.json
Documentação completa: Veja .cursorrules e docs/projeto/DATA-MODEL.md