- Fork the repository
- Clone your fork
- Create a virtual environment and install dependencies:
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"- Run tests to verify setup:
pytest- Create a branch for your feature/fix
- Make your changes
- Run tests:
pytest - Run linter:
ruff check . - Submit a pull request
dataprofi/
core/ - Shared types and configuration
ingest/ - Data loading (CSV, JSON, API)
profiler/ - Quality scoring, column profiling, timeseries, geo, correlations, schema
cleaner/ - Cleaning pipeline (missing, duplicates, outliers, types, normalization)
indexer/ - PostgreSQL index recommendation engine
api/ - FastAPI server and Pydantic schemas
frontend/
src/components/ - React components (one per tab)
src/api/ - API client functions
src/types/ - TypeScript type definitions
tests/ - pytest test suite
samples/ - Sample datasets for testing
- Python: follow ruff defaults, line length 100
- TypeScript: strict mode, no
anywhere avoidable - No emoji or unicode symbols in UI - use lucide-react icons
- Comments only when the WHY is non-obvious - code should be self-documenting
- No unnecessary abstractions - three similar lines beats a premature helper
- Create
dataprofi/profiler/your_module.py - Define dataclasses in
dataprofi/core/types.py - Add API endpoint in
dataprofi/api/server.py - Add frontend component in
frontend/src/components/YourView.tsx - Add API client function in
frontend/src/api/client.ts - Register the tab in
frontend/src/App.tsx - Write tests in
tests/test_your_module.py
Use GitHub Issues. Include:
- What you expected
- What happened instead
- Steps to reproduce
- Sample data (if applicable)