Configuración de Desarrollo
Requisitos Previos
- uv (administra Python y las dependencias; Python 3.10 a 3.13)
- Node.js (LTS) y Yarn 3.5.0
- Git
1. Clonar el Repositorio
git clone https://github.com/DashAISoftware/DashAI.git
cd DashAI
git checkout develop
2. Configuración del Backend
Instala todas las dependencias (uv crea el .venv e instala el paquete
en modo editable, incluyendo las dependencias de desarrollo):
uv sync
uv run pre-commit install
En máquinas sin GPU NVIDIA puedes usar los wheels de PyTorch solo-CPU, que son mucho más livianos:
uv sync --extra cpu
En máquinas con NVIDIA, el extra cuda fija los wheels de PyTorch CUDA 12.8.
Para tener además soporte LLM (GGUF) con offload a CUDA, define CMAKE_ARGS
para que llama-cpp-python compile contra CUDA (requiere CMake, un compilador
C y el toolkit de CUDA):
uv cache clean llama-cpp-python
CMAKE_ARGS="-DGGML_CUDA=on" uv sync --extra cuda --reinstall-package llama-cpp-python
El primer comando y el flag --reinstall-package importan: uv omite paquetes
que ya están instalados y cachea los wheels compilados, y ninguna de esas dos
verificaciones mira CMAKE_ARGS, así que sin ellos se reutiliza en silencio
un build CPU anterior. Sin CMAKE_ARGS, llama-cpp-python se instala igual
pero corre en CPU (no existe wheel CUDA precompilado en PyPI). Si nvcc rechaza
tu gcc por ser muy nuevo, apúntalo a uno más antiguo que tengas instalado, por
ejemplo CMAKE_ARGS="-DGGML_CUDA=on -DCMAKE_CUDA_HOST_COMPILER=/usr/bin/g++-13".
Como alternativa, pip a secas funciona dentro de cualquier entorno (venv o
conda), ya que toda la metadata vive en pyproject.toml. Ojo que esto no usa
el lockfile, así que las versiones pueden diferir levemente de las que usan el
equipo y el CI:
pip install -e . --group dev # --group requiere pip >= 25.1
pre-commit install
Si usas la vía pip, omite el prefijo uv run en los comandos siguientes.
3. Configuración del Frontend
cd DashAI/front
yarn install
Ejecutar en Desarrollo
Backend (desde la raíz del repositorio):
uv run python -m DashAI
# o
uv run dashai --no-browser --logging-level INFO
Importante: si sincronizaste con un extra, pásale el mismo extra a
uv run (por ejemplo uv run --extra cpu python -m DashAI). Un uv run sin
flags re-sincroniza el entorno al set por defecto y revierte tu build de
PyTorch al de PyPI.
Frontend (servidor de desarrollo con recarga en caliente):
cd DashAI/front
yarn start
El backend corre en http://localhost:8000 y el servidor de desarrollo del frontend en http://localhost:3000.
Linting y Formateo
Python (usando Ruff):
uv run ruff check . --fix
uv run ruff format .
Frontend (ESLint + Prettier):
cd DashAI/front
yarn lint
Hooks de Pre-commit
dashAI usa hooks de pre-commit para mantener la calidad del código:
# Ejecutar todos los hooks manualmente
uv run pre-commit run --all-files
# Ejecutar sobre archivos en staging (ocurre automáticamente en git commit)
uv run pre-commit run
Estructura del Proyecto
DashAI/
├── DashAI/
│ ├── __main__.py # Punto de entrada CLI (Typer)
│ ├── back/ # Backend FastAPI
│ │ ├── app.py # Application factory
│ │ ├── container.py # Kink DI container
│ │ ├── initial_components.py # Registro de componentes al iniciar
│ │ ├── api/ # Routers y schemas de request/response
│ │ ├── converters/ # Componentes Converter
│ │ ├── dataloaders/ # Componentes DataLoader
│ │ ├── dependencies/ # Registry, motor de base de datos, cola de jobs
│ │ ├── explainability/ # Componentes Explainer
│ │ ├── exploration/ # Componentes Explorer
│ │ ├── job/ # Implementaciones de Jobs
│ │ ├── metrics/ # Componentes Metric
│ │ ├── models/ # Componentes de modelos ML
│ │ ├── optimizers/ # Componentes optimizadores de hiperparámetros
│ │ ├── plugins/ # Sistema de carga de plugins
│ │ ├── tasks/ # Componentes Task
│ │ └── types/ # Definiciones de tipos compartidos
│ └── front/ # Frontend React
│ └── src/
│ ├── api/ # Cliente HTTP
│ ├── components/ # Componentes de UI
│ └── pages/ # Componentes de páginas
├── docs/ # Sitio de documentación (Docusaurus)
├── tests/ # Tests del backend
└── alembic/ # Migraciones de base de datos