Instalar dependencias
Instalar paquetes y configurar archivos .env en cada repo.
mseller-firebase y mseller-cloud traen cada uno un script
scripts/bootstrap-dev que verifica las herramientas, copia
.env.example a .env (si no existe) e instala las dependencias de
ese repo. mseller-api ya no tiene un script propio — su Postgres y
sus migraciones se levantan junto con el resto del stack desde
dev-stack/bootstrap.sh en el paso siguiente.
macOS / Linux / WSL: la primera vez que clonas el repo, el script puede no tener permiso de ejecución (
zsh: permission denied). En ese caso corréchmod +x scripts/bootstrap-dev.shuna sola vez antes de invocarlo. Solo necesitás hacerlo una vez por repo.
mseller-api
Este repo no tiene un script de bootstrap propio: Postgres, migraciones
y el emulador de Firebase se levantan todos juntos desde el dev-stack
en el paso Correr localmente. Por
ahora solo asegurate de tener el SDK de .NET 10 instalado (lo verifica
ese paso) y, si quieres adelantarte, copiá el archivo de entorno:
cd ~/workspace/mseller/mseller-api
cp -n .env.example .env # solo si todavía no existe./dev-stack/bootstrap.sh también copia el .env la primera vez que
lo corres, así que este paso es opcional.
mseller-firebase
cd ~/workspace/mseller/mseller-firebase
chmod +x scripts/bootstrap-dev.sh # solo la primera vez
./scripts/bootstrap-dev.shInstala las dependencias en functions/ y verifica que firebase-tools
y la JRE estén disponibles.
mseller-cloud
Este repo usa Yarn (no npm). Si no lo tienes:
npm install -g yarn(clásico) o seguí la guía oficial.
cd ~/workspace/mseller/mseller-cloud
chmod +x scripts/bootstrap-dev.sh # solo la primera vez
./scripts/bootstrap-dev.shCorre yarn install --frozen-lockfile y copia .env.example a .env.
Variables de entorno sensibles
Los archivos .env.example que se copian traen valores por defecto que
funcionan con el emulador local — no necesitas generar llaves para
empezar a desarrollar.
La llave de encripción que usa getUserProfileV3 para encriptar el
perfil del usuario tiene un valor público de desarrollo
(0123456789abcdef...) que coincide entre mseller-firebase y
mseller-cloud por diseño.
Para producción, los valores reales viven en:
- Firebase Secrets Manager —
MAILJET_API_KEY,MAILJET_API_SECRET,ENCRYPTION_KEY. Configurados confirebase functions:secrets:set. - GitHub Actions secrets — credenciales para desplegar (la cuenta
de servicio
github-deploy). - Azure Key Vault — secretos de la API .NET (Stripe, Datadog, etc.).
No necesitas tocar ninguno de esos para correr el stack localmente.
Solución de problemas comunes
zsh: permission denied: ./scripts/bootstrap-dev.sh
El script fue clonado sin el bit de ejecución. Dale permisos una vez:
chmod +x scripts/bootstrap-dev.shY volvé a correr ./scripts/bootstrap-dev.sh. Como alternativa puntual
podés invocarlo con bash ./scripts/bootstrap-dev.sh sin cambiar
permisos.
npm install o yarn install falla con error de versión de Node
Estás usando una versión de Node que no es la 22.x. Verifica:
node --versionSi usas nvm, corre nvm use en cada
repo (cada uno tiene su .nvmrc).
dotnet restore falla con "Project file does not exist"
Asegúrate de estar dentro del directorio mseller-api. Si el comando
intenta restaurar mseller-core-api.sln, tu clone es de antes de la
renombrada — haz git pull origin main.
firebase --version no encuentra el comando
Lo instalaste con npm install -g firebase-tools pero tu PATH no
incluye los binarios globales de npm. Corre:
npm config get prefixy añade <ese path>/bin a tu PATH.