# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview This is **Langflow** - a low-code app builder for RAG and multi-agent AI applications. It's a Python-based visual IDE that allows users to build, test, and deploy AI workflows through a drag-and-drop interface. The project combines a FastAPI backend with a React frontend. ## Architecture ### Backend Structure - **Main Backend**: `src/backend/langflow/` - Entry point and versioning - **Core Backend**: `src/backend/base/langflow/` - Main application logic with these key modules: - `api/` - REST API endpoints and WebSocket handlers - `graph/` - Flow graph processing and execution engine - `components/` - Custom component definitions and implementations - `services/` - Business logic services (database, auth, etc.) - `processing/` - Data processing utilities - `schema/` - Pydantic models and data structures - `serialization/` - Flow import/export functionality ### Frontend Structure - **Main Frontend**: `src/frontend/` - React application with: - Modern React 18 with TypeScript - Vite build system - Tailwind CSS for styling - React Flow for workflow visualization - Chakra UI and Radix UI components ### Key Technologies - **Backend**: FastAPI, SQLAlchemy, Pydantic, Celery (for async tasks) - **Frontend**: React 18, TypeScript, Vite, React Flow, Zustand (state management) - **Package Management**: UV (Python), NPM (Node.js) ## Development Commands ### Backend Development ```bash # Install backend dependencies make install_backend # Run backend in development mode make backend # Run backend with specific settings make backend log_level=debug host=0.0.0.0 port=7860 # Run backend tests make unit_tests make integration_tests make tests # Lint and format backend make format_backend make lint ``` ### Frontend Development ```bash # Install frontend dependencies make install_frontend # Run frontend in development mode make frontend # Build frontend for production make build_frontend # Run frontend tests make tests_frontend # Lint and format frontend make format_frontend ``` ### Full Development Workflow ```bash # Initialize the entire development environment make init # Run both frontend and backend make run_frontend make run_backend # Build and run the complete application make build_and_run # Format all code make format ``` ### Testing and Quality ```bash # Run all tests with coverage make coverage # Run linters make lint # Format code make format # Check spelling make codespell ``` ## Environment Setup 1. **Python**: Requires Python 3.10-3.12 2. **Node.js**: Required for frontend development 3. **Virtual Environment**: Activated via `.venv/bin/activate` 4. **Environment Variables**: Copy from `.env.example` to `.env` ## Database and Storage - **Database**: SQLAlchemy with PostgreSQL/SQLite support - **Migrations**: Alembic for database migrations - **Cache**: Redis for caching and session storage ## Key Features - **Visual IDE**: Drag-and-drop workflow builder using React Flow - **Multi-agent Support**: Orchestrates multiple AI agents and conversations - **RAG Pipelines**: Complete RAG implementation with various vector stores - **API Publish**: Export flows as APIs - **Observability**: Integration with LangSmith, LangFuse, LangWatch - **Component System**: Extensible component architecture for custom integrations ## Testing Structure - **Unit Tests**: `src/backend/tests/unit/` - **Integration Tests**: `src/backend/tests/integration/` - **Frontend Tests**: `src/frontend/__tests__/` - **Test Framework**: pytest with async support - **Coverage**: Generated coverage reports with `make coverage` ## Custom Components The project supports custom components through: - `src/backend/base/langflow/custom/` - Custom component definitions - Component registry system for dynamic loading - Support for Python-based and API-based components ## Deployment - **Docker**: Multi-stage Docker builds for production - **Cloud**: DataStax Langflow cloud service integration - **Self-hosted**: Complete Docker Compose setup available ## 数据库 - 当使用sqlite时,数据库路径为src/backend/base/langflow/langflow.db - 数据库路径为src/backend/base/langflow/langflow.db - 使用中文回答