Instalación
Setup local del monorepo en menos de 5 minutos.
Última actualización 20 jul 2026
Prerrequisitos
- Bun 1.3+
- Node 22+ (sólo para herramientas que aún no soportan Bun)
- PostgreSQL 15+ (local o Docker)
- Git
Clone & install
git clone <your-repo> my-saas
cd my-saas
bun installVariables de entorno
cp apps/server/.env.example apps/server/.envEditá apps/server/.env:
DATABASE_URL— connection string de PostgresBETTER_AUTH_SECRET— generá uno conopenssl rand -base64 32BETTER_AUTH_URL—http://localhost:3005en dev
Database
cd apps/server
bunx prisma migrate dev # el cliente Prisma ya se genera en `bun install` (postinstall)Run
# desde la raíz
bun run dev- Client: http://localhost:3004
- Server: http://localhost:3005
- Docs: http://localhost:3004/docs
Servicios de desarrollo (Docker)
El stack de desarrollo incluye Postgres, Redis y MailHog (trampa SMTP para tests E2E):
docker compose -f docker-compose.dev.yml up -dMailHog captura todos los emails salientes. Web UI: http://localhost:8025.
Para enrutar el servidor a través de él, configurá SMTP_HOST=localhost y SMTP_PORT=1025
en apps/server/.env.
Tests E2E (Playwright)
La suite E2E vive en tests/ (@app/e2e). Corre sobre Node (no Bun) y maneja
el stack real. Con Postgres + Redis levantados (docker compose -f docker-compose.dev.yml up -d postgres redis):
bun run e2e # corre la suite completa contra tu dev stack ya corriendo
bun run e2e:golden # solo los golden paths (bootstrap, registro, onboarding, billing, dashboard)
bun run e2e:install # instala el browser Chromium de Playwright (una vez)bun run e2e:golden es lo que gatea CI en cada PR (job e2e-golden de
.github/workflows/ci.yml): levanta server + client por su cuenta y aísla un
schema Postgres por corrida. La suite completa corre de noche
(.github/workflows/e2e-nightly.yml) contra el stack completo de compose,
que además incluye el worker BullMQ y MailHog.
Para espejar el gate localmente antes de pushear:
bash scripts/ci-local.sh --e2e # lint + typecheck + test + api-freshness + golden E2ETroubleshooting
@prisma/client did not initialize — corré bunx prisma generate desde apps/server/.
El servidor crashea con Invalid environment — el .env no existe o le faltan vars requeridas.