66 lines
2.3 KiB
Markdown
66 lines
2.3 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Project Overview
|
|
|
|
LLM fine-tuning platform UI (Unsloth-branded). React/TypeScript frontend with a skeletal Python backend. The frontend is the active development focus.
|
|
|
|
## Commands
|
|
|
|
All commands run from `frontend/`:
|
|
|
|
```bash
|
|
bun install # install dependencies
|
|
bun run dev # start Vite dev server
|
|
bun run build # typecheck + production build
|
|
bun run typecheck # TypeScript type checking only
|
|
bun run lint # ESLint
|
|
bun run biome:check # Biome linter + formatter check
|
|
bun run biome:fix # Biome auto-fix
|
|
```
|
|
|
|
Package manager is **Bun** (not npm/yarn).
|
|
|
|
## Architecture
|
|
|
|
### Frontend (`frontend/src/`)
|
|
|
|
|
|
**Feature-based module architecture** with enforced boundaries:
|
|
|
|
- `features/` — self-contained feature modules (chat, onboarding, studio)
|
|
- `components/ui/` — shadcn/ui primitives (linting/formatting disabled for these)
|
|
- `components/assistant-ui/` — AI chat thread components
|
|
- `components/layout/` — layout shells (dashboard)
|
|
- `stores/` — Zustand stores (training wizard state)
|
|
- `config/` — constants (model lists, hyperparameters, env)
|
|
- `types/` — shared TypeScript types
|
|
- `app/` — router and root layout (TanStack React Router)
|
|
|
|
### Import Rules (ESLint-enforced)
|
|
|
|
Cross-feature imports are **prohibited**. Import from feature barrel (`@/features/[name]`), never from internal paths (`@/features/chat/some-component`).
|
|
|
|
### Key Technology Choices
|
|
|
|
| Concern | Choice |
|
|
|---------|--------|
|
|
| Routing | TanStack React Router |
|
|
| State | Zustand |
|
|
| Styling | Tailwind CSS + shadcn/ui (radix-maia style, HugeIcons) |
|
|
| Animation | Framer Motion |
|
|
| Chat UI | @assistant-ui/react with streaming |
|
|
| Local DB | Dexie (IndexedDB) for chat threads/messages |
|
|
| Charts | Recharts |
|
|
|
|
### Backend (`backend/`)
|
|
|
|
Placeholder Python structure. Frontend expects an inference server at the URL in `frontend/.env` (`VITE_INFERENCE_URL`) serving POST `/api/chat/generate` with streaming responses.
|
|
|
|
## Code Style
|
|
|
|
- Biome handles formatting (2-space indent) and import organization
|
|
- `src/components/ui/**` is excluded from Biome linting/formatting (generated shadcn code)
|
|
- Path alias: `@` maps to `frontend/src/`
|
|
- Prefer KISS and DRY
|