Brand Assets
packages/brand-assets/README.md
@repo/brand-assets
Fuente unica y versionada para los assets de identidad de Nidus.
Objetivo
Este package separa el origen visual de la marca de los formatos que necesitan las aplicaciones.
Los SVG dentro de src/sources/ son la fuente de verdad. Los PNG dentro de generated/ son artefactos
generados y no deben editarse manualmente.
Actualmente la primera marca es nidus y la primera aplicacion migrada es system.
Estructura
src/sources/nidus/
app-icon.svg Icono normal
app-icon-maskable.svg Icono con safe zone para PWA/Android
favicon.svg Favicon
generated/web/system/
icon-192.png
icon-512.png
icon-maskable-192.png
icon-maskable-512.png
apple-icon-180.png
favicon-32.png
Los assets se generan con Sharp desde SVG. La salida se mantiene por aplicacion para que cada app pueda desplegarse de forma independiente sin depender de otra app, Firebase Storage o una API en runtime.
Comandos
Desde la raiz del monorepo:
pnpm --filter @repo/brand-assets generate --app system
pnpm --filter @repo/brand-assets check-types
El build de system ejecuta la generacion antes de next build mediante su script prebuild.
Agregar una app
- Agregar el nombre de la app en
APP_BRAND_ASSET_APPSdentro desrc/catalog.ts. - Ejecutar el generador con
--app <app>. - Copiar la configuracion de manifest de
systemy cambiar solamente los metadatos propios. - Apuntar el manifest a
/icons/<archivo>. - Documentar la nueva app en este README.
No se deben crear APIs /api/pwa-icon/*. Los iconos de instalacion son assets estaticos.
Agregar una marca o variante
Crear un nuevo directorio bajo src/sources/, mantener los mismos nombres de archivo y agregar la marca al
catalogo. Las variantes por tenant o usuario no pertenecen a este package: deben resolverse como contenido
dinamico y no como iconos de instalacion.
app-icon-maskable.svg puede comenzar siendo igual al icono normal, pero debe reemplazarse por un diseño con
safe zone antes de publicar una identidad final para Android adaptive icons.
Capacitor
La salida web se consume desde public/icons. La futura integracion Capacitor debe consumir los mismos SVG
fuente y generar sus recursos nativos dentro de su propio proyecto Android/iOS. No debe usar URLs web ni
ImageResponse como origen de iconos nativos.