<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Steven Andre </title>
    <description>The latest articles on DEV Community by Steven Andre  (@andrearines).</description>
    <link>https://dev.to/andrearines</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3853853%2F7e5d473b-5ce7-4e79-ab55-59507a1543ee.jpeg</url>
      <title>DEV Community: Steven Andre </title>
      <link>https://dev.to/andrearines</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/andrearines"/>
    <language>en</language>
    <item>
      <title>arquitectura?</title>
      <dc:creator>Steven Andre </dc:creator>
      <pubDate>Sun, 05 Apr 2026 22:22:40 +0000</pubDate>
      <link>https://dev.to/andrearines/arquitectura-4c7a</link>
      <guid>https://dev.to/andrearines/arquitectura-4c7a</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubj03lpecg6cydltsyye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubj03lpecg6cydltsyye.png" alt=" " width="682" height="685"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 El enfoque: Feature-First
&lt;/h2&gt;

&lt;p&gt;En lugar de organizar el proyecto por tipo de archivo (models, services, screens), se organiza por &lt;strong&gt;funcionalidades&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;features/
   videos/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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


&lt;h2&gt;
  
  
  📦 Núcleo del sistema: &lt;code&gt;core/&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;El directorio &lt;code&gt;core&lt;/code&gt; funciona como el “centro de operaciones” compartido.&lt;/p&gt;

&lt;p&gt;Aquí colocas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Temas (&lt;code&gt;themes&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Colores&lt;/li&gt;
&lt;li&gt;Utilidades globales&lt;/li&gt;
&lt;li&gt;Configuraciones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Regla clave:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Si lo usas en más de un feature, va en &lt;code&gt;core&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  🎯 Feature: &lt;code&gt;videos/&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Aquí está lo interesante. Cada feature se divide en capas claras:&lt;/p&gt;


&lt;h3&gt;
  
  
  🔹 &lt;code&gt;data/&lt;/code&gt; → Capa de datos
&lt;/h3&gt;

&lt;p&gt;Responsable de:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obtener datos (API, local storage)&lt;/li&gt;
&lt;li&gt;Modelos (ej: &lt;code&gt;VideoPost&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Transformación de datos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No sabe nada de la interfaz.&lt;/p&gt;


&lt;h3&gt;
  
  
  🔹 &lt;code&gt;logic/&lt;/code&gt; → Lógica de negocio
&lt;/h3&gt;

&lt;p&gt;Aquí viven:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reglas&lt;/li&gt;
&lt;li&gt;Procesamiento de datos&lt;/li&gt;
&lt;li&gt;Validaciones&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Es el cerebro, sin depender de la UI.&lt;/p&gt;


&lt;h3&gt;
  
  
  🔹 &lt;code&gt;UI/&lt;/code&gt; → Interfaz
&lt;/h3&gt;

&lt;p&gt;Dividida en:&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;code&gt;pages/&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Pantallas completas (ej: feed principal)&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;code&gt;widgets/&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Componentes reutilizables (botones, reproductor de video)&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;code&gt;providers/&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;Gestión de estado&lt;/p&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;VideosProvider&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;ChangeNotifier&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;bool&lt;/span&gt; &lt;span class="n"&gt;initialLoading&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;VideoPost&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;videos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

  &lt;span class="n"&gt;Future&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;loadNextPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kd"&gt;async&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// lógica de carga&lt;/span&gt;
    &lt;span class="n"&gt;notifyListeners&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este provider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guarda el estado&lt;/li&gt;
&lt;li&gt;Controla la lógica de UI&lt;/li&gt;
&lt;li&gt;Notifica cambios&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔁 Flujo de la aplicación
&lt;/h2&gt;

&lt;p&gt;Así se conecta todo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;La UI solicita datos&lt;/li&gt;
&lt;li&gt;El Provider ejecuta lógica&lt;/li&gt;
&lt;li&gt;Se consultan datos en &lt;code&gt;data/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Se actualiza el estado&lt;/li&gt;
&lt;li&gt;La UI se reconstruye automáticamente&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  ⚠️ Puntos de mejora
&lt;/h2&gt;

&lt;p&gt;Si quieres llevar esto a nivel profesional:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Modelos bien definidos
&lt;/h3&gt;

&lt;p&gt;Ubícalos claramente en &lt;code&gt;data/models/&lt;/code&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  2. No sobrecargar el Provider
&lt;/h3&gt;

&lt;p&gt;Divide responsabilidades:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provider → estado&lt;/li&gt;
&lt;li&gt;Servicios → lógica&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  3. Fortalecer &lt;code&gt;logic/&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;No lo dejes vacío. Ahí va el verdadero valor del sistema.&lt;/p&gt;




&lt;h3&gt;
  
  
  4. Considerar herramientas más avanzadas
&lt;/h3&gt;

&lt;p&gt;Para proyectos grandes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Riverpod (mejor control de estado)&lt;/li&gt;
&lt;li&gt;Inyección de dependencias&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Conclusión
&lt;/h2&gt;

&lt;p&gt;Esta arquitectura ya es una base sólida. No es improvisada, es escalable y está alineada con prácticas modernas.&lt;/p&gt;

&lt;p&gt;Pero hay una diferencia clave:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tener estructura no es lo mismo que tener arquitectura sólida.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;El siguiente paso es pulir la separación de responsabilidades y pensar como arquitecto, no solo como desarrollador.&lt;/p&gt;




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

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>architecture</category>
      <category>appconfig</category>
    </item>
    <item>
      <title>Vale la pena los puestos Fullstack?</title>
      <dc:creator>Steven Andre </dc:creator>
      <pubDate>Tue, 31 Mar 2026 19:12:24 +0000</pubDate>
      <link>https://dev.to/andrearines/vale-la-pena-los-puestos-fullstack-3h9i</link>
      <guid>https://dev.to/andrearines/vale-la-pena-los-puestos-fullstack-3h9i</guid>
      <description>&lt;p&gt;Yo soy fullstack. No he tenido un trabajo formal, pero sé la gran responsabilidad que conlleva el puesto. Crear una arquitectura completa (API, cliente, base de datos, escalabilidad, etc.) no es fácil, especialmente si una empresa te da toda la responsabilidad del proyecto. Si hay un error, cargás con toda la culpa; literalmente eres quien lo hizo y debes mantenerlo. Los sueldos no tienen mucha diferencia, o son similares a los de un frontend o backend. No tengo experiencia laboral aún, pero eso supongo. &lt;/p&gt;

</description>
      <category>fullstack</category>
      <category>webdev</category>
      <category>techlife</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
