Об этом проекте
Bast — это веб-приложение для аналитики с открытым исходным кодом, предназначенное для небольших сайтов, которым нужны базовые данные о трафике без использования cookies или сторонних сервисов отслеживания. Основной акцент сделан на приватности и простоте: автор создал этот проект для личного использования и позже поделился им, так как он оказался полезен нескольким друзьям.
Важное примечание о статусе: в README прямо указано, что проект больше не поддерживается. Любой, кто рассматривает его использование, должен относиться к нему как к базе кода только для чтения, отправной точке для форка или эталонной реализации, а не как к поддерживаемому продукту.
Что измеряется
Метрики хранятся с временным интервалом в один день. Просмотры страниц (pageviews) учитывают анонимных или идентифицированных посетителей; каждый просмотр фиксирует реферер и текущий URL. Пользователи — это количество уникальных посетителей, определяемое без cookies: идентификатор создается на основе IP-адреса и user-agent посетителя, хешируется и сохраняется в базе данных. Сессия начинается заново после 30 минут бездействия, поэтому повторные визиты в этом окне считаются одной сессией. Среднее время на сайте фиксируется только в том случае, если оно составляет от 5 секунд до 30 минут за сессию. Парсинг user-agent выполняется библиотекой woothee, которая предоставляет название браузера, операционную систему и другие детали. Геолокация упоминается как желаемая, но еще не реализованная функция.
Архитектура и стек
Бэкенд написан на Rust с использованием фреймворка actix-web и diesel в качестве ORM для PostgreSQL. Фронтенд преимущественно статический, построен на React с Next.js, а интерфейс использует chakra-ui с кастомным графиком. Требуется база данных PostgreSQL.
Запуск
В README описано несколько способов запуска. В Unix и OS/X необходимо установить diesel CLI с функцией postgres, выполнить diesel setup для работающего экземпляра PostgreSQL, затем установить зависимости фронтенда с помощью npm install в папке website. Также описан путь через Docker: docker-compose up, при этом переменные окружения можно настроить в docker-compose.yml. Инструкции по разработке включают создание файла .env из .env.sample, опциональное использование cargo-watch для перезагрузки API при редактировании, запуск через cargo run и старт фронтенда с помощью npm run dev. В качестве самого простого варианта развертывания предлагается кнопка Heroku. В README указан локальный порт 3333 для работающего приложения.
Вклад и контекст
В README приветствуются вопросы и pull-запросы, особенно от новичков и младших разработчиков, а подробности содержатся в CONTRIBUTING.md. Автор упоминает, что изучал кодовую базу Fathom, а подход к идентификации пользователей без cookies был вдохновлен Ackee — проектом на JavaScript. Язык программирования сам по себе не является причиной классификации: ценность для пользователей заключается в аналитике трафика собственного веб-сайта, развернутой на их собственной инфраструктуре.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.