À propos du projet
## Aperçu
Traffic Analytics est un proxy d'analyse web conçu pour les sites Ghost. Il intercepte les appels `POST /api/v1/page_hit` effectués par le script `ghost-stats.js` de Ghost, enrichit la charge utile (analyse de l'user-agent, analyse du referrer, génération de signature utilisateur) et transmet les données à l'API `/v0/events` de Tinybird, où elles sont stockées dans une base de données ClickHouse.
## Architecture et modes d'exécution
- **Mode Batch (par défaut)** – Le service d'ingestion valide les requêtes, filtre les bots et publie les événements bruts vers un topic Google Cloud Pub/Sub. Un worker distinct consomme l'abonnement, enrichit chaque événement, les regroupe et les transmet à Tinybird. Cela découple la gestion des requêtes de l'ingestion et améliore le débit.
- **Mode Proxy (synchrone)** – Lorsqu'aucun topic Pub/Sub n'est configuré, le service d'ingestion effectue l'enrichissement en ligne et proxy la requête directement vers Tinybird dans le même cycle HTTP.
Le mode est sélectionné via la variable d'environnement `WORKER_MODE` et la présence de `PUBSUB_TOPIC_PAGE_HITS_RAW`.
## Fonctionnalités clés
- Analyse de l'user-agent pour la détection de l'OS, du navigateur et de l'appareil.
- Analyse et catégorisation de l'URL du referrer.
- Signatures utilisateur respectueuses de la vie privée avec des sels tournants quotidiennement.
- En-tête `x-ghost-bot-detected: true` optionnel pour le trafic bot filtré.
## Configuration
Copiez `.env.example` vers `.env` et ajustez les valeurs. Les variables importantes incluent :
- `WORKER_MODE` – `worker` ou `ingest`.
- `PUBSUB_TOPIC_PAGE_HITS_RAW` – définit le mode batch.
- `ENABLE_BOT_DETECTION_HEADER` – active ou désactive l'en-tête de réponse de détection des bots.
## Flux de développement
1. **Prérequis** – Docker (Desktop ou Orbstack) et Docker Compose.
2. Clonez le dépôt et exécutez `pnpm dev` pour démarrer tous les services ; l'API d'analyse sera accessible à l'adresse `http://localhost:3000`.
3. Pour l'intégration locale avec une version de Ghost, exécutez `pnpm dev:ghost` dans ce dépôt et `pnpm dev:analytics:local` dans le dépôt Ghost. Cela relie les deux conteneurs via un réseau Docker partagé.
### Support Multi-Worktree
Le projet peut exécuter plusieurs worktrees Git simultanément. Chaque worktree utilise son propre fichier `.env` pour définir des ports uniques, des noms de projet Docker compose et des volumes isolés, permettant un développement parallèle sans conflits de ports.
## Tests et Linting
- `pnpm test:types` – Vérifications de types TypeScript.
- `pnpm test:unit` – Tests unitaires.
- `pnpm test:integration` – Tests d'intégration.
- `pnpm test:e2e` – Tests de bout en bout avec WireMock.
- `pnpm lint` – Linting ESLint.
Toutes les commandes de test s'exécutent à l'intérieur de conteneurs Docker pour garantir la cohérence de l'environnement.
## Pipeline de déploiement
- **Flux de branche** – Ouvrez une PR, ajoutez éventuellement le label `deploy-staging` pour déclencher un déploiement en staging.
- **Actions de fusion** – Incrémentation automatique de la version patch, création de tag Git, publication de l'image Docker Hub, déploiements Cloud Run vers le staging et la production, vérifications de santé et notifications Slack.
- **Déclencheur manuel** – Utilisez l'interface GitHub Actions pour exécuter le flux "Deploy" via `workflow_dispatch`.
Les détails complets du CI/CD se trouvent dans `docs/deployment.md`.
## Documentation
- `docs/architecture.md` – Diagrammes détaillés des modes batch vs proxy, pipeline Pub/Sub, OpenTelemetry et conception du worker.
- `docs/deployment.md` – Pipeline CI/CD, flux staging/production et procédures de rollback.
## Licence
MIT © Ghost Foundation (2013‑2026).
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.