Skip to content

Estructura de carpetas

Kevin Parra edited this page Aug 24, 2023 · 2 revisions

Desglose Directorios

src

config

  • Objetivo: Contiene configuraciones de diferentes servicios o herramientas.
  • Archivos como firebaseConfig.ts: Deberían contener configuraciones específicas para servicios, como Firebase en este caso.

data

  • Objetivo: Gestionar todo lo relacionado con los datos (obtención, transformación, almacenamiento).
models
  • Objetivo: Definir estructuras de datos o DTOs (Data Transfer Objects).
  • Archivos como userModel.ts: Deberían contener la definición de cómo se estructura un modelo de datos (por ejemplo, cómo llega un usuario desde una API).
network
  • Objetivo: Gestión de llamadas a la red o a APIs.
  • Archivos como api.ts: Deberían contener las funciones que hacen llamadas directas a una API.
repositories
  • Objetivo: Implementaciones concretas de los repositorios definidos en domain/repositories.
  • Archivos como userDataRepository.ts: Deberían interactuar con fuentes de datos, ya sea una API, base de datos local, etc. Implementan interfaces definidas en el dominio.

domain

  • Objetivo: Representa la lógica y reglas de negocio puras.
entities
  • Objetivo: Modelar y encapsular la lógica de negocio.
  • Archivos como User.ts: Deberían contener la lógica de negocio relacionada con una entidad, en este caso, un usuario.
usecases
  • Objetivo: Representar operaciones o acciones específicas del negocio.
  • Archivos como loginUser.ts: Deberían contener la lógica para un caso de uso específico, en este caso, iniciar sesión.
services
  • Objetivo: Servicios de dominio que encapsulan lógica específica.
  • Archivos como authService.ts: Deberían contener lógica de negocio relacionada con autenticación.
repositories
  • Objetivo: Interfaces que definen las operaciones que pueden realizar los repositorios.
  • Archivos como userRepositoryInterface.ts: Deberían contener la definición de métodos que luego las implementaciones concretas en data/repositories deben cumplir.

ui

  • Objetivo: Todo lo relacionado con la interfaz de usuario y su lógica.
assets
  • Objetivo: Almacena recursos estáticos.
  • Subcarpetas como /images o /fonts: Contienen imágenes y fuentes respectivamente.
components
  • Objetivo: Componentes reutilizables de React Native.
  • Archivos como Button.tsx: Deberían ser componentes sin estado y reutilizables.
context
  • Objetivo: Proveer contextos de React para gestionar estados globales.
  • Archivos como userContext.ts: Deberían establecer y proporcionar el contexto para datos del usuario.
hooks
  • Objetivo: Funciones reutilizables que encapsulan la lógica relacionada con el estado o efectos secundarios.
  • Archivos como useUser.ts: Deberían contener lógica y estado relacionados con el usuario, utilizando React Hooks.
navigation
  • Objetivo: Definir y gestionar la navegación entre pantallas.
  • Archivos como MainNavigator.tsx: Deberían establecer la estructura de navegación de la aplicación.
screens
  • Objetivo: Representar pantallas completas dentro de la aplicación.
  • Archivos como HomeScreen.tsx: Deberían contener la estructura y lógica específica de esa pantalla.
services
  • Objetivo: Servicios relacionados con la capa de UI.
  • Archivos como uiAuthService.ts: Pueden contener lógica específica para interactuar con servicios de autenticación desde la perspectiva de la UI.
store
  • Objetivo: Gestionar el estado global de la aplicación, puede ser usando Redux, MobX, etc.
  • Archivos como userStore.ts: Deberían contener la lógica y estructura para almacenar y manipular el estado del usuario.
styles
  • Objetivo: Definir estilos y temas.
  • Archivos como globalStyles.ts o themes.ts: Deberían contener estilos globales y definiciones de temas.
utils
  • Objetivo: Funciones y herramientas utilitarias específicas de la capa de UI.
  • Archivos como formatFunctions.ts: Podrían contener funciones para formatear datos específicamente para la UI.

tests

  • Objetivo: Contener todas las pruebas unitarias y de integración.
  • Subcarpetas como /data, /domain y /ui: Deberían tener pruebas específicas para cada una de esas capas.