mirror of
https://github.com/lobehub/lobehub.git
synced 2026-03-26 13:19:34 +07:00
3.4 KiB
3.4 KiB
LobeHub Development Guidelines
This document serves as a comprehensive guide for all team members when developing LobeHub.
Project Description
You are developing an open-source, modern-design AI Agent Workspace: LobeHub (previously LobeChat).
Tech Stack
- Frontend: Next.js 16, React 19, TypeScript
- UI Components: Ant Design, @lobehub/ui, antd-style
- State Management: Zustand, SWR
- Database: PostgreSQL, PGLite, Drizzle ORM
- Testing: Vitest, Testing Library
- Package Manager: pnpm (monorepo structure)
Directory Structure
lobehub/
├── apps/desktop/ # Electron desktop app
├── packages/ # Shared packages (@lobechat/*)
│ ├── database/ # Database schemas, models, repositories
│ ├── agent-runtime/ # Agent runtime
│ └── ...
├── src/
│ ├── app/ # Next.js app router
│ ├── spa/ # SPA entry points (entry.*.tsx) and router config
│ ├── routes/ # SPA page components (roots)
│ ├── features/ # Business components by domain
│ ├── store/ # Zustand stores
│ ├── services/ # Client services
│ ├── server/ # Server services and routers
│ └── ...
├── .agents/skills/ # AI development skills
└── e2e/ # E2E tests (Cucumber + Playwright)
Development Workflow
Git Workflow
- Branch strategy:
canaryis the development branch (cloud production);mainis the release branch (periodically cherry-picks from canary) - New branches should be created from
canary; PRs should targetcanary - Use rebase for git pull
- Git commit messages should prefix with gitmoji
- Git branch name format:
feat/feature-name - Use
.github/PULL_REQUEST_TEMPLATE.mdfor PR descriptions
Package Management
- Use
pnpmas the primary package manager - Use
bunto run npm scripts - Use
bunxto run executable npm packages
Code Style Guidelines
TypeScript
- Prefer interfaces over types for object shapes
Testing Strategy
# Web tests
bunx vitest run --silent='passed-only' '[file-path-pattern]'
# Package tests (e.g., database)
cd packages/[package-name] && bunx vitest run --silent='passed-only' '[file-path-pattern]'
Important Notes:
- Wrap file paths in single quotes to avoid shell expansion
- Never run
bun run test- this runs all tests and takes ~10 minutes
Type Checking
- Use
bun run type-checkto check for type errors
i18n
- Keys: Add to
src/locales/default/namespace.ts - Dev: Translate
locales/zh-CN/namespace.jsonlocale file only for preview - DON'T run
pnpm i18n, let CI auto handle it
SPA Routes and Features
src/routes/holds only page segments (_layout/index.tsx,index.tsx,[id]/index.tsx). Keep route files thin — import from@/features/*and compose, no business logic.src/features/holds business components by domain (e.g.Pages,PageEditor,Home). Layout pieces, hooks, and domain UI go here.- See the spa-routes skill for the full convention and file-division rules.
Skills (Auto-loaded)
All AI development skills are available in .agents/skills/ directory and auto-loaded by Claude Code when relevant.
IMPORTANT: When reviewing PRs or code diffs, ALWAYS read .agents/skills/code-review/SKILL.md first.