这个项目能做什么
Bast 是一个开源的网站分析应用程序,旨在为不需要 Cookie 或第三方跟踪服务的微型网站提供基础的流量洞察。其核心关注点是隐私和简洁:作者将其描述为一个最初为个人使用而构建,随后因部分朋友认为有用而分享的项目。
重要状态说明:README 明确指出该项目已不再维护。任何考虑使用该项目的人应将其视为只读代码库、分叉(fork)的起点或参考实现,而非一个受支持的产品。
衡量指标
指标按天为原子尺度进行存储。页面浏览量(Pageviews)统计匿名或已识别的访客,例如三名访客产生三次页面浏览;每次页面浏览都会记录来源页(referrer)和当前 URL。用户数(Users)是指独立访客数量,且在不使用 Cookie 的情况下得出:通过访客的 IP 地址和用户代理(user-agent)构建标识符,经哈希处理后存储在数据库中。会话(Session)在不活动 30 分钟后重新开始,因此在该时间窗口内的重复访问被计为一个会话。平均在站时间仅在每个会话处于 5 秒至 30 分钟之间时才被记录。用户代理解析由 woothee 库处理,可提供浏览器名称、操作系统及相关详情。地理位置被提及为一项期望实现但尚未完成的功能。
架构与技术栈
后端使用 Rust 编写,采用 actix-web 框架和 diesel 作为 PostgreSQL ORM。前端大部分为静态页面,使用 React 和 Next.js 构建,界面采用 chakra-ui 并配有自定义图表。该项目需要 PostgreSQL 数据库。
运行方式
README 记录了多种运行路径。在 Unix 和 OS/X 上,安装带有 postgres 特性的 diesel CLI,针对运行中的 PostgreSQL 实例执行 diesel setup,然后在 website 文件夹内通过 npm install 安装前端依赖。文档还描述了 Docker 路径:执行 docker-compose up,环境变量可在 docker-compose.yml 中自定义。开发指令包括根据 .env.sample 创建 .env 文件,可选地使用 cargo-watch 在编辑期间重新加载 API,否则运行 cargo run,并使用 npm run dev 启动前端。项目还提供了一个 Heroku 部署按钮作为最简单的部署选项。README 列出运行应用程序的本地端口为 3333。
贡献与背景
README 鼓励提问和提交拉取请求(pull requests),明确欢迎初学者和初级开发者,并指向 CONTRIBUTING.md 以获取详情。作者提到阅读了 Fathom 的代码库,并指出无 Cookie 的用户识别方法受到了 JavaScript 项目 Ackee 的启发。此处将其分类并非仅因代码语言,而是因为其为用户在自有基础设施上部署的自有网站提供了流量分析价值。
评论
0 评分人数达到10人后显示
登录后参与讨论。