Skip to content

Latest commit

 

History

History
32 lines (24 loc) · 3 KB

File metadata and controls

32 lines (24 loc) · 3 KB

Repository Guidelines

项目结构与模块组织

Headscale Admin 基于 Next.js App Router,核心代码位于 src/src/app/ 按路由段划分模块,admin/ 下将页面、布局与加载状态放在同级目录,便于协同开发。通用组件与 shadcn 风格的 UI 原子保存在 src/components/,领域逻辑与数据请求封装放在 src/lib/。静态资源(图标、SVG、公开脚本)位于 public/。导入内部模块时使用 @/ 别名保持路径简洁。

构建、测试与开发命令

执行 bun install 安装依赖(仓库提供 bun.lock)。本地调试使用 bun dev,Next.js 将以 Turbo 模式启动。发布前运行 bun build,并用 bun start 验证产物。提交前务必执行 bun lint,该命令会联合 TypeScript 与 ESLint 校验。样式层面的定制集中在 tailwind.config.tspostcss.config.js,统一在配置文件中管理设计令牌。

代码风格与命名约定

优先编写 TypeScript 函数组件,并为 props 提供显式类型。组件使用 PascalCase,工具函数使用 camelCase,路由目录推荐 kebab-case。将页面逻辑与对应的 Server/Client 组件放在同一个路由目录中,便于检查数据流。统一使用两个空格缩进,当 JSX 属性超过一行时断行排列。复用 src/components/ui/ 中的基础原子,并尽量沿用 Tailwind 公共类(如 containerbg-secondary),避免散落的自定义 CSS。

  • 请注意禁止修改 src/components/ui/ 中的基础原子,禁止修改 tailwind.config.tspostcss.config.js 中的配置。
  • 禁止修改 src/app/globals.css 中的配置。

测试规范

当前尚未落地自动化测试,稳定后优先引入 Vitest 或 Playwright。新增测试文件请命名为 *.test.tsx 并与待测文件放在同一目录。暂未覆盖的场景需在 PR 中写明手动验证步骤,尤其是机器生命周期、用户管理与设置面板,确保审阅者能够复现。

提交与合并请求规范

遵循现有提交历史,标题使用简短祈使句,可根据需要添加作用域前缀(例如 chore:feat: 或中文描述)。合并请求需要概述改动、列出手动验证或附带截图,并关联对应的 Headscale 需求。提交前确认本地 bun lint 通过,避免 CI 失败。

环境与配置

启动前复制 .env.example.env.local,补充 Headscale 接口地址与访问令牌;.env.local 已被忽略,请勿提交密钥。生产环境的配置更新需通过团队安全渠道同步,禁止将敏感值写入代码。

工作准则

  • 以瞎猜接口为耻,以认真查询为荣。
  • 以模糊执行为耻,以寻求确认为荣。
  • 以臆想业务为耻,以复用现有为荣。
  • 以创造接口为耻,以主动测试为荣。
  • 以跳过验证为耻,以人类确认为荣。
  • 以破坏架构为耻,以遵循规范为荣。
  • 以假装理解为耻,以诚实无知为荣。
  • 以盲目修改为耻,以谨慎重构为荣。