Must To Do
Documentation for Public
Notas inciales
- dijimos que no vamos a usar microservicios por lo pronto.
- todo será multi-tenant con diferentes bases de datos
- usaremos mongodb
Chance debemos hacer un proyecto nuevo donde ir acoplando cosas nuevas ? (segun modulos que vamos haciendo)
Must To Do
Aquí vamos poniendo todo lo que vamos a hacer para el MVP.
Módulos
Utilerias [libreria].- Utilerias generales
Prioridad: Muy alta
Contenido:
- DateUtils
- StringUtils
- Array/ObjectUtils
- ValidationUtils
- FileUtils (upload, download, etc.)
- CurrencyNumbers/Formateo ?
Dependencias:
I18n [libreria].- Internacionalizacion
Prioridad: Muy alta
Contenido:
- Core services: Translation services con angular, LocaleManagement
- Hay que integrar con nxgs
- Utilerias?:
Dependencias:
- LogSystem, EventSystem
Core app: servicios, utilidades y demás de la app
Prioridad: Alta
Contenido:
- MenuService
- StartupService
- ConfigService
- Router Service
- ThemeService ?
- Componentes base ?, como el shell en gograb
Dependencias:
- ui framework, logSystem, EventSystem, Seguridad
Notas: Este creo que si seria bueno dejarlo como libreria aparte, porque habrá muchas apps que lo usaran
Log system. Log del sistema con diferentes destinos.
Prioridad: Muy Alta
Contenido:
- Modelos: enums, LoggerConfig, logEntry, log-apppender, formatter
- Servicios: loggerService
- Utileria: Formatters (json, text ?)
- Decorators: loggable, logError, performance
- Integraciones con otros paquetes ? (eventos, nxgs )
- Appenders/Destinos: console, remote?, storage local (no creo)
EventBus/EventSystem [libreria].- Control de eventos del sistema para desacoplar más los modulos
Prioridad: Muy alta
Contenido:
- Modelos e interfaces: DomainEvent/SystemEvent (como clase abstracta)
- Core services: EventBusService / SystemEventServce - EventBusNgxsService ?
- Utilerias ?, log
Dependencias:
- LogSystem
Log system. Log del sistema con diferentes destinos.
Prioridad: Muy Alta
Contenido:
- Modelos: enums, LoggerConfig, logEntry, log-apppender, formatter
- Servicios: loggerService
- Utileria: Formatters (json, text ?)
- Decorators: loggable, logError, performance
- Integraciones con otros paquetes ? (eventos, nxgs )
- Appenders/Destinos: console, remote?, storage local (no creo)
Autenticación y autorización [Libreria].- Control de sesiones y permisos - RBAC (Role based Access Control)
Prioridad: Alta
Contenido:
- Modelos e interfaces: defirlas bien (depende todo lo que se ocupe en modulos extras)
- Core Services: AuthService, TokenService, PermissionService, SecurityService (extras)
- Guards y Resolvers: AuthGuard, RoleGuard, PermissionGuard, AuthResolver
- Interceptors: AuthInterceptor, ErrorInterceptor (para 401 y 403 con refresh)
- Loading Interceptor: se ocupa estado de carga para operaciones con authenticacion ?
- Utilidades: Crypto ?, Valdaciones ?, storageUtils ? (dependeria de otro modulo de validations y storage ?)
- Componentes?: login, logout, forgotPassword, changePassword, userProfile ? (chance debe ser otra libreria ?)
- Directivas: acl (para clases automaticas segun permisos o roles)
Dependencias:
- EventSystem
- Ux Framework
- validations?
- storage ?
Notas: Este es importante, debe estar bien hecho.
DataAccess. Acceso a datos (repositorios, ngxs y eventos datos)
Prioridad: Alta
Contenido:
- Data access: repositories, apiServices, cacheService ?
- State management: states, selectors, actions
- event comm: dataEvents, Cache invalidation, sync
- Domain Facades, queries, result mappers (transformers)
Dependencias
- SystemLog, SystemEvents, MockService, (Deberia integrarse con seguridad)
Action Registry (+CommandPattern): acciones de modulos y generales
Prioridad: Alta
Contenido::
- Core: registry, handler, context, result
- common actions: navigation, ui, form, data
- contracts: module-cotractas (los que exponen los modulos) dependencias:
- Seguridad, SystemLog, EventSystem
Notas:
- debemos pensar bien en la introspeccion de los modulos, para tratar de desacoplar lo mas que podamos.
Estructura base de modulos (Modulo generico): definicion de estructura contratos, y api de modulos.
Prioridad: Muy Alta
Contenido::
- Contratos: contract, events, permissions, types
- actions: public actions.
- state: actions, state y stateService.
- components: - cada modulo tiene sus cosas dentro
- services: - por cada modulo. index.ts -> para exponer todo lo que hace y lo que ocupa, por si hay dependencias.
dependencias:
- Seguridad, SystemLog, EventSystem
Notas:
- debemos pensar bien en la introspeccion de los modulos, para tratar de desacoplar lo mas que podamos.
Module integrator: Orquestador de modulos, para centralizar todo
Prioridad: Muy Alta
Contenido::
- core: integratorService (orquestador), registryService, dependencySolver, lifeCicle manager.
- bootstrap: bootstrapper, dependencyInjector (chance usamos nomas lo de angular), config Merger (porque diferentes modulos pueden tener config)
- validation: validationes de contracts, dependencies, healthCheck (???)
- orchestration: workflow ? transactions y coordinador de eventos (estos los sugirio la ia, pero no estoy tan seguro. Chance todo desde el orquestador).
- monitoreo: para performance y estadisticas.
Notas: Este es bien importante junto con los modulos basicos
dependencias:
- Seguridad, SystemLog, EventSystem
Notas:
- debemos pensar bien en la introspeccion de los modulos, para tratar de desacoplar lo mas que podamos.
UI Framework .- UI/Design System (este te toca a ti definir mejor que va a ser y como)
Prioridad: Muy Alta
Contenido:
- Componentes base: Buttons, Cards, Forms, Modals, Dialogs, ToolTips.
- Layout Componentes: Header, Sidebar, Footer, grid ?, navBar etc.
- Design TOkens: Colores, estilos tipografia.
- Theme System: Sistema de temas
- Iconografia: Registro de iconos, etc.
- Directivas comuines: ClickOutside, autofocus, etc.
- Advanced Components: Navbar, menu, hero, etc.
Dependencias:
- creo que este debe ser independiente (100%), si acaso eventos y log
Ux Test (UI Personalization?) [application] .- este es el proyecto que tienes para configurar componentes
Prioridad: Alta
Contenido:
- Libreria de componentes
- Editor de estilos
- Editor de temas
- que mas ?
Dependencias:
- Este si usará mocks para guardar ?, debemos definir como se guardara la informacion de los estilos y temas (contratos)
- para los contratos si quires me pasas los json que generas y de ahi sacamos como se guarda la info.
Editor web [application] .- Editor de de componentes web por medio de widgets
- actions
- datasource ?
- Widgets
- basicos: tenemos que definir exactamente cuales vamos a hacer
- avanzados: ...
- formularios: ....
- Vista previa (un modulo aparte ?):
Dependencias:
- Seguridad, ui framework, utils, Module integrator, dataAccess, Action Registry, EventSystem, LogSystem
Media Asset Management (para imágenes y videos)
Prioridad: Alta
Contenido:
- componentes: media-browser, upload-zone, uploader, asset preview ?
- services: assetService, uploadService
- state : ngxs utility
- pipes:imageSrc, Secure (por si las moscas, chance sea igual al imageSrc),
- directives: drag-n-drop?, lazy-image ?
- contracts: como models, eventos, y tipos
- providers: por si se ocupan imagenes de diferentes lados (no estoy seguro)
Dependencias:
- Seguridad, EventSystem, Logs, utils, ux framework
Spacemap.- @pako Ayudame a describir este con las cosas que debe tener como los anteriores
Prioridad: Baja
Dependencias:
- un chigno, va a ser casi de lo ultimo
Singularity.- @pako Ayudame a describir este con las cosas que debe tener como los anteriores
Dependencias:
- un chingo, va a ser casi de lo ultimo
GoGrab Admin Console.- administracion de espacios y usuarios
Prioridad: Media
Contenido:
- Dashboard para multiples spaces.
- Asignacion de recursos, configuracion, monitoreo global, etc.
- Parte de Facturacion y Suscripciones (Billing y Suscriptions ) - esto al final
- Adminsitracion de usuarios de spaces, este es importante
- Analiticas y recomendaciones, reportes,graficas etc, otro dashboard - al final
Dependencias:
- Seguridad, EventSystem, Logs, Utils, ux framework,
- un chingo, va a ser casi de lo ultimo (aunque no tanto)
------------------ Esto depende de lo que vayas a presentar
Notas: Y segun yo tendriamos que hacer otra app, para la creacion de nuevos espacios.