Skip to main content

Modulos

Como trabajar los modulos de la aplicacion

Nuevo modulo

Los modulos utilizan la siguiente estructura:

mi-modulo/

├── application/ # Contiene la lógica de aplicación que orquesta el flujo de datos
│ ├── hooks/ # Hooks personalizados para la lógica de negocio
│ │ ├── index.ts
│ │ └── useHookName.ts
│ ├── mutations/ # Mutaciones para modificar datos (usando React Query)
│ │ ├── index.ts
│ │ └── mi-modulo.mutations.ts
│ └── queries/ # Consultas para obtener datos (usando React Query)
│ ├── index.ts
│ └── mi-modulo.queries.ts

├── domain/ # Es el núcleo de la aplicación
│ ├── model/
│ │ ├── index.ts
│ │ └── mi-modulo.model.ts # Tipos y entidades
│ └── repository/
│ ├── index.ts
│ └── mi-modulo.repository.ts # Interfaces que establecen contratos para la capa de infraestructura

├── infrastructure/ # Implementa las interfaces definidas en el dominio
│ ├── index.ts
│ ├── mi-modulo.service.ts # Implementaciones concretas de los repositorios
│ └── mi-modulo-local.storage.ts # Manejo de almacenamiento local

└── ui/
├── components/ # Componentes específicos del módulo
└── screens/ # Pantallas o vistas completas

Domain (Dominio)

Es el núcleo de la aplicación que contiene:

  • Modelos de negocio (interfaces, tipos y entidades)
  • Reglas de negocio
  • Interfaces de repositorios (Esta capa es independiente de cualquier framework o tecnología externa)
  • Transformación de datos entre capas (Adapters)

Application (Aplicación)

Contiene la lógica de aplicación que orquesta el flujo de datos:

  • Casos de uso
  • Hooks personalizados
  • Queries y mutations

Infrastructure (Infraestructura)

Implementa las interfaces definidas en el dominio:

  • Servicios externos (Firebase, Stripe, Apify, APIs)
  • Almacenamiento local
  • Implementaciones concretas de repositorios
  • Configuraciones de servicios

UI (Interfaz de Usuario)

Maneja la presentación y la interacción con el usuario:

  • Componentes propios del modulo
  • Pantallas
  • Gestión del estado local de UI

Estructura de proyecto

mi-aplicacion/

├── android/
├── ios/
├── index.js
├── App.tsx
└── src/
├── components/ # Contiene todos los componentes reutilizables en la aplicacion
│ ├── core/
│ ├── form/
│ └── layout/

├── config/ # Mutaciones para modificar datos (usando React Query)
│ ├── i18n/
│ └── storage.ts

├── containers/ # Contenedores o wrappers de la aplicacion usualmente se inyectan en App.tsx
│ ├── index.ts
│ ├── SecureContainer.tsx
│ └── AppContainer.tsx

├── modules/ # Modulos de la aplicacion
│ ├── authentication/
│ ├── navigation/
│ └── user/

└── theme/ # Estilos globales para toda la aplicacion
├── index.ts # Colores, fuentes, tamaños y utilidades para manejar el responsive
└── components/ # Contiene los estilos para los componentes tanto core, form y layout