* 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.
2.6 KiB
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 infrontend/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) andpnpm run backend:check(Rust cargo check) - Rust tests:
cargo test --workspace - Generate TS types from Rust:
pnpm run generate-types(orgenerate-types:checkin CI) - Prepare SQLx (offline):
pnpm run prepare-db - Prepare SQLx (remote package, postgres):
pnpm run remote:prepare-db - Local NPX build:
pnpm run build:npxthenpnpm packinnpx-cli/
Coding Style & Naming Conventions
- Rust:
rustfmtenforced (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/Deserializewhere useful.
Testing Guidelines
- Rust: prefer unit tests alongside code (
#[cfg(test)]), runcargo test --workspace. Add tests for new logic and edge cases. - Frontend: ensure
pnpm run checkandpnpm run lintpass. If adding runtime logic, include lightweight tests (e.g., Vitest) in the same directory.
Security & Config Tips
- Use
.envfor local overrides; never commit secrets. Key envs:FRONTEND_PORT,BACKEND_PORT,HOST - Dev ports and assets are managed by
scripts/setup-dev-environment.js.