|
1 | | -# Development Guidelines for Albert Plus |
| 1 | +# Agent Development Guide |
2 | 2 |
|
3 | | -## Build/Lint/Test Commands |
| 3 | +## Commands |
4 | 4 |
|
5 | | -- **Build**: `bun run build` (builds all workspaces via turbo) |
6 | | -- **Lint**: `bun run check` (runs Biome linter/formatter) |
7 | | -- **Type check**: `bun run check:types` (type checks all workspaces) |
8 | | -- **Test**: `bun run test` (runs all tests) or `bun test <file>` (single test) |
9 | | -- **Test single file**: `cd apps/scraper && bun test src/modules/courses/index.test.ts` |
10 | | -- **Test with pattern**: `bun test --test-name-pattern="<regex>"` |
11 | | -- **Dev**: `bun run dev` (starts all dev servers with turbo) |
| 5 | +- **Lint/Format**: `bun check` (check) or `biome check --write` (fix) |
| 6 | +- **Type Check**: `bun check:types` (all) or `bun run --filter web check:types` (specific) |
| 7 | +- **Dev**: `bun dev` (starts all services with Turbo) |
12 | 8 |
|
13 | | -## Code Style & Formatting |
| 9 | +## Code Style |
14 | 10 |
|
15 | | -- **Formatter**: Biome with 2-space indentation, double quotes for strings |
16 | | -- **Imports**: Organize imports automatically (use `@/*` alias for apps/web src paths) |
17 | | -- **Types**: Strict TypeScript enabled - use explicit types, avoid `any` |
18 | | -- **Naming**: camelCase for variables/functions, PascalCase for components/types |
19 | | -- **Error Handling**: Use `JobError` for scraper modules, return `null` for not found in queries |
20 | | - |
21 | | -## Architecture Notes |
22 | | - |
23 | | -- **Monorepo**: Turbo + Bun workspaces (`apps/*`, `packages/*`) |
24 | | -- **Backend**: Convex (packages/server) for queries/mutations with Clerk auth |
25 | | -- **Frontend**: Next.js 15 with App Router, Tailwind CSS v4, React 19 |
26 | | -- **Scraper**: Cloudflare Workers with Hono, Drizzle ORM for D1 |
27 | | -- **Testing**: Bun test runner with mocks in `__mocks__/` directories |
| 11 | +- **Package Manager**: Bun (v1.3.1+), use `bun install` not npm/yarn/pnpm |
| 12 | +- **Formatter**: Biome - 2 spaces, double quotes, organized imports |
| 13 | +- **TypeScript**: Strict mode, no implicit any, use explicit types for exports |
| 14 | +- **Imports**: Organize imports automatically via Biome, use `@/` for app imports, `workspace:*` for monorepo packages |
| 15 | +- **Naming**: camelCase for variables/functions, PascalCase for components/types, UPPER_SNAKE_CASE for constants |
| 16 | +- **Error Handling**: Use `ConvexError` for Convex functions, `JobError` for scraper jobs, typed errors preferred |
| 17 | +- **Async**: Use async/await, avoid callbacks, handle errors with try/catch or .catch() |
| 18 | +- **Components**: React 19 + Next.js 16, server components by default, use "use client" when needed |
| 19 | +- **Database**: Convex for main app, Drizzle ORM for scraper D1 database |
0 commit comments