Sobre o projeto
## Visão Geral
Traffic Analytics é um proxy de análise web projetado para sites Ghost. Ele intercepta as chamadas `POST /api/v1/page_hit` feitas pelo script `ghost-stats.js` do Ghost, enriquece o payload (análise de user-agent, análise de referência, geração de assinatura de usuário) e encaminha os dados para a API `/v0/events` do Tinybird, onde são armazenados em um banco de dados ClickHouse.
## Arquitetura e Modos de Execução
- **Modo batch (padrão)** – O serviço de ingestão valida as requisições, filtra robôs e publica eventos brutos em um tópico do Google Cloud Pub/Sub. Um trabalhador separado consome a assinatura, enriquece cada evento, os agrupa e os encaminha ao Tinybird. Isso desacopla o tratamento de requisições da ingestão e melhora o throughput.
- **Modo proxy (síncrono)** – Quando nenhum tópico do Pub/Sub está configurado, o serviço de ingestão realiza o enriquecimento em linha e encaminha a requisição diretamente ao Tinybird no mesmo ciclo HTTP.
O modo é selecionado pela variável de ambiente `WORKER_MODE` e pela presença de `PUBSUB_TOPIC_PAGE_HITS_RAW`.
## Recursos Principais
- Análise de user-agent para detecção de sistema operacional, navegador e dispositivo.
- Análise e categorização de URLs de referência.
- Assinaturas de usuário preservadoras de privacidade com sal diário rotativo.
- Cabeçalho opcional `x-ghost-bot-detected: true` para tráfego de robôs filtrado.
## Configuração
Copie `.env.example` para `.env` e ajuste os valores. Variáveis importantes incluem:
- `WORKER_MODE` – `worker` ou `ingest`.
- `PUBSUB_TOPIC_PAGE_HITS_RAW` – define o modo batch.
- `ENABLE_BOT_DETECTION_HEADER` – ativa/desativa o cabeçalho de detecção de robô.
## Fluxo de Desenvolvimento
1. **Pré-requisitos** – Docker (Desktop ou Orbstack) e Docker Compose.
2. Clone o repositório e execute `pnpm dev` para iniciar todos os serviços; a API de análise estará acessível em `http://localhost:3000`.
3. Para integração local com uma instância do Ghost, execute `pnpm dev:ghost` neste repositório e `pnpm dev:analytics:local` no repositório do Ghost. Isso conecta os dois contêineres por meio de uma rede Docker compartilhada.
### Suporte a Múltiplos Worktrees
O projeto pode executar múltiplos worktrees do Git simultaneamente. Cada worktree usa seu próprio arquivo `.env` para definir portas únicas, nomes de projeto do Docker Compose e volumes isolados, permitindo desenvolvimento paralelo sem conflitos de porta.
## Testes e Linting
- `pnpm test:types` – Verificação de tipos TypeScript.
- `pnpm test:unit` – Testes unitários.
- `pnpm test:integration` – Testes de integração.
- `pnpm test:e2e` – Testes ponta a ponta com WireMock.
- `pnpm lint` – Linting com ESLint.
Todos os comandos de teste são executados dentro de contêineres Docker para garantir consistência de ambiente.
## Pipeline de Implantação
- **Fluxo de branch** – Abra um PR, opcionalmente marque com `deploy-staging` para acionar uma implantação de staging.
- **Ações de merge** – Atualização automática de versão patch, criação de tag Git, publicação da imagem no Docker Hub, implantações no Cloud Run para staging e produção, verificações de saúde e notificações no Slack.
- **Gatilho manual** – Use a interface do GitHub Actions para executar o fluxo "Deploy" via `workflow_dispatch`.
Detalhes completos do CI/CD estão em `docs/deployment.md`.
## Documentação
- `docs/architecture.md` – Diagramas detalhados dos modos batch e proxy, pipeline do Pub/Sub, OpenTelemetry e design do worker.
- `docs/deployment.md` – Pipeline CI/CD, fluxo de staging/produção e procedimentos de rollback.
## Licença
MIT © Fundação Ghost (2013–2026).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.