DEV Community

Steven Andre
Steven Andre

Posted on

arquitectura?

🧠 El enfoque: Feature-First

En lugar de organizar el proyecto por tipo de archivo (models, services, screens), se organiza por funcionalidades.

Ejemplo:

features/
   videos/
Enter fullscreen mode Exit fullscreen mode

Esto significa que todo lo relacionado con videos vive en un solo lugar. Resultado:
✔ Más orden
✔ Más escalabilidad
✔ Menos caos cuando el proyecto crece


📦 Núcleo del sistema: core/

El directorio core funciona como el “centro de operaciones” compartido.

Aquí colocas:

  • Temas (themes)
  • Colores
  • Utilidades globales
  • Configuraciones

Regla clave:

Si lo usas en más de un feature, va en core.


🎯 Feature: videos/

Aquí está lo interesante. Cada feature se divide en capas claras:


🔹 data/ → Capa de datos

Responsable de:

  • Obtener datos (API, local storage)
  • Modelos (ej: VideoPost)
  • Transformación de datos

No sabe nada de la interfaz.


🔹 logic/ → Lógica de negocio

Aquí viven:

  • Reglas
  • Procesamiento de datos
  • Validaciones

Es el cerebro, sin depender de la UI.


🔹 UI/ → Interfaz

Dividida en:

pages/

Pantallas completas (ej: feed principal)

widgets/

Componentes reutilizables (botones, reproductor de video)

providers/

Gestión de estado

Ejemplo:

class VideosProvider extends ChangeNotifier {
  bool initialLoading = true;
  List<VideoPost> videos = [];

  Future<void> loadNextPage() async {
    // lógica de carga
    notifyListeners();
  }
}
Enter fullscreen mode Exit fullscreen mode

Este provider:

  • Guarda el estado
  • Controla la lógica de UI
  • Notifica cambios

🔁 Flujo de la aplicación

Así se conecta todo:

  1. La UI solicita datos
  2. El Provider ejecuta lógica
  3. Se consultan datos en data/
  4. Se actualiza el estado
  5. La UI se reconstruye automáticamente

⚠️ Puntos de mejora

Si quieres llevar esto a nivel profesional:

1. Modelos bien definidos

Ubícalos claramente en data/models/


2. No sobrecargar el Provider

Divide responsabilidades:

  • Provider → estado
  • Servicios → lógica

3. Fortalecer logic/

No lo dejes vacío. Ahí va el verdadero valor del sistema.


4. Considerar herramientas más avanzadas

Para proyectos grandes:

  • Riverpod (mejor control de estado)
  • Inyección de dependencias

🚀 Conclusión

Esta arquitectura ya es una base sólida. No es improvisada, es escalable y está alineada con prácticas modernas.

Pero hay una diferencia clave:

Tener estructura no es lo mismo que tener arquitectura sólida.

El siguiente paso es pulir la separación de responsabilidades y pensar como arquitecto, no solo como desarrollador.


Si construyes sobre esta base correctamente, no solo tendrás una app funcional… tendrás un sistema listo para crecer sin romperse.

Top comments (1)

Collapse
 
andrearines profile image
Steven Andre

los puntos de mejora esta apropósito