Versão online: gaabdevweb.github.io/ISS
Teoria que vira código. Revisão que vira domínio.
O ISS é uma plataforma estática (HTML, CSS e JavaScript) para estudar no navegador: aulas em Markdown, exercícios, diagramas (Mermaid), realce de código e progresso guardado em localStorage — sem backend nem build obrigatório. O conteúdo vive em content/ (JSON + ficheiros .md); a aplicação faz fetch() e renderiza com Marked.js, Highlight.js e Mermaid.js.
Documentação técnica completa (arquitetura, JSON, URLs, como adicionar aulas, evitar duplicados, pesquisa, exercícios): veja documentation.md.
- O que encontras aqui
- Screenshots
- Começar localmente
- Arquitetura em uma página
- Conteúdo: o essencial para contribuir
- Contribuir
| Área | Descrição |
|---|---|
| Home | Disciplinas, filtro por trimestre (1.º / 2.º / ambos), pesquisa por título, disciplina, professor e excertos em search-index.json |
| Aulas | Roteamento aula.html?d=<disciplina>&a=<slug>; registo canónico em lessons.json |
| Exercícios | Embutidos no frontmatter da aula e/ou banco em content/exercises/ |
| Progresso | Aulas lidas, exercícios concluídos, checklists, revisões — tudo no browser (public/js/state.js) |
Servidor HTTP estático na raiz do repositório:
python -m http.server 8000ou
npx serve .Abre http://localhost:8000 (ou a porta indicada) e usa index.html como entrada. O caminho base do conteúdo (content/ vs ../content) ajusta-se automaticamente consoante a página esteja na raiz ou sob public/ — ver public/js/content.js.
flowchart LR
subgraph browser [Navegador]
HTML[Páginas HTML]
App[app.js + markdown.js]
end
subgraph static [content/]
DJ[disciplines.json]
LJ[lessons.json]
SI[search-index.json]
MD[Aulas .md]
EJ[exercises/exercises.json]
EM[exercises/*.md]
end
HTML --> App
App --> DJ
App --> LJ
App --> SI
App --> MD
App --> EJ
App --> EM
Ficheiros-chave: public/js/app.js (home, disciplina, aula), public/js/router.js (query d, a, slug), public/js/markdown.js (frontmatter + render). Detalhes e diagrama de sequência ao abrir uma aula: documentation.md.
- Nova disciplina — entrada em
content/disciplines.json(slug,title,order,trimester, …). - Nova aula — ficheiro em
content/<disciplina>/…mde registo emcontent/lessons.json(discipline,slug,title,order,file). A navegação usa o JSON; o frontmatter do.mdnão substitui este registo. - Evitar duplicados — chave lógica
(discipline, slug)deve ser única emlessons.json; confirma quefileaponta para um path real. - Pesquisa na home — opcional mas recomendado: entrada em
content/search-index.jsoncom o pardiscipline/sluge umexcerptpesquisável. - Exercício isolado —
.mdemcontent/exercises/+ linha emcontent/exercises/exercises.json(slugúnico no array).
Checklist completo e exemplos: documentation.md (secções Como adicionar uma nova aula, Como verificar se uma aula já existe, Exercícios independentes).
- Faça fork do repositório.
- Crie uma branch (
git checkout -b feature/descricao-curta). - Commit com mensagem clara; push e abra um Pull Request com o que mudou (conteúdo, correções, UI).
Projeto de apoio à revisão — INFNET. Melhorias de texto, diagramas, aulas e exercícios são bem-vindas.
Stack e convenções de conteúdo: documentation.md.







