Об этом проекте
Tracker SDK — это библиотека веб-аналитики минимального размера, разработанная для быстрой интеграции в современные веб-приложения, особенно те, что создаются с помощью AI-инструментов вроде Vibe Coding. Акцент на простоте: один вызов `init` настраивает коллектор, после чего просмотры страниц записываются автоматически, а пользовательские события отправляются через `track(eventName, data)`.
**Ключевые возможности**
- **Запуск без конфигурации** — достаточно добавить один тег script или выполнить npm-импорт для начала сбора данных.
- **Автоматическое обнаружение pageview** — SDK отслеживает события навигации и отправляет пейлоад `pageview` без дополнительного кода.
- **Трекинг пользовательских событий** — разработчики могут регистрировать любые взаимодействия вызовом `track` с именем и необязательным пейлоадом.
- **Fingerprint устройств** — canvas-based отпечаток однозначно идентифицирует посетителей при соблюдении конфиденциальности.
- **Офлайн-очередь** — несохранённые события хранятся в local storage и повторяются позже, минимизируя потерю данных.
- **Управление сессиями** — сессии создаются автоматически и истекают после настраиваемого таймаута (по умолчанию 30 минут).
- **Настраиваемый батчинг** — события группируются в один запрос для снижения сетевой нагрузки.
**Установка**
- **CDN** — подключите UMD-сборку напрямую в HTML и вызовите `WFTK.init({ endpoint: 'https://your-api.com/api/v1/collect/event', debug: true })`.
- **npm** — `npm install @weavefox/tracker`, затем импортируйте функции: `import { init, track, setUserId } from '@weavefox/tracker';`.
**Публичный API**
| Метод | Назначение |
|--------|---------|
| `init(config)` | Инициализация SDK с endpoint, appId и необязательными флагами. |
| `track(eventName, data)` | Отправка пользовательского события. |
| `trackPageview(data)` | Ручная запись просмотра страницы (по умолчанию включено авто). |
| `setUserId(userId)` | Связь залогиненного пользователя с последующими событиями. |
| `getFingerprint()` | Получение сгенерированного отпечатка устройства. |
| `flush()` | Немедленная отправка всех событий из очереди. |
**Параметры конфигурации**
```javascript
WFTK.init({
endpoint: 'required', // URL сервиса-коллектора
appId: 'optional', // Идентификатор приложения
autoPageview: true, // Автоматический трекинг pageviews
debug: false, // Включение консоли отладки
enableQueue: true, // Сохранять события офлайн при сбое сети
sessionTimeout: 1800000, // Таймаут неактивности сессии в мс (по умолч. 30 мин)
maxEventsPerSession: 1000 // Верхняя граница событий на сессию
});
```
**Формат пейлоада** — каждый запрос содержит JSON с опциональным `appId` и массивом `events`. Каждое событие включает обязательные поля: `event` (имя), `timestamp`, `nonce` (для дедупликации), `fingerprint` и объект `data` с системно-собираемым контекстом (URL, заголовок, информация об устройстве и т.д.). Пользовательские поля размещаются в под-объекте `biz`, разделяя аналитические и бизнес-данные.
**Рекомендации для серверной стороны**
- **Проверка timestamp** — отклонять события старше 5 минут во избежание replay-атак.
- **Дедупликация по nonce** — хранить nonces (например, в Redis) с TTL 24 часа для обеспечения идемпотентности.
- **Rate limiting** — применять лимиты на IP и fingerprint для предотвращения злоупотреблений.
- **Идентификация приложения** — отдавать приоритет явному `appId` в пейлоаде; при необходимости использовать host из `Referer` запроса.
- **Пример Express-хендлера** — README содержит лаконичный сниппет Node.js, который проверяет timestamp, nonces и сохраняет события.
**Лицензия** — распространяется под лицензией MIT, позволяющей бессрочное использование как в open-source, так и в коммерческих проектах.
Tracker SDK предлагает простое, учитывающее конфиденциальность решение для разработчиков, которым нужна надёжная клиентская аналитика без перегруза тяжёлых платформ.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.