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

text
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:

bash
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

  1. Agregar el nombre de la app en APP_BRAND_ASSET_APPS dentro de src/catalog.ts.
  2. Ejecutar el generador con --app <app>.
  3. Copiar la configuracion de manifest de system y cambiar solamente los metadatos propios.
  4. Apuntar el manifest a /icons/<archivo>.
  5. 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.