Integração e cobrança
A Nuvi.brinca é uma biblioteca de 1050 jogos (15 motores × 14 temas × 5 níveis) pensada para crianças neurodivergentes. Ela roda 100% no navegador, não guarda dados de criança nenhuma e devolve os resultados para a sua plataforma decidir o que salvar.
Passo 1
Embutir o jogo (iframe)
Cada jogo tem uma URL estável. Adicione ?embed=1 para esconder o cabeçalho e deixar só o jogo na tela.
<iframe src="https://nuvi-brinca.lovable.app/jogo/sons-iniciais-animais-n1?embed=1" title="Sons Iniciais · Animais" allow="autoplay" style="width:100%;height:640px;border:0;border-radius:24px" ></iframe>
Passo 2
Receber o resultado (postMessage)
O jogo emite três tipos de mensagem: ready (com o manifesto), event (acertos, erros, dicas e tempo de reação) e complete (a pontuação final de 0 a 100 mais a lista de eventos).
window.addEventListener("message", (e) => {
const msg = e.data;
if (!msg || msg.source !== "bia-game") return;
if (msg.type === "ready") console.log("manifesto", msg.manifest);
if (msg.type === "event") console.log("evento", msg.event);
if (msg.type === "complete") {
// msg.slug, msg.score (0-100), msg.events[]
salvarNaMinhaPlataforma(msg.slug, msg.score, msg.events);
}
});Cada evento tem o formato { event_type, payload, response_time_ms }, com event_type em correct, wrong, attempt, hint ou complete. Em produção, valide e.origin antes de confiar na mensagem.
Passo 3
Listar os jogos (API de catálogo)
Uma chamada GET pública, com CORS liberado e sem chave, devolve o catálogo já filtrado por idade, área, tema, motor, nível ou perfil.
GET /api/public/catalogo?idade=6&area=Atenção&limit=20
{
"total": 42,
"jogos": [
{
"slug": "foco-tranquilo-animais-n2",
"titulo": "Foco Tranquilo · Animais · Fácil",
"area": "Atenção",
"idade": { "min": 5, "max": 10 },
"diagnosticos": ["tdah", "tea", "tipico"],
"embed_url": "https://.../jogo/foco-tranquilo-animais-n2?embed=1"
}
]
}Filtros aceitos: idade, area, tema, motor, nivel (1 a 5), diagnostico (tea, tdah, dislexia, down, tipico), limit e offset.
Passo 4
O que já vem pronto
- Ilustrações próprias em vetor (sem emoji), alto contraste e traço grosso.
- Sem tempo de pressão, sem som obrigatório, sem tela piscando.
- Cinco níveis por jogo, com apoio de leitura nos três primeiros.
- Nenhum dado da criança é gravado: quem persiste é sempre a sua plataforma.
Na prática
Passo a passo para incluir os jogos na trilha
Sua plataforma continua dona da trilha e do progresso. A Nuvi.brinca só entrega o jogo e devolve o resultado.
Passo 1
Escolha os jogos da etapa
Chame GET /api/public/catalogo com os filtros da etapa (idade, área, tema, nível) e guarde o slug de cada jogo escolhido.
Passo 2
Crie a atividade na sua trilha
Na sua plataforma, cada atividade da trilha guarda só o slug do jogo (ex.: sons-iniciais-animais-n1) e a ordem dentro da etapa.
Passo 3
Abra o jogo no iframe
Quando a criança tocar na atividade, mostre o iframe com /jogo/<slug>?embed=1 — sem cabeçalho, só o jogo.
Passo 4
Ouça o resultado
No evento complete do postMessage você recebe slug, score (0–100) e os eventos. Salve na sua base como conclusão da atividade.
Passo 5
Libere o próximo passo
Use o score para marcar a atividade como concluída e desbloquear a próxima da trilha (ex.: score ≥ 60 avança, abaixo repete).
// exemplo mínimo dentro de uma etapa da trilha
const atividade = { slug: "sons-iniciais-animais-n1", ordem: 3 };
<iframe src={`https://nuvi-brinca.lovable.app/jogo/${atividade.slug}?embed=1`} />
window.addEventListener("message", (e) => {
const m = e.data;
if (m?.source !== "bia-game" || m.type !== "complete") return;
concluirAtividade(atividade, m.score); // salva na sua base
if (m.score >= 60) liberarProximaAtividade();
});Quer testar agora?
Abra qualquer jogo do catálogo e cole a URL com ?embed=1 na sua plataforma.