Packages
packages/
Esta seccion centraliza la documentacion de cada package reutilizable y una guia general de lineamientos para mantener codigo compartido sostenible en el tiempo.
Packages del Monorepo Nidus
Este directorio contiene los paquetes compartidos que permiten construir aplicaciones consistentes, reutilizables y faciles de mantener dentro de Nidus.
1. Objetivo de packages/
- Centralizar logica, configuracion y componentes compartidos.
- Reducir duplicacion entre apps.
- Definir contratos estables (exports) para escalar sin romper integraciones.
2. Estructura actual
| Package | Rol principal |
|---|---|
@repo/01-base-package | Base tecnica para crear nuevos packages |
@repo/app-services | Servicios de aplicacion y casos de uso compartidos |
@repo/constants | Tokens y constantes globales |
@repo/eslint | Configuracion ESLint compartida |
@repo/firebase | Config comun para emuladores y runtime Firebase |
@repo/firebase-admin-adapter | Adaptador Firebase Admin para server |
@repo/firebase-client-adapter | Adaptador Firebase Client para browser |
@repo/hooks | Hooks reutilizables |
@repo/icons | Export centralizado de iconos |
@repo/prettier | Configuracion Prettier compartida |
@repo/schemas | Contratos Zod y tipos compartidos |
@repo/tsconfig | Base TypeScript para todo el monorepo |
@repo/ui | Design system y componentes UI |
3. Lineamientos de desarrollo
- Cada package debe tener API publica clara via
src/index.tsoexportsenpackage.json. - No exponer internals sin necesidad. Exportar solo contratos estables.
- Mantener cohesion: un package, un dominio tecnico.
- Todo cambio debe incluir chequeo minimo:
pnpm lint --filter <package>pnpm build --filter <package>opnpm check-types --filter <package>
- Documentar cualquier export nuevo en el README del package.
4. Buenas practicas para codigo reutilizable
- Preferir funciones puras y sin side effects ocultos.
- Modelar contratos con tipos explicitos y/o esquemas Zod.
- Evitar acoplamiento circular entre packages.
- Mantener ejemplos de uso concretos en README.
- Versionar cambios de API en PR description.
5. Como contribuir a un package existente
- Identificar el package correcto segun dominio.
- Implementar cambios manteniendo backward compatibility cuando sea posible.
- Actualizar tests o agregar cobertura minima si el package tiene Vitest.
- Actualizar el README del package con nuevos exports o reglas de uso.
- Ejecutar validaciones antes del PR.
6. Como crear un package nuevo desde 01-base-package
- Duplicar la carpeta base:
cp -r packages/01-base-package packages/nuevo-package
- Actualizar
package.json:
name:@repo/nuevo-packageexportsytypessegun tu API publica
- Implementar API inicial en
src/index.ts. - Completar
README.mddel package. - Verificar:
pnpm lint --filter @repo/nuevo-package
pnpm build --filter @repo/nuevo-package
7. Checklist rapido para nuevos packages
-
package.jsoncon nombre@repo/... -
src/index.tscon exports publicos -
tsconfig.jsonextendiendo@repo/tsconfig - scripts de lint/build/type-check
- README documentado
packages/01-base-package/README.mdPlantilla base para crear nuevos packages reutilizables dentro del monorepo.
packages/analytics/README.mdPaquete de mediciones, analytics y tracking de conversiones para el monorepo Nidus. Centraliza la integración de **Google Analytics 4 (GA4)**, **Google Tag Manager (GTM)** y **Meta (Facebook) Pixel** en un único paquete reutilizable.
packages/app-services/README.mdServicios de aplicación reutilizables que encapsulan la lógica de dominio y el acceso a datos para el monorepo Nidus.
packages/constants/README.mdConstantes globales del proyecto para mantener consistencia entre apps.
packages/eslint/README.mdConfiguraciones ESLint compartidas para mantener calidad y consistencia de codigo en todo el monorepo.
packages/firebase/README.mdConfiguracion compartida de Firebase para entorno local y utilidades comunes.
packages/firebase-admin-adapter/README.mdAdaptador server-side para Firebase Admin (Auth, Firestore y Storage).
packages/firebase-client-adapter/README.mdAdaptador client-side para Firebase en aplicaciones web.
packages/hooks/README.mdColeccion de hooks reutilizables compartidos por apps y packages UI.
packages/icons/README.mdPunto unico de export de iconografia para el monorepo.
packages/prettier/README.mdConfiguracion Prettier compartida del monorepo.
packages/schemas/README.mdContrato de validación y tipos compartidos basado en [Zod](https://zod.dev) para el monorepo Nidus.
packages/tsconfig/README.mdConfiguracion base de TypeScript para apps y packages del monorepo.
packages/ui/README.mdSistema de diseno y libreria de componentes reutilizables de Nidus.