Objetivo: Poner en marcha los 2 proyectos frontend de Nebula ERP con roles claros y actividades definidas.
Acuerdo de reunion 9 de Marzo 2026:
nebula-erp)nebula-ui-kit)IMPORTANTE: Esta es una PoC (Prueba de Concepto). Las asignaciones de Jonathan y Edward son temporales para esta fase. Una vez la PoC sea aprobada por gerencia, los roles y asignaciones pueden cambiar segun las necesidades del proyecto.
| Proyecto | Clonar | Responsable |
|---|---|---|
| Component Library | git clone https://gitlab.centricasoluciones.com/nebula/frontend/nebula-ui-kit.git |
Jonathan |
| ERP Monorepo | git clone https://gitlab.centricasoluciones.com/nebula/frontend/nebula-erp.git |
Edward |
nebula-ui-kitConstruir la Component Library basada en el manual UX/UI entregado por el equipo de diseno.
Publicar como@nebula/ui-kiten Nexus para quenebula-erplo consuma.
| # | Actividad | Detalle | Estado |
|---|---|---|---|
| J01 | Clonar repo y configurar proyecto Angular 21 | ng new nebula-ui-kit --no-standalone-api, configurar ng-packagr |
⬜ |
| J02 | Configurar estructura de carpetas | src/lib/ con carpeta por componente, src/styles/ para tema base |
⬜ |
| J03 | Configurar estilos base del manual UX/UI | _variables.scss (colores, tipografia, espaciados), _mixins.scss, _theme.scss |
⬜ |
| J04 | Configurar Storybook | Para documentar y visualizar cada componente de forma aislada | ⬜ |
| J05 | Configurar public-api.ts |
Barrel exports para todos los componentes | ⬜ |
| J06 | Configurar ESLint + Prettier | Reglas alineadas con las del equipo | ⬜ |
| # | Componente | Descripcion | Inputs/Outputs clave | Estado |
|---|---|---|---|---|
| J07 | Button | Botones primario, secundario, outline, icon-button, loading state | [variant], [loading], [disabled], (clicked) |
⬜ |
| J08 | Input | Text input con label, placeholder, validacion visual, error message | [label], [type], [errorMsg], [(ngModel)] |
⬜ |
| J09 | Select / Dropdown | Select con busqueda, single/multi select, clear | [options], [searchable], [multiple], (selectionChange) |
⬜ |
| J10 | Textarea | Area de texto con contador de caracteres, resize | [maxLength], [rows], [(ngModel)] |
⬜ |
| J11 | Checkbox | Checkbox individual y grupo, indeterminate state | [checked], [indeterminate], (change) |
⬜ |
| J12 | Radio | Radio button group | [options], [name], (selectionChange) |
⬜ |
| J13 | DatePicker | Selector de fecha con calendario, rango de fechas | [minDate], [maxDate], [range], (dateChange) |
⬜ |
| # | Componente | Descripcion | Inputs/Outputs clave | Estado |
|---|---|---|---|---|
| J14 | DataTable | Tabla con paginacion, filtros por columna, sort, seleccion de filas, acciones | [data], [columns], [paginator], (rowClick), (sort), (filter) |
⬜ |
| J15 | Modal / Dialog | Dialogo modal con header, body, footer, backdrop, close on escape | [title], [closable], (onClose), (onConfirm) |
⬜ |
| J16 | Confirm Dialog | Modal de confirmacion con mensaje y acciones Si/No | [message], [confirmText], (confirmed), (cancelled) |
⬜ |
| J17 | Toast / Notification | Notificaciones tipo toast (success, error, warning, info) con auto-dismiss | [type], [message], [duration] |
⬜ |
| J18 | Sidebar Menu | Menu lateral colapsable con items, sub-items, iconos, active state | [menuItems], [collapsed], (itemClick) |
⬜ |
| J19 | Toolbar / Navbar | Barra superior con logo, titulo, user menu, notificaciones | [title], [user], (logout), (menuToggle) |
⬜ |
| J20 | Breadcrumb | Navegacion breadcrumb dinamica basada en ruta | [items], (navigate) |
⬜ |
| J21 | File Upload | Carga de archivos con drag&drop, preview, progress bar | [accept], [maxSize], [multiple], (filesSelected) |
⬜ |
| J22 | Empty State | Estado vacio con icono, mensaje y accion | [icon], [message], [actionText], (action) |
⬜ |
| # | Componente | Descripcion | Estado |
|---|---|---|---|
| J23 | Page Layout | Layout principal: sidebar + content area + toolbar | ⬜ |
| J24 | Form Layout | Layout para formularios: secciones, columnas, responsive | ⬜ |
| J25 | Tab Layout | Tabs con lazy loading de contenido | ⬜ |
| J26 | Card | Contenedor tipo card con header, body, footer, acciones | ⬜ |
| # | Actividad | Detalle | Estado |
|---|---|---|---|
| J27 | Build de libreria | ng-packagr → genera paquete npm |
⬜ |
| J28 | Publicar @nebula/ui-kit v1.0 en Nexus |
npm publish al registry de Nexus |
⬜ |
| J29 | Documentar README | Instalacion, uso, lista de componentes, ejemplos | ⬜ |
| J30 | Storybook completo | Todos los componentes documentados con stories | ⬜ |
Total: 30 actividades
nebula-erpConstruir el core del Nx Monorepo: app shell, shared libraries, routing, autenticacion, interceptores.
Consumir@nebula/ui-kitcomo dependencia npm.
| # | Actividad | Detalle | Estado |
|---|---|---|---|
| E01 | Crear workspace Nx | npx create-nx-workspace@latest nebula-erp --preset=angular-monorepo |
⬜ |
| E02 | Configurar app shell | apps/nebula-shell/ con app.component.ts, app.config.ts, app.routes.ts |
⬜ |
| E03 | Configurar app E2E | apps/nebula-e2e/ con Playwright |
⬜ |
| E04 | Configurar nx.json |
Tags, cache, affected settings | ⬜ |
| E05 | Configurar tsconfig.base.json |
Path aliases para @nebula/* |
⬜ |
| E06 | Configurar ESLint boundaries | Reglas de scope + type para impedir imports cruzados entre dominios | ⬜ |
| # | Actividad | Libreria Nx | Detalle | Estado |
|---|---|---|---|---|
| E07 | shared/domain | @nebula/shared/domain |
BaseDto, PaginationModel, ApiResponse, AuditFields |
⬜ |
| E08 | shared/data-access | @nebula/shared/data-access |
AuthService, AuthGuard, TokenInterceptor, ApiService, ErrorInterceptor, TenantContextService |
⬜ |
| E09 | shared/util | @nebula/shared/util |
Pipes: CurrencyPipe, DateFormatPipe, NitFormatPipe. Validators: NitValidator, NumericRangeValidator. Helpers: DateHelper, NumberHelper. Constants: ApiEndpoints |
⬜ |
| E10 | shared/masters | @nebula/shared/masters |
Services: PaisesService, CiudadesService, TiposDocumentoService. UI: PaisSelector, CiudadSelector |
⬜ |
@nebula/ui-kit| # | Actividad | Detalle | Estado |
|---|---|---|---|
| E11 | Instalar @nebula/ui-kit |
npm install @nebula/ui-kit desde Nexus |
⬜ |
| E12 | Validar imports | Verificar que import { DataTableComponent } from '@nebula/ui-kit' funciona en features |
⬜ |
| E13 | Configurar tema | Conectar variables SCSS de @nebula/ui-kit con el tema del shell |
⬜ |
| # | Actividad | Detalle | Estado |
|---|---|---|---|
| E14 | Routing base | Lazy-loaded routes por dominio en app.routes.ts |
⬜ |
| E15 | Login page | Pantalla de login con AuthService |
⬜ |
| E16 | Guards | AuthGuard, RoleGuard para proteger rutas |
⬜ |
| E17 | Interceptores | TokenInterceptor (JWT), ErrorInterceptor (manejo global de errores HTTP) |
⬜ |
| E18 | Tenant context | TenantContextService para inyectar tenant en headers |
⬜ |
| # | Actividad | Libreria Nx | Detalle | Estado |
|---|---|---|---|---|
| E19 | accounting/domain | @nebula/accounting/domain |
Modelos: CuentaContable, AsientoContable, CentroCostos |
⬜ |
| E20 | accounting/data-access | @nebula/accounting/data-access |
Services HTTP + Signal Store | ⬜ |
| E21 | accounting/feature-plan-cuentas | @nebula/accounting/feature-plan-cuentas |
CRUD completo: list, new, edit, tree view | ⬜ |
| E22 | accounting/shell | @nebula/accounting/shell |
Routing del dominio, lazy-load features | ⬜ |
| E23 | accounting/api | @nebula/accounting/api |
Facade publica para otros dominios | ⬜ |
| # | Actividad | Detalle | Estado |
|---|---|---|---|
| E24 | Pipeline Jenkins | Build, lint, test con nx affected |
⬜ |
| E25 | SonarQube | Integracion con sonar para metricas de calidad | ⬜ |
| E26 | Documentar patrones | Guia "Como crear un modulo frontend Nebula" paso a paso | ⬜ |
Total: 26 actividades
Andrea continua en su curso de Angular/TypeScript. No participa activamente en la PoC.
Se incorporara al proyecto (nebula-erp) una vez finalice su formacion y reciba instrucciones.
| # | Actividad | Estado |
|---|---|---|
| A01 | Completar curso Angular/TypeScript | 🔄 En curso |
| A02 | Esperar instrucciones post-PoC | ⬜ Pendiente |
Jonathan (nebula-ui-kit) Edward (nebula-erp)
│ │
│ J01-J06: Setup proyecto │ E01-E06: Setup Nx
│ J07-J13: Componentes base │ E07-E10: Shared libs
│ J14-J22: Componentes compuestos │ E11-E13: Integrar ui-kit
│ J23-J26: Layouts │ E14-E18: Auth + Routing
│ J27-J28: Publicar v1.0 ──────────▶ │ E19-E23: Primer dominio
│ J29-J30: Docs + Storybook │ E24-E26: CI/CD + Docs
│ │
└──── PoC APROBADA ──────────────────▶ Se redefinen roles y asignaciones
Andrea se incorpora al proyecto
nebula-ui-kit durante la PoCnpm publish| Documento | Donde encontrarlo |
|---|---|
| Arquitectura Frontend Nebula | Ver en wiki |
| Patron Arquitectura Frontend | Ver en wiki |
| Reglas de Desarrollo | Ver en wiki |
| Roles y Responsabilidades | Ver en wiki |
| Guia Crear Modulo Frontend | Ver en wiki |
Ultima actualizacion: 2026-03-09