Arquitectura para aplicaciones móviles de marca blanca con React Native
Tenemos una aplicación móvil que escalamos como marca blanca, por lo que desarrollamos y lanzamos cada vez más aplicaciones móviles con características similares.
Nos enfrentamos al hecho de que necesitamos cada vez más esfuerzos para soportar las aplicaciones. La funcionalidad de la aplicación puede diferir ligeramente, es decir, no son idénticas.
¿Cómo se pueden “ensamblar” aplicaciones a partir de módulos para dedicar un mínimo de tiempo al soporte? Ahora tenemos un repositorio y cada proyecto tiene una rama separada. Se convierte en una pesadilla mover funciones entre sucursales (la funcionalidad es 70% similar, pero hay diferencias, por lo que no podemos simplemente aplicar nuevos colores, logotipos, imágenes y versiones).
Asesorar sobre qué enfoque de desarrollo y escalamiento adoptar. Estamos pensando en un repositorio mono.
No hay una respuesta sencilla a esta pregunta. Piense en cómo funcionan Tailwind o Nativewind , eche un vistazo a los patrones de diseño atómico y cree una capa de interfaz de usuario donde React y React-Native sean los reyes, solo componentes/pantallas.
Separe la lógica en una capa dedicada , llamémosla dominio (consulte Arquitectura limpia) . Utilice inyección de dependencia -> Llamemos a una parte de su lógica con el término caso de uso .
Ahora imagine si tiene una capa de interfaz de usuario pura que se inyecta mediante accesorios con diferentes casos de uso . De esa manera, su capa de interfaz de usuario puede permanecer fuera de la lógica de sus diferentes aplicaciones y puede cambiar globalmente sus fuentes/colores/dimensiones .
En una capa diferente, puede crear la lógica que necesita esta aplicación (el patrón de fábrica es particularmente útil en este escenario) .
Puede parecer confuso, pero no es una tarea fácil crear aplicaciones como una máquina transportadora.