CursosEmpresasBlogLiveConfPrecios

El proyecto

Clase 3 de 16 • Curso de Progressive Web Apps con React.js

Clase anteriorSiguiente clase

Contenido del curso

Introducción a PWA

  • 1
    ¿Qué es una PWA?

    ¿Qué es una PWA?

    05:40 min
  • 2
    Progressive Web App vs. Native App

    Progressive Web App vs. Native App

    01:58 min
  • 3
    El proyecto

    El proyecto

    Viendo ahora
  • 4
    Google Lighthouse

    Google Lighthouse

    08:04 min
  • 5
    Creando un Web Manifest

    Creando un Web Manifest

    12:58 min
  • 6
    Implementar el Manifest

    Implementar el Manifest

    01:30 min

Service Workers

  • 7
    ¿Qué es un Service Worker?

    ¿Qué es un Service Worker?

    01:29 min
  • 8
    Introducción a Workbox

    Introducción a Workbox

    12:16 min
  • 9
    Implementando Workbox

    Implementando Workbox

    15:09 min
  • 10
    Aplicando Estrategias de Carga

    Aplicando Estrategias de Carga

    13:41 min
  • 11
    Google Analytics Offline

    Google Analytics Offline

    06:52 min
  • 12
    Experimentar con Workbox

    Experimentar con Workbox

    01:17 min

Funcionalidades Avanzadas

  • 13
    Web Share API

    Web Share API

    08:05 min
  • 14
    Trabajando Offline

    Trabajando Offline

    11:01 min
  • 15
    Notificaciones

    Notificaciones

    10:51 min
  • 16
    Publicando la app

    Publicando la app

    06:47 min
Tomar examen
Resumen

Nuestro proyecto será Platzi Recetas: una PWA para ver recetas que utiliza la API de TheMealDB.
Solamente usaremos React, generado por Create React App, junto con React Router.

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Jorge Méndez Ortega

        Jorge Méndez Ortega

        student•
        hace 6 años

        nunca me a gustado usar create-react-app se me hace muy chafa

          Bernardo Aguayo Ortega

          Bernardo Aguayo Ortega

          student•
          hace 5 años

          es una opcion mur rápida, ideal en mi opinion para un curso que se centra en pwa y no en como hacer set up de react, sin embargo estoy de acuerdo contigo

          Jorge De Jesus Tejeda Bello

          Jorge De Jesus Tejeda Bello

          student•
          hace 4 años

          Igual, siento que me estoy volando una serie de pasos y siempre con la incertidumbre de el código que se esta corriendo por detrás.

        Oscar Cornejo

        Oscar Cornejo

        student•
        hace 5 años

        El instructor podría haber indicado que debemos descargar el proyecto y no estar adivinando de dónde se deben descargar los recursos.

        Cristian Iñiguez

        Cristian Iñiguez

        student•
        hace 5 años

        Estuve viendo el proyecto y parece que la API cambió. Ahora para obtener las últimas recetas debemos tener cuenta de Patreon y donar.

        Para que siga funcionando el proyecto hice este cambio, haciendo la petición a otra URL:

        // mealdb-api.js async function getLatest() { const request = await fetch(`${baseUrl}/random.php`); // ya no latest.php ... }

        Esto me trae una receta aleatoria (pero solo una). Si alguien encuentra una mejor alternativa avisa:

        Jorge Londoño

        Jorge Londoño

        student•
        hace 5 años

        hola si de pronto a algunos les da problemas abrir el proyecto aquí algunas cosas que a mi me funcionaron:

        primero instalar el isomorphic-fetch con este comando

        npm i isomorphic-fetch

        luego buscar actualizaciones con

        npx npm-check-updates -u

        instalar las actualizaciones con

        npm install

        y para abrirlo no usar npm run start o npm start sino

        npm run dev

        ahora si al abrir el proyecto en el navegador no se ven las recetas, deben de ir a mealdb-api.js y cambiar la baseUrl y el request de la funcion getLatest con

        const baseUrl = "https://www.themealdb.com/api/json/v1/1";
        const request = await fetch(`${baseUrl}/search.php?f=b`);
          Luis Felipe Medina Rodriguez

          Luis Felipe Medina Rodriguez

          student•
          hace 5 años

          bro me sigue dando el mismo error data.meals.map is not a function creo que como si pareciera que la api no funciona si le sirve a mi bro?

          Jorge Londoño

          Jorge Londoño

          student•
          hace 5 años

          mira te comparto todo mi codigo del mealdb-api,

          import 'isomorphic-fetch' const baseUrl = 'https://www.themealdb.com/api/json/v1/1'; export default { getLatest, getRecipe } async function getLatest() { const request = await fetch(`${baseUrl}/search.php?f=b`); const data = await request.json() const recipes = data.meals.map((m) => normalizeMeal(m)) return recipes } async function getRecipe(recipeId) { const request = await fetch(`${baseUrl}/lookup.php?i=${recipeId}`) const data = await request.json() if( ! data.meals ) return null const recipe = normalizeMeal(data.meals.shift()) return recipe } function normalizeMeal(meal) { const newMeal = {} newMeal.id = meal.idMeal newMeal.name = meal.strMeal newMeal.category = meal.strCategory newMeal.origin = meal.strArea newMeal.instructions = meal.strInstructions.split('\n').filter((i) => i.trim() !== '') newMeal.thumbnail = meal.strMealThumb newMeal.tags = meal.strTags ? meal.strTags.split(',') : [] newMeal.youtube = meal.strYoutube newMeal.ingredients = [] newMeal.url = meal.strSource newMeal.dateModified = meal.dateModified for( let i=1; i<=20; i++ ) { if( meal[`strIngredient${i}`] !== '' && meal[`strMeasure${i}`] !== '' ) { newMeal.ingredients.push({ ingredient: meal[`strIngredient${i}`], measure: meal[`strMeasure${i}`] }) } } return newMeal }

          lo que pasa es que la api de donde se extraen los datos cambió sus requisitos entonces ya no funciona como el profesor lo planteó, por eso hay que cambiar las variables antes mencionadas.

        Brian Dennis Vega Hidalgo

        Brian Dennis Vega Hidalgo

        student•
        hace 7 años

        se puede mesclar NextJs con un PWA ?

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 7 años

          En teoría si es posible.

          Brian Dennis Vega Hidalgo

          Brian Dennis Vega Hidalgo

          student•
          hace 7 años

          Super muchas gracias GOLLUM23 y gabrielchaveme investigare y veré los proyectos ahora mismo .

        Fernando Salazar

        Fernando Salazar

        student•
        hace 7 años

        Hola Roberto, Disculpa podrias compartir un gist o un json con tus plugins de vscode? Saludos.

        PD: Estaria bueno que todos los profesores hagan esto al prncipio de todos los cursos.

        Leonardo Moreno Faberón

        Leonardo Moreno Faberón

        student•
        hace 5 años

        Consulta quiero aprender esta PWA sin embargo no quiero entrar con una "deuda tecnica" que necesito saber antes de meterme de cabeza.????? hasta ahora conzco : -html. -css. -js (lleve el curso basico y el de fundamentos de js). -php (pero creo q no tiene nada q ver con PWA).

        que mas me hace falta para tomar este curso de PWA y entenderlo.???? please si alguien me puede dar el mapa lo agradeceria mucho.

          Alex Camacho

          Alex Camacho

          teacher•
          hace 5 años

          Si ya sabes manejar JS podrías pasar a utilizar un framework con React y de ahí mirar a trabajar con una PWA

          Ramiro Contreras León

          Ramiro Contreras León

          student•
          hace 5 años

          Te recomiendo el curso de NPM porque hay muchas librerías que actualizar y corregir. También sin duda de React. Este curso esta un 50% desactualizado, así que te recomiendo estar preparado en minimamente esas dos cosas que mencione!

        Pamela Cinthya Torres Gutiérrez

        Pamela Cinthya Torres Gutiérrez

        student•
        hace 6 años

        una pregunta puedo utilizar este curso pero con otro proyecto que tenga en react?

          Kevin Morales

          Kevin Morales

          student•
          hace 6 años

          Claro que sí, puedes poner en práctica todo lo que vas aprendiendo en el curso con el proyecto que quieras. Lo importante es aprender 💪

        Cristian Caballero

        Cristian Caballero

        student•
        hace 6 años

        Esta en algun lugar el proyecto para ir "haciendo" con el mismo proyecto y no solo ir "viendo" como el lo hace?

        Israel Elias Laura Rosas

        Israel Elias Laura Rosas

        student•
        hace 8 años

        Tengo que pasar los cursos de React para tomar este curso?

          Oscar Barajas Tavares

          Oscar Barajas Tavares

          Team Platzi•
          hace 8 años

          No estas obligado a hacerlo, en este curso te enseñan a trabajar las PWA con lo básico, pero te recomendaría tomar el curso para tener mas nociones de como se trabaja con ReactJS.

          Israel Elias Laura Rosas

          Israel Elias Laura Rosas

          student•
          hace 8 años

          El de React o React Native?

        Sebastian Duque Morales

        Sebastian Duque Morales

        student•
        hace 7 años

        Hola, tengo una pregunta, como tal el curso no está orientado a hacer la app desde 0 sino a pasar una app ya creada a una PWA?

          Ricardo Celis

          Ricardo Celis

          teacher•
          hace 7 años

          así es justamente!

          Sebastian Duque Morales

          Sebastian Duque Morales

          student•
          hace 7 años

          Ahh jaja, la idea era empezarla desde 0, recomiendan algún sitio donde la pueda empezar desde 0?

        Wilson Fabian Pérez Sucuzhañay

        Wilson Fabian Pérez Sucuzhañay

        student•
        hace 7 años

        pero para el SEO no seria NEXT con PWA porque solo react puro ¿?

          Daniel Esteves

          Daniel Esteves

          student•
          hace 6 años

          Esta es una manera de hacerla pero como tu la recomiendas también y de hecho es una de las mejores alternativas

        Jhon Manuel Angulo Moncada

        Jhon Manuel Angulo Moncada

        student•
        hace 6 años

        como dicen los compañeros ya el API de themealdb cambio así que cambien en mealdb-api.js la parte del fetch de "/latest.php" a "search.php?f=c"

        si desean bastantes recetas con la letra c o la s

        Julio J Yépez

        Julio J Yépez

        student•
        hace 8 años

        Se deben instalar react-router-dom y react-helmet adicionalmente a los paquetes que instala create-react-app recetas

          Julio J Yépez

          Julio J Yépez

          student•
          hace 8 años

          El package.json queda así:

          { "name": "platzi-recetas", "version": "0.1.0", "private": true, "dependencies": { "react": "^16.4.1", "react-dom": "^16.4.1", "react-helmet": "^5.2.0", "react-router-dom": "^4.3.1", "react-scripts": "1.1.4" }, "scripts": { "dev": "react-scripts start", "start": "serve ./build -s -p ${PORT:-4000}", "build": "react-scripts build", "test": "react-scripts test --env=jsdom", "eject": "react-scripts eject" } }
          Julio J Yépez

          Julio J Yépez

          student•
          hace 8 años

          También se debe instalar serve:

          npm i -S serve
        Luis Felipe Medina Rodriguez

        Luis Felipe Medina Rodriguez

        student•
        hace 5 años
        Captura de pantalla de 2021-07-19 22-45-22.png
        TypeError: data.meals.map is not a function at Object._callee$ (mealdb-api.js:13) at tryCatch (runtime.js:62) at Generator.invoke [as _invoke] (runtime.js:296) at Generator.prototype.<computed> [as next] (runtime.js:114) at step (mealdb-api.js:18) at mealdb-api.js:18 __stack_frame_overlay_proxy_console__ @ index.js:2178
        Captura de pantalla de 2021-07-19 22-52-25.png
        ayuda que podria ser? hice npm init -y npm install y aun asi noks
          Jorge Londoño

          Jorge Londoño

          student•
          hace 5 años

          Hola luis en la pagina mealdb-api.js del proyecto en la funcion getLatest pon:

          const request = await fetch(`${baseUrl}/search.php?f=b`)

          porque la api cambió entonces no se puede usar la consulta con .../latest.php`)

          Luis Felipe Medina Rodriguez

          Luis Felipe Medina Rodriguez

          student•
          hace 5 años

          bro ya me ayudaste y me sirvio muchisimas gracias eres un crack :sm

        Kerlyn Mariño

        Kerlyn Mariño

        student•
        hace 6 años

        Hola, alguien sabe en qué otro curso hicieron Platzi Recetas? o de dónde lo puedo descargar porque en los videos siguientes no lo explican... solo van directamente a convertir el app en una PWA.

          Massimo Di Berardino

          Massimo Di Berardino

          student•
          hace 5 años

          ¡Hola Kerly! En esta clase, en la sección de archivos el profesor comparte el proyecto con el que van a trabajar durante todo el curso.

        Angel Hayling

        Angel Hayling

        student•
        hace 7 años

        platzi-recetas@0.1.0 start C:\Users\leoncito\Documents\Workspace\Front-end\react-class\PWA\pwa_clones\platzi-pwa serve ./build -s -p ${PORT:-4000}

        ERROR: Unknown --listen endpoint scheme (protocol): null npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! platzi-recetas@0.1.0 start: serve ./build -s -p ${PORT:-4000} npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the platzi-recetas@0.1.0 start script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

        npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\leoncito\AppData\Roaming\npm-cache_logs\2019-06-11T21_48_31_619Z-debug.log

          Andres Roberto Coello Goyes

          Andres Roberto Coello Goyes

          student•
          hace 6 años

          también tuve el mismo error pero basta con ejecutar npm run build

          Wanda Peruzzo

          Wanda Peruzzo

          student•
          hace 5 años

          En lugar de serve ./build -s -p ${PORT:-4000} coloca serve ./build -s -p PORT:-4000 en el packjson

        Rubén Maier Enzler

        Rubén Maier Enzler

        student•
        hace 7 años

        no me queda claro una cosa, ¿el proyecto este de las "recetas" se realiza en algún curso o está hecho exclusivamente para el curso y nos delegan la responsabilidad de conocerlo cual construcción propia? ¿es un proyecto de solo react, react router, hntml y css básico o tiene a su vez código ya enfocado en la realización de una pwa?

          Fernanda Aragon

          Fernanda Aragon

          student•
          hace 7 años

          Hola, en todo el curso te dan las bases para crear una PWA con React, la aplicación utilizara React y React Router, que por ende usaras algo de estilos CSS y de maquetación de HTML.

        Cristian Caballero

        Cristian Caballero

        student•
        hace 6 años

        Alguien mas tuvo este error al intentar correr el proyecto después de descargarlo? SyntaxError: Unexpected token < in JSON at position 0

        Me da ese error en consola, esta relacionado con el archivo recetas/src/mealdb-api.js

        Esto fue después de usar npm install y luego 'npm run dev', carga el sitio, pero vació y en consola veo el error que describí arriba

          Wilson Marino Pablo Mendez

          Wilson Marino Pablo Mendez

          student•
          hace 6 años

          Justamente me esta mostrando lo mismo. ¿Lograste solucionar?

        Luis Martinez

        Luis Martinez

        student•
        hace 6 años

        Alguien sabe qué extensión usa el profesor para que el logo del archivo en VSC sea el logo de react para los archivos react aunque sólo terminen en.js ?