Skip to content

layout: page title: Páginas Públicas — Infraestrutura Open Pages

Páginas Públicas (Open Pages)

Documentação da infraestrutura de publicação de páginas públicas do Hub Grupo CSV.


Visão Geral

O Hub Grupo CSV possui uma infraestrutura independente para publicação rápida de páginas HTML acessíveis externamente, sem necessidade de autenticação. Esta infraestrutura é chamada de Open Pages e opera no subdomínio open.grupocsv.com.

Objetivo: Permitir o compartilhamento de relatórios, dashboards, propostas e datasets com parceiros externos (hospitais, operadoras, clientes) de forma rápida, segura e com controle de acesso (toggle ativo/inativo instantâneo).

Arquitetura (open.grupocsv.com):

  • Hospedagem: Cloudflare R2 (Bucket csv-open-pages)
  • Estado (Toggle): Cloudflare KV (Namespace csv-open-pages)
  • Roteamento e API: Cloudflare Worker (csv-open-pages)
  • Auth Gate: Cloudflare Worker (csv-open-auth) + KV (csv-open-auth)
  • Domínio: open.grupocsv.com
  • Repositório: grupocsv/csv-open-pages (privado, contém o código do Worker e do painel admin)

Arquitetura (hub.unimedgv.com):

  • Hospedagem: Cloudflare R2 (Bucket hub-unimedgv)
  • Estado: Cloudflare KV (Namespace hub-unimedgv-kv)
  • Roteamento: Cloudflare Worker (hub-unimedgv)
  • Domínio: hub.unimedgv.com
  • Repositório: grupocsv/hub-unimedgv (privado)

Como Funciona

1. Painel de Controle

O gerenciamento das páginas é feito através de um painel administrativo isolado, acessível em https://open.grupocsv.com/_admin/.

Funcionalidades:

  • Autenticação por senha fixa (configurada como secret no Worker).
  • Upload de arquivos HTML e assets (arrastar e soltar).
  • Definição de slug (identificador na URL), título e descrição.
  • Listagem de páginas publicadas com status atual.
  • Toggle instantâneo (Ativar/Desativar) via Cloudflare KV.
  • Cópia rápida do link público.

2. Roteamento e Bloqueio (Worker)

O Worker csv-open-pages intercepta todas as requisições para open.grupocsv.com/*.

Fluxo de acesso público:

  1. Usuário acessa https://open.grupocsv.com/{slug}/.
  2. O Worker consulta o status da página no Cloudflare KV (page:{slug}).
  3. Se o status for active, o Worker busca o arquivo correspondente no bucket R2 e o serve ao usuário.
  4. Se o status for inactive ou a página não existir, o Worker retorna uma página de erro 404 padronizada.

Vantagem: O bloqueio é real e ocorre na borda (edge). Uma página desativada não pode ser acessada, mesmo que os arquivos continuem armazenados no R2.

3. Legado (Diretório /p/ no Hub)

Anteriormente, as páginas públicas eram armazenadas no diretório /p/ do repositório principal do Hub e servidas via GitHub Pages. Este modelo foi descontinuado em favor da arquitetura independente (Open Pages) para permitir toggles instantâneos sem necessidade de novos deploys.

Páginas legadas (como o tea-dataset) foram migradas para o R2. O diretório /p/ no repositório grupocsv/hub pode ser mantido temporariamente para fins de histórico ou redirecionamento (301), mas novas publicações devem ser feitas exclusivamente via painel Open Pages.


Padrão HTML de Páginas Públicas

Toda página publicada no Open Pages deve ser autocontida (HTML, CSS inline ou em arquivos relativos, JS) e seguir as diretrizes visuais do Grupo CSV.

Meta tags OpenGraph

Recomenda-se a inclusão de meta tags para melhorar a apresentação ao compartilhar links no WhatsApp, LinkedIn, etc.

html
<meta property="og:title" content="{Título} | {Portal}">
<meta property="og:description" content="{Descrição curta}">
<meta property="og:type" content="website">
<meta property="og:locale" content="pt_BR">
<meta property="og:url" content="https://open.grupocsv.com/{slug}/">
<meta property="og:site_name" content="{Portal} | Grupo CSV">

Autenticação

Páginas públicas NÃO devem incluir scripts de autenticação interna do Hub (como /scripts/hub-auth.js). Elas são, por definição, abertas a qualquer pessoa com o link, desde que o status no painel esteja como "Ativo".

Auth Gate (Portão de Autenticação)

As Open Pages suportam uma camada de proteção dinâmica chamada Auth Gate:

  • Se o metadado no KV indicar "auth_gate": true, o Worker injeta dinamicamente um modal de login no HTML servido.
  • A validação das credenciais é delegada para o Worker csv-open-auth.
  • Isso permite que uma página hospedada no R2 seja pública por padrão, mas receba uma camada de proteção instantânea sem precisar recompilar o HTML.
  • A ativação/desativação do Auth Gate é feita via API: POST /api/set-auth-gate com { "slug": "...", "auth_gate": true/false }.

Histórico

DataDescrição
2026-02-15Primeira página pública legada: /p/tea-dataset/ no GitHub Pages
2026-03-06Infraestrutura legada formalizada: registry.json, admin tab
2026-03-18Migração para Open Pages: Nova arquitetura independente com Cloudflare Worker, R2 e KV no domínio open.grupocsv.com. Painel admin próprio e toggle instantâneo.
2026-05-30Hub Unimed GV: Infraestrutura paralela exclusiva para a Unimed GV em hub.unimedgv.com (Worker + KV + R2 próprios).
2026-06-11Auth Gate: Worker csv-open-auth implementado para proteger Open Pages com login dinâmico sem recompilar HTML.

Arquivos e Repositórios Relacionados

ItemTipoDescrição
grupocsv/csv-open-pagesRepositórioCódigo-fonte do Worker e do painel admin (open.grupocsv.com)
grupocsv/hub-unimedgvRepositórioCódigo-fonte do Worker e infraestrutura (hub.unimedgv.com)
csv-open-pagesCF WorkerRoteamento, API, Auth Gate e bloqueio na borda
csv-open-authCF WorkerValidação de credenciais do Auth Gate
hub-unimedgvCF WorkerRoteamento e injeção de <head> para Unimed GV
csv-open-pagesCF R2Bucket de armazenamento dos arquivos HTML/assets
hub-unimedgvCF R2Bucket de armazenamento dos arquivos HTML da Unimed GV
csv-open-pagesCF KVArmazenamento do estado (ativo/inativo, auth_gate) e metadados
csv-open-authCF KVSenhas e sessões do Auth Gate
hub-unimedgv-kvCF KVEstado e metadados das páginas da Unimed GV
/docs/_infra/public-pages.mdDocsEste documento