GBR SSG Core (`gbr_ssg_core`) | Governança
GBR SSG Core (gbr_ssg_core)
O gbr_ssg_core é a biblioteca que orquestra o motor de compilação estática de documentos do ecossistema Gleam-BR. Ele é responsável por extrair metadados TOML de frontmatter, construir a árvore lógica de navegação Wiki e acoplar o conteúdo em Djot à renderização baseada em Lustre SSR.
1. Por quê? (Why)
No desenvolvimento de *Sistemas Lúcidos*, o desacoplamento e a imutabilidade são diretrizes fundamentais. A decisão de isolar as regras de conversão lógica de documentos em um pacote dedicado baseia-se em:
-
*Isolamento de Efeitos (Sem I/O ou Rede):* O core não lê arquivos do disco e não abre conexões de rede. Ele opera exclusivamente como uma transformação pura de dados em memória (
String -> Result(DocumentInfo, String)). -
*Portabilidade Cross-Target Extrema:* Por ser livre de dependências nativas de sistema operacional ou de runtime, o
gbr_ssg_coreé totalmente portável. Ele pode ser compilado tanto para o target *Erlang* (BEAM) na nuvem/borda quanto transpilado para *JavaScript* para execução no navegador, se necessário. - *Contratos e Tipagem Estrita:* Toda a modelagem de páginas, categorias e Sidebar é expressada em Tipos de Dados Algébricos (ADTs) no Gleam, eliminando inconsistências comuns em geradores estáticos baseados em JSON dinâmico ou YAML opaco.
2. Como? (How)
A biblioteca é estruturada em torno de tipos de dados imutáveis e funções puras:
Estruturas de Dados
/// Metadados estruturados extraídos do cabeçalho TOML.
pub type PageMetadata {
PageMetadata(
title: String,
description: String,
path: String,
category: String,
order: Int,
)
}
/// O índice consolidado de páginas do site para a Sidebar.
pub type SiteIndex {
SiteIndex(pages: List(PageMetadata))
}
/// Árvore lógica estruturada e ordenada por categoria.
pub type NavigationTree = List(#(String, List(PageMetadata)))
Principais APIs Expostas
-
parse_document(content: String, path: String) -> Result(DocumentInfo, String)Separa a string do Frontmatter TOML delimitada por+++do corpo em Djot. Utiliza a bibliotecatompara decodificar as propriedades e inferir fallbacks casotitleoucategoryestejam ausentes (usando o caminho do arquivo). -
build_navigation_tree(index: SiteIndex) -> NavigationTreeAgrupa as páginas por categoria de forma determinística e as ordena numericamente pororder. Em caso de empate de prioridade, aplica o desempate alfabético por título. -
render(doc: DocumentInfo, index: SiteIndex, template: fn(DocumentInfo, SiteIndex) -> Element(Nil)) -> StringUne o documento de página atual com o índice geral do site, aplicando um template Lustre e transformando o AST em uma string de documento HTML5 compilada.
3. Para quê? (What for)
O gbr_ssg_core serve como o motor central reutilizável para a holding FVideen e o ecossistema Gleam-BR. Ele abstrai a complexidade do parser de Djot (jot) e TOML (tom) para que qualquer aplicação (seja nossa CLI de build local, um plugin Webpack/Vite ou um microserviço HTTP que renderiza documentos dinamicamente na nuvem) possa transformar conteúdo textual puro em páginas web ricas de forma rápida, lúcida e resiliente.