Files
vibe-kanban/AGENT.md
Louis Knight-Webb ca231bd6be User management
2025-06-14 16:26:48 -04:00

2.4 KiB

Bloop Agent Guide

Commands

  • pnpm dev - Start full development environment (backend + frontend)
  • pnpm build - Build both frontend and backend for production
  • pnpm frontend:dev - Start frontend only (Vite dev server on :3000)
  • pnpm backend:dev - Start backend only with hot reload (cargo-watch on :3001)
  • pnpm backend:run - Run backend without hot reload
  • cd frontend && npm run lint - Run ESLint on frontend
  • cargo check --manifest-path backend/Cargo.toml - Check backend
  • cargo test --manifest-path backend/Cargo.toml - Run backend tests
  • cd frontend && npm test - Run frontend tests (if configured)

Architecture

  • Full-stack Rust + React monorepo with pnpm workspace
  • Backend: Rust/Axum API server (port 3001) with Tokio async runtime
  • Frontend: React 18 + TypeScript + Vite (port 3000) with shadcn/ui components
  • Shared: Common TypeScript types in /shared/types.ts
  • API: REST endpoints at /api/* proxied from frontend to backend in dev

Code Style

  • Rust: Standard rustfmt, snake_case, derive Debug/Serialize/Deserialize
  • TypeScript: Strict mode, @/ path aliases, interfaces over types
  • React: Functional components, hooks, Tailwind classes
  • Imports: Workspace deps, @/ aliases for frontend, absolute imports
  • Naming: PascalCase components, camelCase vars, kebab-case files

Project Structure

bloop/
├── backend/               # Rust backend (Axum API)
│   ├── Cargo.toml
│   └── src/
│       ├── main.rs
│       ├── routes/
│       └── models/
├── frontend/              # React + TypeScript app
│   ├── package.json
│   ├── vite.config.ts
│   ├── components.json    # shadcn/ui config
│   ├── tailwind.config.js
│   └── src/
│       ├── components/
│       │   └── ui/        # shadcn/ui components
│       ├── lib/
│       └── app/
├── shared/                # Shared types/schemas
│   └── types.ts
├── Cargo.toml             # Workspace configuration
├── pnpm-workspace.yaml    # pnpm workspace
└── package.json           # Root scripts

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.