You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.3 KiB
4.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
jim-dify is a customized fork of Dify - an open-source LLM application development platform. It enables users to build and deploy AI-powered applications with visual workflows, knowledge bases, and various AI capabilities.
Key Commands
Frontend Development (web/)
cd web
pnpm dev # Start development server with debugging
pnpm build # Production build
pnpm lint # Run ESLint
pnpm fix # Auto-fix linting issues
pnpm test # Run Jest tests
pnpm check-i18n # Validate internationalization files
Backend Development (api/)
cd api
uv sync --dev # Install dependencies (requires uv package manager)
uv run flask run --host 0.0.0.0 --port=5001 --debug # Start API server
uv run pytest # Run all tests
uv run ruff check . # Lint Python code
uv run ruff format . # Format Python code
uv run mypy . # Type check Python code
Database Migration (api/)
The project uses Flask-Migrate (Alembic) for database schema management:
cd api
# Apply pending migrations to database
uv run flask db upgrade
# Generate new migration from model changes
uv run flask db migrate -m "description_of_changes"
# Check current migration status
uv run flask db current
# View migration history
uv run flask db history
# Downgrade to previous migration (if needed)
uv run flask db downgrade
Migration File Naming Pattern: YYYY_MM_DD_HHMM-{revision_id}_{description}.py
Key Migration Guidelines:
- Always review auto-generated migrations before applying
- Use descriptive migration messages
- Test migrations on staging before production
- Migrations are in
api/migrations/versions/ - Migration templates use
script.py.mako
Docker Development
# Build and push all images
make build-all # Build all Docker images
make push-all # Push all images to registry
make build-push-all # Build and push in one command
# Start middleware services (PostgreSQL, Redis, etc.)
cd docker
docker compose -f docker-compose.middleware.yaml --profile weaviate -p dify up -d
Architecture Overview
Frontend (Next.js + React + TypeScript)
- App Router: Uses Next.js 15 app directory structure
- State Management: Zustand for global state, React Context for component trees
- Data Fetching: SWR and TanStack Query for server state
- Styling: Tailwind CSS with custom design system
- Key Directories:
web/app/- Next.js pages and layoutsweb/components/- Reusable React componentsweb/service/- API client layerweb/i18n/- Internationalization files
Backend (Flask + Python)
- API Framework: Flask with RESTful endpoints
- Database: PostgreSQL with SQLAlchemy ORM
- Task Queue: Celery with Redis for async operations
- Key Directories:
api/controllers/- HTTP endpoint handlersapi/core/- Core business logic and AI integrationsapi/models/- Database modelsapi/services/- Business service layerapi/tasks/- Async task definitions
AI/LLM Integration
- Supports multiple LLM providers (OpenAI, Anthropic, etc.)
- Vector database integration for RAG (Retrieval Augmented Generation)
- Workflow builder for complex AI pipelines
- Agent capabilities with tool use
Development Workflow
-
Initial Setup:
- Backend requires PostgreSQL, Redis, and optionally a vector database
- Frontend uses pnpm for package management
- Both have separate .env configuration files
-
Code Quality:
- Frontend: ESLint + TypeScript strict mode
- Backend: Ruff for linting, MyPy for type checking
- Both have comprehensive test suites
-
Deployment:
- Primary deployment via Docker Compose
- Images pushed to
akiyu303/jim-*registry - Supports multiple deployment environments
Important Notes
- ESLint and TypeScript errors are currently ignored in production builds for the frontend
- The project uses standalone Next.js output mode for optimized Docker images
- Multi-language support is extensive - always check i18n when adding new UI strings
- Backend workers handle different task types: dataset processing, generation, mail, operations tracing
- Environment variables control feature flags and integrations