Skip to content

Repository files navigation

TypeLab

面向程序员的打字练习网站,通过打出算法实现来同时训练手速和算法记忆。

技术栈

  • 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.jssupabase.from(...),避免数据访问逻辑分散。

Supabase 上线配置

只有部署或联调真实后端时才需要配置环境变量。

在部署平台或本地 .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 审批

贡献排行榜

Contributors

贡献指数 = 提交数 × 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 分支时自动更新

Releases

Packages

Contributors

Languages