这个项目能做什么
Flarelytics 是一个开源的 Web 分析项目,旨在衡量访问者在网站上阅读内容的停留时间。它旨在提供一种尊重隐私的替代方案,以取代那些经常收集大量个人数据或缺乏精确停留时间指标的主流分析服务。
**架构**
- **浏览器脚本**(位于 `analytics` 文件夹)—— 一个由网站所有者嵌入页面的小型 JavaScript 代码片段。它为每个访问会话生成一个 UUID,并向后端发送两个事件:一个在页面加载时发送,另一个在页面隐藏或卸载时发送。
- **后端**(位于 `src`)—— 一个部署为 Cloudflare Worker 的 TypeScript 应用程序。它提供一个简单的 HTTP API 用于接收事件,并将这些事件存储在 PlanetScale MySQL 兼容数据库中。后端还将原始事件聚合为每页的停留时间统计数据,可通过仪表板查看。
**核心特性**
- 自托管:在您自己的 Cloudflare 账户上运行 Worker,并将数据存储在您自己的 PlanetScale 数据库中。
- 隐私优先:无第三方跟踪 Cookie,无 IP 日志记录,所有数据均由您控制。
- 支持单域名(未来版本可能会增加多域名处理)。
- 使用 `wrangler` 和 `pnpm` 的简单部署工作流。
**开发工作流**
1. 创建免费的 Cloudflare 和 PlanetScale 账户。
2. 克隆仓库并安装 Node.js v18+、pnpm 和 PlanetScale CLI。
3. 设置一个名为 `flarelytics` 的 PlanetScale 数据库,包含 `main` 和 `dev` 分支;本地工作请使用 `dev` 分支。
4. 创建一个 Cloudflare Worker(例如 `flarelytics-dev`),并将数据库凭据存储为秘密环境变量。
5. 运行 `pnpm run setup-test-db` 创建表,然后运行 `pnpm run dev` 启动本地 Worker。
6. 准备好测试环境后,使用 `npm run deploy-dev` 进行部署。
**贡献**
该项目由布达佩斯科技与经济大学的 Google Developer Student Club 维护。鼓励贡献者从 GitHub 追踪器中选择 Issue,遵循标准的 fork-branch-PR 流程,并遵守 README 中概述的贡献指南。
**状态**
Flarelytics 处于积极开发阶段,目前尚不建议用于生产环境。未来的计划包括支持多域名、更丰富的仪表板以及为分析 UI 提供可选的身份验证。
评论
0 评分人数达到10人后显示
登录后参与讨论。