面向程序员的打字练习网站,通过打出算法实现来同时训练手速和算法记忆。
- Vue 3 + Vite
- Vue Router
- Pinia
- Tailwind CSS
- ECharts
- Supabase JS SDK(上线阶段接入)
- Biome(代码格式化与检查)
开发阶段默认使用 src/lib/db.js 中的 mock 数据,不需要配置自己的 .env.local,也不需要连接 Supabase。
npm install
npm run dev浏览器打开:
http://localhost:5173
项目统一通过 src/lib/db.js 访问数据:
- 开发阶段:不配置 Supabase 环境变量时,自动使用 mock 数据。
- 上线阶段:配置 Supabase 环境变量后,
src/lib/db.js会切换到真实 Supabase 数据。 - 组件、页面、store 不应直接调用
src/lib/supabase.js或supabase.from(...),避免数据访问逻辑分散。
只有部署或联调真实后端时才需要配置环境变量。
在部署平台或本地 .env.local 中配置:
VITE_SUPABASE_URL=你的 Supabase 项目 URL
VITE_SUPABASE_ANON_KEY=你的 Supabase anon key注意:
.env.local不要提交到仓库。- 开发阶段如果只是做页面、组件、交互和 mock 数据流程,不需要配置以上变量。
npm run dev # 启动开发服务器
npm run build # 构建生产版本
npm run preview # 本地预览生产构建
npm run check # 使用 Biome 检查格式和代码问题
npm run check:fix # 使用 Biome 自动修复可修复问题
npm run format # 使用 Biome 格式化代码
npm run lint # 使用 Biome 检查 lint 问题
npm run lessons:manifest # 校验题库并生成轻量索引
npm run lessons:sync:dry # 本地检查待同步题库课程正文维护在 src/lessons/**/*.json。修改后先生成 manifest:
npm run lessons:manifest需要同步 Supabase 时,先应用 supabase/migrations 中的最新迁移,并在本地
.env.local 增加仅供脚本使用的 SUPABASE_SERVICE_ROLE_KEY,然后执行:
npm run lessons:sync网站运行时优先读取 Supabase:课程列表读取不含正文的元数据视图,进入课程后再按 ID 读取完整内容。数据库不可用时自动降级为随应用发布的本地 JSON。
service-role key 拥有后台权限,绝不能添加 VITE_ 前缀、发送到浏览器或提交到 Git。
提交 PR 前至少执行:
npm run check
npm run build请阅读:
CONTRIBUTING.md:开发流程、PR、代码风格、可读性规范AGENT.md:Agent / AI 助手操作规范docs/03_tasks.md:任务拆分和文件范围SPEC.md:产品和技术规格,修改前需要 Tech Lead 审批
贡献指数 = 提交数 × 10 + 新增行数 + 删除行数 × 0.5 · 最后更新:2026-06-20
| 排名 | 贡献者 | 提交数 | 新增行 | 删除行 | 贡献指数 |
|---|---|---|---|---|---|
| 🥇 | Edmund Ji | 94 | 42,817 | 9,788 | 48,651 |
| 🥈 | Frank | 12 | 1,047 | 337 | 1,335 |
| 🥉 | Kalin | 2 | 522 | 34 | 559 |
| 4 | Yang | 4 | 390 | 35 | 447 |
| 5 | Olive-1211 | 2 | 229 | 64 | 281 |
| 6 | ping668 | 1 | 267 | 8 | 281 |
| 7 | Alin | 1 | 176 | 88 | 230 |
| 8 | ZhangEve | 1 | 163 | 9 | 177 |
| 9 | griffty73 | 1 | 57 | 8 | 71 |
| 10 | 陈诗韵 | 1 | 30 | 15 | 47 |
| 11 | github-actions[bot] | 1 | 19 | 12 | 35 |
| 12 | copilot-swe-agent[bot] | 2 | 9 | 7 | 32 |
| 13 | Copilot | 1 | 9 | 7 | 22 |
| 14 | Frank-StarsChild | 1 | 0 | 0 | 10 |
由 GitHub Actions 在每次推送到 main 分支时自动更新