Sobre o projeto
O Tracker SDK é uma biblioteca de análise web de tamanho reduzido, projetada para integração rápida em aplicações web modernas, especialmente aquelas geradas por ferramentas assistidas por IA como Vibe Coding. Foca na simplicidade: uma única chamada `init` configura o endpoint do coletor, após o qual pageviews são registradas automaticamente e eventos personalizados podem ser enviados com `track(eventName, data)`.
**Principais capacidades**
- **Início sem configuração** – Adicionar uma tag script ou um import npm é suficiente para começar a coletar dados.
- **Detecção automática de pageviews** – O SDK escuta eventos de navegação e envia um payload `pageview` sem código adicional.
- **Tracking de eventos personalizados** – Desenvolvedores podem registrar qualquer interação chamando `track` com um nome e payload opcional.
- **Fingerprinting de dispositivo** – Um fingerprint baseado em canvas identifica visitantes de forma única, respeitando a privacidade.
- **Fila offline** – Eventos que falham no envio são armazenados no local storage e retryados mais tarde, minimizando perda de dados.
- **Gestão de sessões** – Sessões são criadas automaticamente e expiram após um timeout configurável (padrão de 30 minutos).
- **Batching configurável** – Eventos são agrupados em uma única requisição para reduzir sobrecarga de rede.
**Instalação**
- **CDN** – Inclua o bundle UMD diretamente no HTML e chame `WFTK.init({ endpoint: 'https://your-api.com/api/v1/collect/event', debug: true })`.
- **npm** – `npm install @weavefox/tracker` em seguida importe as funções: `import { init, track, setUserId } from '@weavefox/tracker';`.
**API pública**
| Método | Finalidade |
|--------|---------|
| `init(config)` | Inicializa o SDK com endpoint, appId e flags opcionais. |
| `track(eventName, data)` | Envia um evento personalizado. |
| `trackPageview(data)` | Registra manualmente uma pageview (ativo por padrão). |
| `setUserId(userId)` | Associa um usuário logado aos eventos subsequentes. |
| `getFingerprint()` | Retorna o fingerprint do dispositivo gerado. |
| `flush()` | Dispara imediatamente qualquer evento em fila. |
**Opções de configuração**
```javascript
WFTK.init({
endpoint: 'obrigatório', // URL do serviço coletor
appId: 'opcional', // Identificador da aplicação
autoPageview: true, // Auto-track de pageviews
debug: false, // Habilita depuração no console
enableQueue: true, // Armazena eventos offline quando a rede falha
sessionTimeout: 1800000, // Timeout de idle da sessão em ms (padrão 30 min)
maxEventsPerSession: 1000 // Limite superior de eventos por sessão
});
```
**Formato do payload** – Cada requisição contém um corpo JSON com um `appId` opcional e um array `events`. Cada evento inclui um nome `event` obrigatório, `timestamp`, `nonce` (para deduplicação), `fingerprint` e um objeto `data` com contexto coletado pelo sistema (URL, título, informações do dispositivo, etc.). Campos definidos pelo usuário pertencem ao sub-objeto `biz`, mantendo análises e dados de negócio separados.
**Considerações do lado do servidor**
- **Validação de timestamp** – Rejeite eventos com mais de 5 minutos para prevenir replay attacks.
- **Deduplicação por nonce** – Armazene nonces (por exemplo, em Redis) com TTL de 24 horas para garantir idempotência.
- **Rate limiting** – Aplique limites por IP e por fingerprint para coibir abuso.
- **Identificação do app** – Prefira um `appId` explícito no payload; fallback para o host do `Referer` da requisição se necessário.
- **Handler Express de exemplo** – O README fornece um snippet conciso em Node.js que valida timestamps, verifica nonces e persiste eventos.
**Licença** – Distribuído sob a licença MIT, permitindo uso irrestrito em projetos open-source e comerciais.
No geral, o Tracker SDK oferece uma solução simples e consciente da privacidade para desenvolvedores que precisam de análise client-side confiável sem a sobrecarga de plataformas pesadas.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.