Constants
constants/README.md
Constants
Constantes globales de la aplicación. Agrupadas en archivos por dominio de responsabilidad.
Estructura de Archivos
text
constants/
├── app.constants.ts # Rutas, roles y acceso por ruta
├── firebase.constants.ts # Nombres de colecciones Firestore
└── icon-options.constants.ts # Opciones de íconos de construcción (CONSTRUCTION_ICON_OPTIONS)
📌 app.constants.ts
REDIRECTS
Objeto as const con todas las rutas de la aplicación. Evita strings hardcodeados.
ts
REDIRECTS.LOGIN; // '/login'
REDIRECTS.CATEGORIES; // '/categories'
REDIRECTS.HOME; // '/home'
PUBLIC_ROUTES
string[] con las rutas que no requieren autenticación. Usado en el middleware y en AuthGuard.
ADMIN_ROUTES
string[] con las rutas exclusivas del rol admin.
🔥 firebase.constants.ts
COLLECTIONS
Nombres de colecciones Firestore como constante tipada. Todo acceso a Firestore en los servicios usa esta constante en lugar de strings literales.
ts
COLLECTIONS.GROUPS; // 'groups'
COLLECTIONS.CATEGORIES; // 'categories'
COLLECTIONS.SUBCATEGORIES; // 'subcategories'
COLLECTIONS.MATERIALS; // 'materials'
COLLECTIONS.USERS; // 'users'
// ...
🎨 icon-options.constants.ts
CONSTRUCTION_ICON_OPTIONS
Array<IIconOption> con 37 íconos del dominio construcción. Es la única fuente de verdad para los selectores de íconos en la UI.
Cada entry tiene la forma:
ts
{ key: 'brick-wall', label: 'Mampostería', lucideName: 'BrickWall', Icon: BrickWall }
Dónde se usa:
components/categories/dialog-create-group.tsxcomponents/categories/dialog-edit-group.tsxcomponents/categories/collapsable-category.tsxcomponents/categories/form-slot.tsxutils/categories/icon-map.ts
Grupos temáticos:
- Obra Gruesa y Materiales (BrickWall, Layers, Fence, Box, DiamondMinus)
- Terminaciones y Pintura (PaintBucket, PaintRoller, Paintbrush, SprayCan, DoorOpen)
- Instalaciones — Sanitaria, Eléctrica, Gas, Climatización
- Herramientas (Hammer, Wrench, Drill, Scissors, PocketKnife)
- Estructura y Obra (Ruler, Pickaxe, Shovel, HardHat)
- Edificios y Logística (Building2, Factory, Warehouse, Truck)
Cómo Agregar Constantes
- Para rutas nuevas: agregar a
REDIRECTSy, si aplica, aPUBLIC_ROUTESoADMIN_ROUTES. - Para colecciones Firestore nuevas: agregar a
COLLECTIONS. - Para íconos nuevos: agregar un entry a
CONSTRUCTION_ICON_OPTIONSconkeyen kebab-case,labeldescriptivo,lucideNameexacto y el componente importado.
