LA
Projeto · 01
WORKFLOW

Um currículo de inglês que respeita o aluno.

English-atelier é um app gratuito de treinamento diário de inglês, com currículo CEFR A1→C2 estruturado em dias absolutos. Sem gamificação tóxica, sem assinatura, sem freemium — porque o compromisso é com aprender, não com reter.

Status
Em produção
Usuários
50+
Ano
2025–2026
Stack
React · Vite · Tailwind · Vitest
english-atelier@mainbash
$git log --oneline -5
f3a91c2 curriculum: zero conditional → B1 (era B2)
8d24ee0 fix: B1-completion day 7 marcadores B1
a1c0b88 test: snapshot do plano A1→C2
2bf5571 feat: c1-expansion seed (14 → 28 dias)
5e0aa3c audit: CEFR realignment mai/2026
$npm test --silent && npm run build
PASS 183 tests · 0 failing · 1.8s
build · 432 kB gz · vercel deploy → master
01

O problema

O ensino de inglês no Brasil é caro, descontínuo e otimizado para aula em grupo — não para o jeito como adultos aprendem na prática. O aluno típico cancela a escola em três meses, baixa um app duolingo-like, e em algumas semanas está preso no nível A1 “avançando” em ouro virtual.

Faltava um caminho honesto: currículo claro do A1 ao C2, com tarefas diárias finitas, que recompensasse terminar o dia e não “fazer mais cinco lições por XP”.

02

A abordagem

Currículo ancorado no Common European Framework of Reference (CEFR). Cada dia é uma unidade fechada — gramática + vocabulário + prática + revisão SRS — calibrada para 20–30 minutos. Sem fila infinita.

A auditoria CEFR de maio/2026 redesenhou as proporções por nível:

NívelAtualAlvoΔ
A14249+7
A25770+13
B14284+42
B22884+56
C11456+42
C2035+35

Volume final alvo: ~378 dias de A1 a C2.

03

A estrutura de cada dia

Cada dia é um objeto simples — número absoluto, nível, tópico, seções tipadas. Esse formato é a interface entre conteúdo (Markdown) e progresso (localStorage). Mudar a forma quebra usuário; mudar o conteúdo, não.

src/data/b1-completion.jsts
"color:#6B6B6B">// src/data/b1-completion.js
export const b1Completion = [
  {
    day: 91,              "color:#6B6B6B">// número absoluto — JAMAIS renumerado
    level: "B1",
    topic: "Zero conditional vs first conditional",
    skills: ["grammar", "writing"],
    estimatedMinutes: 25,
    sections: [
      { kind: "explanation", file: "explanations/b1/zero-cond.md" },
      { kind: "exercise",    file: "exercises/b1/zero-cond.json" },
      { kind: "srs",         deck: "b1-conditionals" }
    ]
  },
  "color:#6B6B6B">// ... próximo dia: 92, 93, 94 ...
];
04

Decisões técnicas que importam

  • Day numbers absolutos, jamais renumerados

    Cada lição tem um número global imutável. Progresso é salvo nesse identificador. Renumerar significa apagar o caminho de quem já está nele — virou lei do projeto.

  • Expansão de trás para frente (C2 → A1)

    Quando um nível precisa de mais dias, a expansão acontece de cima para baixo. Editar A1 quebraria o progresso da maioria; editar C2 não quebra ninguém. Custo de migration ≠ custo de usuário.

  • Stack vanilla, foco em velocidade

    React + Vite + Tailwind. Sem backend próprio, sem auth, sem banco. Progresso em localStorage. Cada decisão arquitetural diz “este app não vai morrer de manutenção”.

  • Vitest verde como gate de deploy

    Push no master = deploy Vercel. Testes são contrato. git revert para rollback — nunca reset --hard em master.

05

O que aprendi construindo

Construir um currículo é construir uma opinião sobre o que importa. A auditoria CEFR foi quando ficou claro que B2 e C1 estavam subdimensionados — não por preguiça, mas porque o autor (eu) é desproporcionalmente confortável neles e subestimou o esforço de quem está subindo. Currículo precisa de revisor independente, sempre.

Segundo aprendizado, mais geral: a gamificação que retém é inimiga da gamificação que ensina. Quando o app começou a parecer um jogo, eu sabia que tinha falhado. A única métrica é dia concluído; o único feedback é avançar.

06

Próximos passos

  • Expansão C1 (14 → ~42 dias)
  • Expansão B2 (28 → ~70 dias)
  • Criar C2 do zero (~28–35 dias)
  • SRS de longo prazo cross-nível