Correr localmente
Levantar todo el stack en tu máquina.
Docker Desktop tiene que estar corriendo
Postgres y los emuladores de Firebase corren en contenedores. Antes de empezar, abrí Docker Desktop y esperá a ver Engine running en la barra de estado.
¿No lo tenés instalado? Bajalo desde
docker.com/products/docker-desktop
(o seguí la sección de tu OS en
Prerequisitos). Es la forma
recomendada en macOS, Windows y Linux con escritorio — incluye el
daemon, la CLI y docker compose en una sola instalación.
Windows: usá WSL 2
En Windows todos los comandos bash de esta página (incluido
./dev-stack/bootstrap.sh) corren adentro de WSL 2 + Ubuntu, no en
PowerShell ni en CMD. Si todavía no tenés WSL, seguí
la sección de Windows en Prerequisitos.
Una vez que tengas WSL listo:
-
Abrí una terminal de Ubuntu desde el menú Inicio (no PowerShell).
-
Asegurate de que Docker Desktop tenga habilitada la integración con tu distro: Docker Desktop → Settings → Resources → WSL integration → Ubuntu (activá el toggle y dale Apply & Restart).
-
Cloná los repos dentro del filesystem de WSL —
~/workspace/mseller/...— no dentro de/mnt/c/.... Los I/O contra el filesystem de Windows son varias veces más lentos y rompen watchers de Next.js ydotnet watch. -
Verificá que Docker funcione desde Ubuntu:
docker run --rm hello-worldSi imprime Hello from Docker!, la integración está OK.
A partir de acá, todos los comandos bash, dotnet, yarn y docker
funcionan idénticos en macOS, Linux y WSL — el resto de la página no
distingue entre ellos.
Levantar el stack
Una sola entrada: dev-stack/bootstrap.sh desde mseller-api. Levanta
Postgres y los emuladores de Firebase en Docker, corre las migraciones
y te imprime qué arrancar nativamente.
cd ~/workspace/mseller/mseller-api
./dev-stack/bootstrap.shEsto va a:
- Verificar que tengas los repos hermanos (
mseller-firebase,mseller-cloud). - Copiar
.env.example→.enven cada repo si no existe. - Levantar Postgres y los emuladores de Firebase en Docker.
- Correr migraciones y seed inicial.
Cuando termina, te imprime las URLs:
| Servicio | URL |
|---|---|
| Emulator UI | http://localhost:4000 |
| Firestore | localhost:8080 |
| Auth | localhost:9099 |
| Functions | localhost:9999 |
| Postgres | localhost:5433 |
Levantar las APIs y la UI nativamente
Las APIs .NET y el UI Next.js corren fuera de Docker — más rápido, breakpoints nativos en VS Code, menos disco. En terminales separadas:
# Terminal 1: Portal API
cd ~/workspace/mseller/mseller-api
dotnet run --project Portal.Api # http://localhost:5186
# Terminal 2: UI
cd ~/workspace/mseller/mseller-cloud
yarn dev # http://localhost:3000
yarn devapunta al emulador local de Firebase y a la API local enlocalhost:5186por defecto. Si quieres otro target, hay variantes (yarn dev:remote,yarn dev:firebase, etc.) en el README del repo.
Abre http://localhost:3000 e inicia sesión con el usuario seed
(verifica mseller-firebase/docs/EMULATORS.md para las credenciales).
Verificar que todo está arriba
cd ~/workspace/mseller/mseller-api
./dev-stack/verify-stack.shImprime el estado de cada servicio. Debe terminar con código 0.
Trabajar en un solo servicio
Aun cuando solo estés tocando una parte del stack, dejá el dev-stack
arriba — los emuladores y Postgres consumen poca CPU y muchas pruebas
(login, perfil de usuario, integraciones cross-repo) los necesitan
disponibles. Después arrancá solo el proceso nativo que te interese
(por ejemplo dotnet run --project Portal.Api o yarn dev en
mseller-cloud).
Resetear estado
Si algo se enredó:
cd ~/workspace/mseller/mseller-api/dev-stack
docker compose -f docker-compose.dev.yml down -v # borra volúmenes
./bootstrap.sh # recrea + reseedVS Code F5
Cada repo trae configuraciones de F5 listas. Abre el repo en VS Code y presiona F5 para:
- mseller-api — elegir cuál API depurar (Portal, Ingestion, Consumo).
- mseller-firebase — "Debug Functions Emulator" — adjunta el debugger de Node al emulador (puerto 9229).
- mseller-cloud — "Debug full stack (emulator mode)" — Next.js + Chrome con breakpoints en server y cliente.