Puesta en marcha
Requisitos
Rust 1.85+ · Node 20+ y pnpm 10 · PostgreSQL 16+
Pasos
# 1. Base de datos
createdb crm
for f in db/migrations/*.sql; do psql -v ON_ERROR_STOP=1 -d crm -f "$f"; done
# 2. Configuración
cp .env.example .env
openssl rand -base64 48 # y ponlo en JWT_SECRET
# 3. Dependencias
pnpm install
pnpm tokens:build
# 4. Arrancar
pnpm dev:api # http://localhost:8080/graphql
pnpm dev:web # http://localhost:5173
pnpm dev:mobile # Expo
El orden de las migraciones importa y los nombres lo garantizan: 0001 crea
los tipos que usan las demás. La API aplica sola las pendientes al arrancar.
Datos de demostración
cargo run -p crm-api -- seed-demo
120 clientes peruanos del sector agrícola, ~40 productos, 410 ventas, 350 tickets con bitácora completa, conversaciones, garantías, seguimientos y campañas — con tiempos coherentes para que los indicadores tengan valores realistas.
Verificación
pnpm verify # tokens + contraste + typecheck + build de web
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings