Imported from holk26/mugs (
AGENTS.md). Install upstream withnpx skills add holk26/mugs. Copyright stays with the author.
Mugs — Recuerdo Momentos
Tienda de mugs personalizados con dibujos de niños. Monorepo pnpm:
apps/django— API Django 6 + DRF (pedidos, Stripe, Printful, Celery)apps/web— Storefront Astro 6 SSR (@mugs/web)apps/dashboard— Admin SPA React 19 + Vite (@mugs/dashboard)
Comandos
# Tests backend (obligatorio que pasen antes de commit)
cd apps/django && python -m pytest
# Tests y builds frontend
pnpm --filter @mugs/dashboard test
pnpm --filter @mugs/web build
pnpm --filter @mugs/dashboard build
Despliegue (Dokploy)
El despliegue es automático: cada push a master dispara un deploy vía webhook
de GitHub en Dokploy.
- Proyecto:
Diego(projectIdXRd4XCjv6DiGkghHEqk95), environmentproduction - Servicio compose:
Mugs— appNamediego-mugs-fjvxly-im4pvb, composeIdiZfg5xridS83hqKLK2q02 - Compose file:
./docker-compose.yml(ramamaster, repoholk26/mugs) - Dominios:
mugs.app.moonsbow.com(web),backshop.app.moonsbow.com(django),dashboar-back.app.moonsbow.com(dashboard)
Configuración de MCPs necesaria
Para operar el despliegue y las integraciones sin exponer secretos en el repo, configura los MCPs en el entorno del agente (no en archivos del proyecto):
- Dokploy MCP: requiere un token de API de Dokploy con acceso a la organización.
Proyecto
Diego(XRd4XCjv6DiGkghHEqk95), environmentproduction(Qj9Wstik9VTgOTMsMJEuO), composeMugs(iZfg5xridS83hqKLK2q02), appNamediego-mugs-fjvxly-im4pvb. - Printful MCP: requiere el token de la cuenta de Printful vinculada a la tienda
Homero's Store (
storeId: 18364589).
Regla: validar el deploy tras cada push a master
Después de subir cambios a master, el agente DEBE verificar que el despliegue
quedó bien usando el MCP de Dokploy, en este orden:
- Estado del deployment —
compose-one(composeIdiZfg5xridS83hqKLK2q02): el deployment más reciente debe tenerstatus: "done"ycomposeStatus: "done". Si eserror, leer los logs de los servicios (compose-loadServicespara obtener loscontainerIdy luegocompose-readLogs), diagnosticar, corregir y redeployar (compose-redeploy) hasta que quede verde. No dar la tarea por terminada con un deploy en error. - Healthchecks HTTP (con FetchURL o similar):
https://backshop.app.moonsbow.com/api/v1/health/→{"status": "ok"}https://mugs.app.moonsbow.com/→ 200 con el HTML de la homehttps://dashboar-back.app.moonsbow.com/→ 200
- Smoke funcional según el cambio — si el cambio toca un flujo concreto (checkout, login admin, webhooks), verificar ese flujo en producción.
Variables de entorno requeridas en Dokploy
docker-compose.yml falla rápido si falta alguna de estas (sintaxis ${VAR:?}),
así que deben estar definidas con valores reales en el env del servicio en Dokploy:
DJANGO_SECRET_KEY,POSTGRES_PASSWORDAWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY(deben coincidir con el root de MinIO existente)PRINTFUL_API_TOKEN,PRINTFUL_WEBHOOK_SECRETSTRIPE_SECRET_KEY,STRIPE_WEBHOOK_SECRET
POSTGRES_PASSWORD debe coincidir con la contraseña con la que se inicializó el
volumen de Postgres existente (cambiarla en el env NO cambia la contraseña real
de una base ya creada). Lista completa y defaults en .env.example (raíz).
Convenciones
- Commits en español, formato
tipo(alcance): descripción(ej.fix(api): ...). - No commitear
.envni secretos;.env.exampledocumenta las variables. - El código legacy de Storecraft (
apps/core,packages/*JS) fue eliminado; la integración Printful vigente vive enapps/django/apps/printful/.