mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-11-29 17:16:10 +00:00
Add Claude.md (#21916)
This commit is contained in:
parent
97cf131d19
commit
0f7d6e7f61
112
CLAUDE.md
Normal file
112
CLAUDE.md
Normal file
@ -0,0 +1,112 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## About OpenMetadata
|
||||
|
||||
OpenMetadata is a unified metadata platform for data discovery, data observability, and data governance. This is a multi-module project with Java backend services, React frontend, Python ingestion framework, and comprehensive Docker infrastructure.
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
- **Backend**: Java 21 + Dropwizard REST API framework, multi-module Maven project
|
||||
- **Frontend**: React + TypeScript + Ant Design, built with Webpack and Yarn
|
||||
- **Ingestion**: Python 3.9+ with Pydantic 2.x, 75+ data source connectors
|
||||
- **Database**: MySQL (default) or PostgreSQL with Flyway migrations
|
||||
- **Search**: Elasticsearch 7.17+ or OpenSearch 2.6+ for metadata discovery
|
||||
- **Infrastructure**: Apache Airflow for workflow orchestration
|
||||
|
||||
## Essential Development Commands
|
||||
|
||||
### Prerequisites and Setup
|
||||
```bash
|
||||
make prerequisites # Check system requirements
|
||||
make install_dev_env # Install all development dependencies
|
||||
make yarn_install_cache # Install UI dependencies
|
||||
```
|
||||
|
||||
### Frontend Development
|
||||
```bash
|
||||
cd openmetadata-ui/src/main/resources/ui
|
||||
yarn start # Start development server on localhost:3000
|
||||
yarn test # Run Jest unit tests
|
||||
yarn playwright:run # Run E2E tests
|
||||
yarn lint # ESLint check
|
||||
yarn lint:fix # ESLint with auto-fix
|
||||
```
|
||||
|
||||
### Backend Development
|
||||
```bash
|
||||
mvn clean package -DskipTests # Build without tests
|
||||
mvn clean package -DonlyBackend -pl !openmetadata-ui # Backend only
|
||||
mvn test # Run unit tests
|
||||
mvn verify # Run integration tests
|
||||
mvn spotless:apply # Format Java code
|
||||
```
|
||||
|
||||
### Python Ingestion Development
|
||||
```bash
|
||||
cd ingestion
|
||||
make install_dev_env # Install in development mode
|
||||
make generate # Generate Pydantic models from JSON schemas
|
||||
make unit_ingestion_dev_env # Run unit tests
|
||||
make lint # Run pylint
|
||||
make py_format # Format with black, isort, pycln
|
||||
make static-checks # Run type checking with basedpyright
|
||||
```
|
||||
|
||||
### Full Local Environment
|
||||
```bash
|
||||
./docker/run_local_docker.sh -m ui -d mysql # Complete local setup with UI
|
||||
./docker/run_local_docker.sh -m no-ui -d postgresql # Backend only with PostgreSQL
|
||||
./docker/run_local_docker.sh -s true # Skip Maven build step
|
||||
```
|
||||
|
||||
### Testing
|
||||
```bash
|
||||
make run_e2e_tests # Full E2E test suite
|
||||
make unit_ingestion # Python unit tests with coverage
|
||||
yarn test:coverage # Frontend test coverage
|
||||
```
|
||||
|
||||
## Code Generation and Schemas
|
||||
|
||||
OpenMetadata uses a schema-first approach with JSON Schema definitions driving code generation:
|
||||
|
||||
```bash
|
||||
make generate # Generate all models from schemas
|
||||
make py_antlr # Generate Python ANTLR parsers
|
||||
make js_antlr # Generate JavaScript ANTLR parsers
|
||||
yarn parse-schema # Parse JSON schemas for frontend
|
||||
```
|
||||
|
||||
## Key Directories
|
||||
|
||||
- `openmetadata-service/` - Core Java backend services and REST APIs
|
||||
- `openmetadata-ui/src/main/resources/ui/` - React frontend application
|
||||
- `ingestion/` - Python ingestion framework with connectors
|
||||
- `openmetadata-spec/` - JSON Schema specifications for all entities
|
||||
- `bootstrap/sql/` - Database schema migrations and sample data
|
||||
- `conf/` - Configuration files for different environments
|
||||
- `docker/` - Docker configurations for local and production deployment
|
||||
|
||||
## Development Workflow
|
||||
|
||||
1. **Schema Changes**: Modify JSON schemas in `openmetadata-spec/`, then run `mvn clean install` on openmetadata-spec to update models
|
||||
2. **Backend**: Develop in Java using Dropwizard patterns, test with `mvn test`
|
||||
3. **Frontend**: Use React/TypeScript with Ant Design components, test with Jest/Playwright
|
||||
4. **Ingestion**: Python connectors follow plugin pattern, use `make install_dev_env` for development
|
||||
5. **Full Testing**: Use `make run_e2e_tests` before major changes
|
||||
|
||||
## Database and Migrations
|
||||
|
||||
- Flyway handles schema migrations in `bootstrap/sql/migrations/`
|
||||
- Use Docker containers for local database setup
|
||||
- Default MySQL, PostgreSQL supported as alternative
|
||||
- Sample data loaded automatically in development environment
|
||||
|
||||
## Security and Authentication
|
||||
|
||||
- JWT-based authentication with OAuth2/SAML support
|
||||
- Role-based access control defined in Java entities
|
||||
- Security configurations in `conf/openmetadata.yaml`
|
||||
- Never commit secrets - use environment variables or secure vaults
|
||||
Loading…
x
Reference in New Issue
Block a user