PWA pessoal para acompanhar o Ibmec Stars — instalável como app no celular.
joshazze.github.io/cr9
O Ibmec Stars exige CR ≥ 9,0 em 4+ disciplinas no período. Não achei um app que tratasse a conta do jeito certo: AP1 + AP2 + ACs variáveis, AS como porta de saída, bônus do TP, e a pergunta real que interessa — dá ainda pra fechar 9?
Então fiz o meu. Vanilla stack, zero dependências em runtime, instalável no iOS/Android, funciona offline.
- HTML/CSS/JS puros — nenhum framework, nenhum bundler, nenhum npm
- PWA completa — manifest, service worker com cache estratégico, instalável
- localStorage como source of truth, com versionamento de schema e migrations idempotentes
- Fraunces + Inter, paleta cream/copper, suporte a dark mode via
prefers-color-scheme
~5k LOC entre app.js, style.css e index.html.
- Home com 3 focos intercambiáveis — Stars (projeção + probabilidade), Tracking (gráficos de progressão, aproveitamento, expectativa vs oficial) ou Registro (lançamento rápido de notas)
- Modelo de disciplinas flexível — AP1, AP2, N ACs com pesos customizáveis (soma ≤ 20) ou modo igualitário (20/N), seção de AS aparece automaticamente quando a média cai abaixo de 70
- Simulador — testa cenários "e se eu tirar X na AP2?" sem sujar os dados reais
- Teste de Progresso — bônus do TP aplicado na disciplina alvo, recalcula CR com e sem TP
- Probabilidade do Stars — estimativa baseada no rendimento atual vs necessário nos slots restantes
- Export/import em JSON pra backup manual
- Sem login, sem servidor. O app funciona 100% offline com localStorage; backup e migração entre dispositivos via export/import de JSON.
- Schema versionado.
loadStatechamamigrateStateem toda leitura e em todo import — refs órfãs (ex: TP apontando pra disciplina deletada) são limpas automaticamente. - Flags one-shot.
asAutoTriggeredliga a seção de AS uma vez quando faz sentido, mas respeita o toggle do usuário daí em diante. Comportamento automático sem ser invasivo. - Mobile-first de verdade. Todos os toques testados em iOS Safari, que tem quirks próprios de delegação de eventos e áreas clicáveis.
git clone https://github.com/joshazze/cr9.git
cd cr9
python3 -m http.server 8080
# abra http://localhost:8080Service worker e PWA precisam de HTTPS em produção, mas funcionam em localhost pra dev.
cr9/
├── index.html # shell com as 4 telas (home, disciplinas, simulador, config)
├── app.js # estado, cálculos, renderização
├── style.css # design system completo
├── sw.js # service worker
├── manifest.json
└── icons/
MIT.