Packages

14 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

PackageRol principal
@repo/01-base-packageBase tecnica para crear nuevos packages
@repo/app-servicesServicios de aplicacion y casos de uso compartidos
@repo/constantsTokens y constantes globales
@repo/eslintConfiguracion ESLint compartida
@repo/firebaseConfig comun para emuladores y runtime Firebase
@repo/firebase-admin-adapterAdaptador Firebase Admin para server
@repo/firebase-client-adapterAdaptador Firebase Client para browser
@repo/hooksHooks reutilizables
@repo/iconsExport centralizado de iconos
@repo/prettierConfiguracion Prettier compartida
@repo/schemasContratos Zod y tipos compartidos
@repo/tsconfigBase TypeScript para todo el monorepo
@repo/uiDesign system y componentes UI

3. Lineamientos de desarrollo

  1. Cada package debe tener API publica clara via src/index.ts o exports en package.json.
  2. No exponer internals sin necesidad. Exportar solo contratos estables.
  3. Mantener cohesion: un package, un dominio tecnico.
  4. Todo cambio debe incluir chequeo minimo:
    • pnpm lint --filter <package>
    • pnpm build --filter <package> o pnpm check-types --filter <package>
  5. 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

  1. Identificar el package correcto segun dominio.
  2. Implementar cambios manteniendo backward compatibility cuando sea posible.
  3. Actualizar tests o agregar cobertura minima si el package tiene Vitest.
  4. Actualizar el README del package con nuevos exports o reglas de uso.
  5. Ejecutar validaciones antes del PR.

6. Como crear un package nuevo desde 01-base-package

  1. Duplicar la carpeta base:
bash
cp -r packages/01-base-package packages/nuevo-package
  1. Actualizar package.json:
  • name: @repo/nuevo-package
  • exports y types segun tu API publica
  1. Implementar API inicial en src/index.ts.
  2. Completar README.md del package.
  3. Verificar:
bash
pnpm lint --filter @repo/nuevo-package
pnpm build --filter @repo/nuevo-package

7. Checklist rapido para nuevos packages

  • package.json con nombre @repo/...
  • src/index.ts con exports publicos
  • tsconfig.json extendiendo @repo/tsconfig
  • scripts de lint/build/type-check
  • README documentado
Base Packagepackages/01-base-package/README.md

Plantilla base para crear nuevos packages reutilizables dentro del monorepo.

Analyticspackages/analytics/README.md

Paquete 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.

App Servicespackages/app-services/README.md

Servicios de aplicación reutilizables que encapsulan la lógica de dominio y el acceso a datos para el monorepo Nidus.

Constantspackages/constants/README.md

Constantes globales del proyecto para mantener consistencia entre apps.

Eslintpackages/eslint/README.md

Configuraciones ESLint compartidas para mantener calidad y consistencia de codigo en todo el monorepo.

Firebasepackages/firebase/README.md

Configuracion compartida de Firebase para entorno local y utilidades comunes.

Firebase Admin Adapterpackages/firebase-admin-adapter/README.md

Adaptador server-side para Firebase Admin (Auth, Firestore y Storage).

Firebase Client Adapterpackages/firebase-client-adapter/README.md

Adaptador client-side para Firebase en aplicaciones web.

Hookspackages/hooks/README.md

Coleccion de hooks reutilizables compartidos por apps y packages UI.

Iconspackages/icons/README.md

Punto unico de export de iconografia para el monorepo.

Prettierpackages/prettier/README.md

Configuracion Prettier compartida del monorepo.

Schemaspackages/schemas/README.md

Contrato de validación y tipos compartidos basado en [Zod](https://zod.dev) para el monorepo Nidus.

Tsconfigpackages/tsconfig/README.md

Configuracion base de TypeScript para apps y packages del monorepo.

UIpackages/ui/README.md

Sistema de diseno y libreria de componentes reutilizables de Nidus.