Quartz

Resumo

Gerador de site estĆ”tico ā€œbatteries-includedā€ (em TypeScript) que transforma um vault Obsidian/Markdown em um site funcional. Ɖ a engine da wiki pĆŗblica do DM Yan: wiki.yanbraga.com roda sobre Quartz a partir do conteĆŗdo de content/.

Por que Ć© relevante para Yan

  • Publica para os jogadores a parte do vault que Ć© pĆŗblica (cenĆ”rios, guias, perfis de NPCs player-safe) sem expor o prep do Mestre.
  • Permite controlar visibilidade por pasta (ignorePatterns), rascunho (draft: true) e plugins customizados (RemoveSecrets).
  • Repo atual usa Quartz v4.4.0 (a migração v5 foi interrompida pela metade e revertida).

Conceitos principais

  • Build estĆ”tico: npx quartz build processa o Markdown e gera a pasta public/ (HTML/CSS/JS) — sem backend.
  • Config: quartz.config.ts (pageTitle, baseUrl, enableSPA, ignorePatterns) e quartz.layout.ts (layout/cabeƧalho/rodapĆ©).
  • ignorePatterns: padrƵes de pasta/arquivo excluĆ­dos da publicação (ex.: **/2-Thylea/Personagens).
  • RemoveDrafts: plugin oficial que remove notas com draft: true do build.
  • Transformers/plugins: pipeline que converte callouts, wikilinks e componentes (SPA com popovers).
  • SPA fallback: rotas inexistentes retornam o shell do site (HTTP 200 mesmo sem a pĆ”gina) — validação por conteĆŗdo, nĆ£o por status.

Como funciona

  1. ConteĆŗdo em content/ (Markdown + frontmatter) no repo Wiki-Yan.
  2. npx quartz build gera o site em public/.
  3. Deploy: container Docker quartz-wiki na VM (nginx servindo o build) — rebuild manual com docker compose build && docker compose up -d --force-recreate quartz-wiki.
  4. DNS/HTTPS via Cloudflare Tunnel apontando para a porta interna do container.

Uso atual

  • Repo: C:\Users\Yanbd\dev\Wiki-Yan (branch v4; remoto GitLab YBraga35/Wiki-Yan).
  • Deploy: VM Oracle (hostname foundry), container quartz-wiki, rebuild via tar-pipe + docker compose.
  • Segredos: polĆ­tica documentada em RPG/1-DM Toolkit/Guia Secrets da Wiki.md (callouts [!secret]/[!dm]/[!private] + ignorePatterns + drafts).
  • Plugin custom RemoveSecrets em quartz/plugins/transformers/secrets.ts.

DecisƵes jƔ tomadas

  • Restaurar Quartz v4 após migração v5 incompleta que quebrava o build; backup reversĆ­vel em .quartz-backup-v5/.
  • Criar .dockerignore para reduzir o contexto de build (2.5GB → só o necessĆ”rio).
  • Defesa dupla de secrets: ignorePatterns + draft: true, porque seƧƵes de texto normal (ex.: ā€œInformaƧƵes Secretasā€) nĆ£o passam pelo RemoveSecrets (que só filtra callouts).

LimitaƧƵes e cuidados

  • Build local no Windows quebra com aliases contendo "?; " em notas antigas — buildar na VM.
  • Syncthing da VM (pasta obs-sync-yan) esteve desatualizado — preferir tar-pipe/scp manual.
  • Verificar publicação por CONTEÚDO do HTML baixado, nĆ£o por código HTTP (SPA fallback retorna 200).

QuestƵes em aberto

  • Completar a migração para Quartz v5 (planejada, nĆ£o priorizada).
  • Automação de deploy via git (hoje o push nĆ£o dispara rebuild).

Fontes