This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Opinionated SvelteKit-based LLM frontend for LangGraph server. This is a monorepo managed by moonrepo with pnpm workspaces.
- Backend (apps/backend/): Python 3.12 + LangGraph server for AI workflow management
- Frontend (apps/frontend/): SvelteKit + TypeScript with Tailwind CSS and shadcn/bits-ui components
- End to end tests (e2e/): Playwright + TypeScript. Run with
moon e2e:test. - Build System: moonrepo for task orchestration and dependency management
All commands use moon for consistency and optimal caching:
# Start frontend, backend, and OIDC mock provider dev servers with hot reload
moon :dev :oidc-mock
# Run development server for specific project
moon frontend:dev
moon backend:dev# Run ALL checks (lint, typecheck, format, build, unit and E2E tests) for entire workspace
# Note: Requires Docker to be running for the LangGraph server build
moon check --all
# Run checks for specific project
moon check frontend
moon check backend
# Run specific check types
moon :lint # Run linting
moon :typecheck # Run type checking
moon :format # Check formatting
moon :test # Run tests
# Auto-fix issues
moon :lint-fix # Fix linting issues
moon :format-write # Fix formatting issues# Build entire workspace
moon :build
# Build specific project
moon frontend:build
moon backend:buildRun tasks only on projects affected by current changes:
moon run :lint :format --affected
moon check --affectedmoon query projects # List all projects
moon query tasks # List all available tasks
moon task frontend:dev # Show task detailsmoon project-graph # Interactive project dependency graph
moon task-graph # Interactive task dependency graphmoon clean # Clean cache and artifacts
moon run :build --updateCache # Force cache updateThe monorepo uses a single .env file at the root:
- Copy
.env.exampleto.envin the monorepo root - The .env file contains configuration for both frontend and backend:
- Common: Shared authentication settings
- Backend: API keys, model configuration, tracing
- Frontend: Auth config, API URLs, monitoring
/
├── apps/
│ ├── backend/ # Python LangGraph server
│ └── frontend/ # SvelteKit application
├── .moon/ # Moon configuration and cache
└── moon.yml files # Project-specific task definitions
- Moon automatically installs dependencies when running tasks
- Git pre-commit hooks run
moon run :lint-fix :format-write --affected --status=staged - File groups in moon.yml define what files trigger rebuilds
- Tasks can extend other tasks (see
lint-fixextendinglintin moon.yml) - Moon handles incremental builds - only rebuilds what changed
- Chat UX features require E2E test coverage — any changes to the chat UI or message flow must include or update E2E tests in
e2e/src/
- Always use moon commands instead of direct npm/pnpm/python commands for consistency
- Moon caches results across the team via remote caching
- The
:prefix runs tasks across all projects (e.g.,moon :dev) - Specific project tasks use
project:taskformat (e.g.,moon frontend:test)