Files
vibe-kanban/AGENTS.md
Alex Netsch cbe27a7549 Update claude.md (vibe-kanban) (#1484)
* Done. I've replaced the contents of `CLAUDE.md` with the contents from `agents.md`. The file now contains the repository guidelines from agents.md.

* Done. I've updated CLAUDE.md with the following fixes:

1. **Added `remote` crate** to the crates list
2. **Added `remote-frontend/`** directory
3. **Removed `dev_assets/`** (doesn't exist, only `dev_assets_seed/` does)
4. **Added `docs/`** directory

The rest of the file (commands, coding style, testing guidelines, security tips) appears accurate based on the `package.json` scripts I reviewed.

* Done. Added `dev_assets/` back to the assets line.

* Done. `CLAUDE.md` is now a symlink to `AGENTS.md`:

```
CLAUDE.md -> AGENTS.md
```

Both files will stay in sync since they're the same file now.
2025-12-09 16:04:20 +00:00

2.6 KiB

Repository Guidelines

Project Structure & Module Organization

  • crates/: Rust workspace crates — server (API + bins), db (SQLx models/migrations), executors, services, utils, deployment, local-deployment, remote.
  • frontend/: React + TypeScript app (Vite, Tailwind). Source in frontend/src.
  • frontend/src/components/dialogs: Dialog components for the frontend.
  • remote-frontend/: Remote deployment frontend.
  • shared/: Generated TypeScript types (shared/types.ts). Do not edit directly.
  • assets/, dev_assets_seed/, dev_assets/: Packaged and local dev assets.
  • npx-cli/: Files published to the npm CLI package.
  • scripts/: Dev helpers (ports, DB preparation).
  • docs/: Documentation files.

Managing Shared Types Between Rust and TypeScript

ts-rs allows you to derive TypeScript types from Rust structs/enums. By annotating your Rust types with #[derive(TS)] and related macros, ts-rs will generate .ts declaration files for those types. When making changes to the types, you can regenerate them using pnpm run generate-types Do not manually edit shared/types.ts, instead edit crates/server/src/bin/generate_types.rs

Build, Test, and Development Commands

  • Install: pnpm i
  • Run dev (frontend + backend with ports auto-assigned): pnpm run dev
  • Backend (watch): pnpm run backend:dev:watch
  • Frontend (dev): pnpm run frontend:dev
  • Type checks: pnpm run check (frontend) and pnpm run backend:check (Rust cargo check)
  • Rust tests: cargo test --workspace
  • Generate TS types from Rust: pnpm run generate-types (or generate-types:check in CI)
  • Prepare SQLx (offline): pnpm run prepare-db
  • Prepare SQLx (remote package, postgres): pnpm run remote:prepare-db
  • Local NPX build: pnpm run build:npx then pnpm pack in npx-cli/

Coding Style & Naming Conventions

  • Rust: rustfmt enforced (rustfmt.toml); group imports by crate; snake_case modules, PascalCase types.
  • TypeScript/React: ESLint + Prettier (2 spaces, single quotes, 80 cols). PascalCase components, camelCase vars/functions, kebab-case file names where practical.
  • Keep functions small, add Debug/Serialize/Deserialize where useful.

Testing Guidelines

  • Rust: prefer unit tests alongside code (#[cfg(test)]), run cargo test --workspace. Add tests for new logic and edge cases.
  • Frontend: ensure pnpm run check and pnpm run lint pass. If adding runtime logic, include lightweight tests (e.g., Vitest) in the same directory.

Security & Config Tips

  • Use .env for local overrides; never commit secrets. Key envs: FRONTEND_PORT, BACKEND_PORT, HOST
  • Dev ports and assets are managed by scripts/setup-dev-environment.js.