Interface — Visão Geral

Como esta documentação é construída por dentro: arquitetura em 3 camadas, convenções e fluxo pra adicionar página nova. É documentação puro front-end — HTML/CSS/JS estático, sem build step, servido localmente.

0:00 / 0:00
Arquitetura em 3 camadas +

Toda página HTML carrega 1 único script e o resto é injetado em runtime. Isso mantém cada página HTML curta — só conteúdo, sem boilerplate de head/nav/footer.

CamadaArquivoResponsabilidade
Esqueletojs/layout.jsInjeta CSS, monta topbar/drawer/footer, gera breadcrumb, inicializa componentes
Estilocss/docs.cssTodo o visual — cards, accordion, audio-player, TOC, etc.
Conteúdopages/**/*.htmlSó conteúdo — sem <head> próprio, sem nav, sem footer
layout.js — o cérebro +

É o ÚNICO <script> que cada HTML precisa carregar. Faz tudo:

  1. Injeta CSS (docs.css, highlight.js, font-awesome)
  2. Monta topbar + drawer lateral + content-inner + footer
  3. Gera breadcrumb automaticamente a partir do path da URL
  4. Monta o menu lateral a partir do array MENU definido no topo
  5. Inicializa componentes (audio, carrossel, highlight, TOC, accordion)
  6. Restaura estado (drawer aberto/fechado, tema, zoom) do localStorage

O array MENU no topo do arquivo descreve toda a navegação — cada grupo com subgrupos, items, parent, hidden, pasta. Quem manda na estrutura de páginas é esse array.

var MENU = [
    {
        grupo: 'FUNDAMENTOS',
        pagina: 'fundamentos.html',
        subgrupos: [
            { label: 'JAVA', href: '1-java/java.html', pasta: '1-java' },
            { label: 'SQL',  href: '2-sql/sql.html',   pasta: '2-sql' }
        ],
        pasta: '1-fundamentos'
    }
    // ...
];
docs.css — o visual +

Único stylesheet. Todo o visual mora aqui. Lista dos componentes reutilizáveis disponíveis:

ComponentePra que serve
home-grid + cardGrid de cards clicáveis (variantes card-image e card-video)
info-accordionSeções colapsáveis
audio-playerPlayer de áudio dos podcasts NotebookLM
page-tocTable of Contents lateral
xt-templateBloco de código com highlight customizado
overview-boxBox de destaque estilo Apple
table-wrapWrapper de tabela com scroll horizontal em mobile
carouselCarrossel de imagens
pages/ — o conteúdo +

97 HTMLs organizados por tópico. Cada pasta é um grupo do menu, cada HTML é uma página.

documentacao/
├── index.html              ← hub raiz (cards principais)
├── grafo.html              ← grafo de páginas (vis-network)
├── css/docs.css            ← estilo único
├── js/layout.js            ← esqueleto único
└── pages/
    ├── 1-fundamentos/      ← Java, SQL, OSI, HTML/CSS/JS, Hardware, Git
    ├── 2-jasap/            ← framework Jasap (Manager, novo-modulo, crud)
    ├── 2-crud/             ← funcionalidades transversais
    ├── 3-nexus/            ← projeto Nexus
    ├── 7-interface/        ← esta meta-doc
    └── img-video/          ← vídeos dos cards do index

Cada pasta de página tem audio/ (m4a do NotebookLM) e img/ próprios — material auto-contido por página.

Convenções de naming +
ItemPadrãoExemplo
Pasta numeradaN-nome-kebab/1-visao-geral/
HTML da páginamesmo nome da pasta1-visao-geral.html
Hub de grupogrupo.html sem prefixojava.html, sql.html
Áudioaudio/nome.m4aaudio/visao-geral.m4a
Imagensimg/N.png ou nome livreimg/1.png, img/diagrama.png

Páginas XT/Jasap usam o prefixo Departamento* nos exemplos de código; páginas de fundamentos (e esta meta-doc) usam nomes genéricos.

Adicionar uma página nova +
  1. Criar a pasta numerada e o HTML com mesmo nome dentro de pages/<grupo>/
  2. Subir audio/ e img/ dentro da pasta da página
  3. No topo do HTML, único script: <script src="../../../js/layout.js"> — contar ../ até documentacao/
  4. Adicionar entrada no array MENU de js/layout.js
  5. Se for hub do grupo, adicionar card no index.html (card-image ou card-video)

O resto (head, breadcrumb, menu lateral, footer, highlight, TOC) é montado em runtime pelo layout.js.