# Plataforma BALAM XVII

App web interna para el equipo operativo de BALAM XVII. Monorepo con
backend Express + Prisma y frontend React + Vite.

## Requisitos

- Node ≥ 20 (probado con 21.7.3)
- pnpm 9 (`npm install -g pnpm@9`)
- MySQL local con la base `balam_2026` ya importada (ver `../balam_db/`)

## Setup local

```bash
pnpm install
cp .env.example backend/.env  # completar valores
pnpm db:pull                  # introspectar esquema existente
pnpm db:migrate               # crear tabla users
pnpm --filter backend exec tsx scripts/create_user.ts <username> "<nombre>" "<password>"
pnpm dev                      # backend :4000, frontend :5175
```

## Scripts del workspace

- `pnpm dev` — corre backend y frontend en paralelo
- `pnpm build` — build de producción
- `pnpm db:pull` — refresca `prisma/schema.prisma` desde la BD
- `pnpm db:migrate` — aplica migraciones nuevas
- `pnpm db:studio` — Prisma Studio (UI para inspeccionar la BD)

## Stack

Backend: Express + TypeScript + Prisma + JWT en cookie HTTP-only.
Frontend: React + Vite + TypeScript + TailwindCSS + shadcn/ui.
BD: MySQL `balam_2026` (esquema gestionado por `../balam_db/`).
Deploy: DigitalOcean.

Más contexto en [CLAUDE.md](CLAUDE.md).
