Empezar tutorial interactivo

← Volver a Proyectos

Arquitectura Modular con React Native

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

📝 Instrucciones
  • 💡 Pistas

La arquitectura modular es una forma de organizar el código que divide una aplicación en módulos independientes o “features”, cada uno con su propia lógica, pantallas, estado y componentes.

Este proyecto te enseña a estructurar una app de React Native, de manera escalable, mantenible y profesional. El objetivo no es empezar desde cero, sino aprender a ordenar correctamente una app real mientras implementas dos features clave:

  • Películas por categoría
  • Favoritos
Lo sentimos, no tiene suficientes privilegios para acceder a este bloque de contenido, regístrese o actualice su plan para acceder al contenido.

🌱 Cómo comenzar este proyecto

  • Clona el siguiente template en tu computadora, abrelo y asegúrate de que compila:

    1git clone https://github.com/4GeeksAcademy/react-native-cli-advanced 2npm install 3npm run android

    o

    1npm run ios
  • Si todo esta bien, deberías ver:

    • Una lista de películas en Home.
    • Un detalle de película completo.
    • Una lista de categorías en la tab correspondiente.

RN Movies Preview

💡 Importante: Recuerda guardar y subir tu código a GitHub creando un nuevo repositorio, actualizando el remoto (git remote set-url origin <your new url>) y subiendo el código a tu nuevo repositorio usando los comandos add, commit y push desde la terminal de git.

📝 Instrucciones

  1. Explora la arquitectura y revisa los archivos existentes: src/features/movies/, src/features/categories/, src/shared/lib/movies.ts, src/navigation/StackNavigator.tsx, src/navigation/feature-registry.ts.

    Hazte estas preguntas:

    • ¿Qué va en features y qué va en shared?
    • ¿Qué pantallas están listas y cuáles no?
    • ¿Dónde se registran las rutas de cada feature?
  2. Crea la pantalla de películas por categoría src/features/categories/screens/CategoryMoviesScreen.tsx. La idea es que cuando el usuario toque una categoría en CategoriesScreen, debe navegar a CategoryMoviesScreen y ver solo las películas de esa categoría.

  3. Gestionar favoritos con Zustand src/features/movies/store/movies.store.ts. Debes permitir que el usuario marque o desmarque películas como favoritas. Fijate en el archivo store que ya tienes un codigo pre-hecho.

    • La idea es que lo conectes en MovieDetailScreen. Obteniendo el id:

      1const { id } = route.params;
    • El estado del store:

      1const { toggleFavorite, isFavorite } = useMoviesStore();
    • Y creando un botón para favoritos:

      1<Button 2title={isFavorite(id) ? 'Remove from favorites' : 'Add to favorites'} 3onPress={() => toggleFavorite(id)} 4/>
  4. Gestiona el store de categorías src/features/categories/store/categories.store.ts. La idea es que implementes un estado simple:

    1activeCategory: string | null; 2setActiveCategory: (category: string) => void;

    Puedes usarlo para resaltar visualmente la categoría activa.

💡 Pistas

  • La navegación desde CategoriesScreen ya te manda el parámetro:

    1navigation.navigate('CategoryMovies', { category: 'Sci-Fi' });
  • En CategoryMoviesScreen, obtén la categoría:

    1const { category } = route.params;
  • Usa el helper de @shared/lib/movies:

    1const filtered = getMoviesByCategory(category);
  • Renderiza un listado con FlatList reutilizando MovieCard de forma que al tocar una película, debe navegar al detalle.

✅ Checklist

Regístrate para obtener acceso gratis a archivos y video de la solución

Lo usaremos para darte acceso a la comunidad.
¿Ya tienes una cuenta? Inicia sesión aquí.

Al registrarte estás aceptando nuestros Términos y condiciones y Política de privacidad.

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

Regístrate para obtener acceso gratis a archivos y video de la solución

Lo usaremos para darte acceso a la comunidad.
¿Ya tienes una cuenta? Inicia sesión aquí.

Al registrarte estás aceptando nuestros Términos y condiciones y Política de privacidad.

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías

Dificultad

  • intermediate

Duración promedio

1 hrs

Tecnologías