<100 subscribers

Actividad diagnostica
Objetivo:Identificar los conocimientos previos de los estudiantes en HTML, CSS y lógica básica de diseño web.Instrucciones:Crea una página web simple con un archivo index.html.La página debe contener:Un título principal con tu nombre.Un párrafo donde describas qué entiendes por "aplicaciones web progresivas".Una lista (puede ser ordenada o no ordenada) con 3 aplicaciones web que uses en tu día a día.Una imagen (puede ser de internet o de tu computadora).Aplica algo de estilo con CSS interno o...

App móvil con CRUD conectado a servidor LAMP
Objetivo generalDesarrollar una app móvil en React Native (Expo) capaz de conectarse a una API PHP que realiza operaciones CRUD sobre una tabla en MySQL, todo dentro de una red local.Herramientas necesariasMySQ: Base de datosPHP (Apache o XAMPP): API en backendReact Native + ExpoApp: móvil frontendPostman (opcional): Prueba de endpoints APIVS Code: Editor de códigoExpo Go: Pruebas en el móvil (iOS/Android)Parte 1: Crear la base de datosEn phpMyAdmin o línea de comandos de MySQL:CREATE DATABAS...

La señal que nunca llegó
Lucas tenía una visión: crear una app que ayudara a pequeños productores locales a vender sus cosechas directamente a consumidores urbanos. Nada de intermediarios, solo conexión. La llamó Raíz. Desde su pequeño estudio en Oaxaca, con más corazón que presupuesto, construyó una app limpia, intuitiva y optimista. El diseño estaba listo. Las funciones estaban listas. Los productores estaban listos. Solo faltaba que el mundo se conectara con ella. El día del lanzamiento fue como un amanecer. Lucas...



Actividad diagnostica
Objetivo:Identificar los conocimientos previos de los estudiantes en HTML, CSS y lógica básica de diseño web.Instrucciones:Crea una página web simple con un archivo index.html.La página debe contener:Un título principal con tu nombre.Un párrafo donde describas qué entiendes por "aplicaciones web progresivas".Una lista (puede ser ordenada o no ordenada) con 3 aplicaciones web que uses en tu día a día.Una imagen (puede ser de internet o de tu computadora).Aplica algo de estilo con CSS interno o...

App móvil con CRUD conectado a servidor LAMP
Objetivo generalDesarrollar una app móvil en React Native (Expo) capaz de conectarse a una API PHP que realiza operaciones CRUD sobre una tabla en MySQL, todo dentro de una red local.Herramientas necesariasMySQ: Base de datosPHP (Apache o XAMPP): API en backendReact Native + ExpoApp: móvil frontendPostman (opcional): Prueba de endpoints APIVS Code: Editor de códigoExpo Go: Pruebas en el móvil (iOS/Android)Parte 1: Crear la base de datosEn phpMyAdmin o línea de comandos de MySQL:CREATE DATABAS...

La señal que nunca llegó
Lucas tenía una visión: crear una app que ayudara a pequeños productores locales a vender sus cosechas directamente a consumidores urbanos. Nada de intermediarios, solo conexión. La llamó Raíz. Desde su pequeño estudio en Oaxaca, con más corazón que presupuesto, construyó una app limpia, intuitiva y optimista. El diseño estaba listo. Las funciones estaban listas. Los productores estaban listos. Solo faltaba que el mundo se conectara con ella. El día del lanzamiento fue como un amanecer. Lucas...
Share Dialog
Share Dialog
Que el estudiante identifique y aplique herramientas, frameworks y librerías clave (React, Vite, vite-plugin-pwa / Workbox, manifest, service workers y Lighthouse) para convertir una web simple en una Progressive Web App instalable y usable offline.
Nivel: principiante-intermedio (conocimientos básicos de HTML, CSS y JavaScript).
Prerrequisitos:
Node.js (v16+ recomendado) y npm instalados.
Familiaridad básica con React (JSX, componentes).
Editor de código (VSCode recomendado).
Navegador Chrome o Chromium para pruebas y Lighthouse.
Node.js / npm
Plantilla Vite React
vite-plugin-pwa (envuelve Workbox y simplifica la generación del service worker)
Opcional: workbox-window si decides registrar manualmente
Chrome DevTools (para Lighthouse y testing)
Lee la historia de Clara para contextualizar decisiones técnicas (qué herramientas escogió y por qué).
En la terminal:
npm create vite@latest mi-pwa -- --template react
cd mi-pwa
npm install
Abre el proyecto en tu editor. (Nota: si prefieres Create React App o Next.js puedes adaptar, pero en esta guía usamos Vite por su rapidez.)
Instala el plugin:
npm install -D vite-plugin-pwa
Abre vite.config.js (o vite.config.ts) y añade la configuración mínima:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
plugins: [
react(),
VitePWA({
registerType: 'autoUpdate',
includeAssets: ['favicon.ico', 'robots.txt', 'apple-touch-icon.png'],
manifest: {
name: 'Mi PWA de Ejemplo',
short_name: 'MiPWA',
description: 'Una PWA de ejemplo creada en el taller',
theme_color: '#317EFB',
icons: [
{
src: 'pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
},
workbox: {
// Aquí puedes añadir estrategias de caché si lo deseas
// runtimeCaching: [...]
}
})
]
})
Coloca iconos pwa-192x192.png y pwa-512x512.png en public/ o src/assets según tu configuración.
Con vite-plugin-pwa muchas cosas se registran automáticamente, pero puedes registrar con un hook en React:
En src/main.jsx (o index.js):
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
import { registerSW } from 'virtual:pwa-register'
const updateSW = registerSW({
onNeedRefresh() {},
onOfflineReady() {}
})
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<App />
</React.StrictMode>
)
Si quieres mayor control manual, instala workbox-window y registra el service worker con eventos para waiting, activated, etc.
Si usas el plugin, el manifest se inyecta, pero verifica en index.html que exista:
<link rel="manifest" href="/manifest.webmanifest" />
Abre manifest.webmanifest y confirma name, short_name, icons, start_url, display: "standalone" y background_color.
En vite.config.js dentro de VitePWA({ workbox: { runtimeCaching: [...] }}) puedes añadir reglas, por ejemplo:
workbox: {
runtimeCaching: [
{
urlPattern: /^https:\/\/api\.miapp\.com\/.*$/,
handler: 'NetworkFirst',
options: {
cacheName: 'api-cache',
expiration: { maxEntries: 50, maxAgeSeconds: 24 * 60 * 60 }
}
},
{
urlPattern: /\.(?:png|jpg|jpeg|svg|gif)$/,
handler: 'CacheFirst',
options: {
cacheName: 'image-cache',
expiration: { maxEntries: 60, maxAgeSeconds: 30 * 24 * 60 * 60 }
}
}
]
}
Estas estrategias equilibran frescura y disponibilidad offline.
Desarrollo:
npm run dev
#abre http://localhost:5173
En Chrome DevTools → Application → Manifest y Service Workers verifica que la app sea detectada como PWA.
Prueba build (simular producción local):
npm run build
npm run preview
o usa un servidor estático que soporte service workers en localhost
Nota: los service workers funcionan en localhost y sobre HTTPS. Para deploy remoto debes usar HTTPS.
Abre la app en Chrome → DevTools → Lighthouse → Genera un reporte (elige categoría PWA).
O desde CLI:
npx lighthouse http://localhost:5173 --only-categories=pwa --view
Interpreta el reporte: corrige problemas señalados (manifest, service worker, carga inicial, caché).
Confirma que la app se instala (display standalone) y tiene contenido usable offline (al menos la pantalla principal).
Saca capturas de:
Prompt de instalación
App funcionando en modo offline
Reporte Lighthouse o puntaje PWA
Sube código a repositorio y comparte enlace + capturas como entregable.
El service worker no se instala: borra caches e intenta con Service Workers → Unregister y recarga. En desarrollo usa npm run build + preview para simular producción.
La app no se muestra como instalable: revisa manifest.start_url, display: "standalone" y que el manifest esté bien enlazado.
Caché mostrando contenido antiguo: implementa versionado y estrategias como skipWaiting() y clients.claim() en el SW para forzar actualización.
Problemas de scope: coloca el service worker en el root (/) si quieres caché global.
Añadir notificaciones push (usar Firebase Cloud Messaging o Web Push).
Implementar Background Sync para enviar datos cuando vuelva la conexión.
Optimizar imágenes y añadir lazy-loading, mejorando puntuación de rendimiento.
Añadir pruebas automáticas para el service worker (p. ej. con Workbox en build).
En la actividad aplicas la misma lógica que Clara: evaluar opciones (framework vs librería vs herramienta), elegir por ecosistema y documentación (React + vite-plugin-pwa), y usar auditoría (Lighthouse) para validar decisiones. El aprendizaje no es solo técnico: valorar usabilidad y experiencia del usuario.
Que el estudiante identifique y aplique herramientas, frameworks y librerías clave (React, Vite, vite-plugin-pwa / Workbox, manifest, service workers y Lighthouse) para convertir una web simple en una Progressive Web App instalable y usable offline.
Nivel: principiante-intermedio (conocimientos básicos de HTML, CSS y JavaScript).
Prerrequisitos:
Node.js (v16+ recomendado) y npm instalados.
Familiaridad básica con React (JSX, componentes).
Editor de código (VSCode recomendado).
Navegador Chrome o Chromium para pruebas y Lighthouse.
Node.js / npm
Plantilla Vite React
vite-plugin-pwa (envuelve Workbox y simplifica la generación del service worker)
Opcional: workbox-window si decides registrar manualmente
Chrome DevTools (para Lighthouse y testing)
Lee la historia de Clara para contextualizar decisiones técnicas (qué herramientas escogió y por qué).
En la terminal:
npm create vite@latest mi-pwa -- --template react
cd mi-pwa
npm install
Abre el proyecto en tu editor. (Nota: si prefieres Create React App o Next.js puedes adaptar, pero en esta guía usamos Vite por su rapidez.)
Instala el plugin:
npm install -D vite-plugin-pwa
Abre vite.config.js (o vite.config.ts) y añade la configuración mínima:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
plugins: [
react(),
VitePWA({
registerType: 'autoUpdate',
includeAssets: ['favicon.ico', 'robots.txt', 'apple-touch-icon.png'],
manifest: {
name: 'Mi PWA de Ejemplo',
short_name: 'MiPWA',
description: 'Una PWA de ejemplo creada en el taller',
theme_color: '#317EFB',
icons: [
{
src: 'pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
},
workbox: {
// Aquí puedes añadir estrategias de caché si lo deseas
// runtimeCaching: [...]
}
})
]
})
Coloca iconos pwa-192x192.png y pwa-512x512.png en public/ o src/assets según tu configuración.
Con vite-plugin-pwa muchas cosas se registran automáticamente, pero puedes registrar con un hook en React:
En src/main.jsx (o index.js):
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
import { registerSW } from 'virtual:pwa-register'
const updateSW = registerSW({
onNeedRefresh() {},
onOfflineReady() {}
})
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<App />
</React.StrictMode>
)
Si quieres mayor control manual, instala workbox-window y registra el service worker con eventos para waiting, activated, etc.
Si usas el plugin, el manifest se inyecta, pero verifica en index.html que exista:
<link rel="manifest" href="/manifest.webmanifest" />
Abre manifest.webmanifest y confirma name, short_name, icons, start_url, display: "standalone" y background_color.
En vite.config.js dentro de VitePWA({ workbox: { runtimeCaching: [...] }}) puedes añadir reglas, por ejemplo:
workbox: {
runtimeCaching: [
{
urlPattern: /^https:\/\/api\.miapp\.com\/.*$/,
handler: 'NetworkFirst',
options: {
cacheName: 'api-cache',
expiration: { maxEntries: 50, maxAgeSeconds: 24 * 60 * 60 }
}
},
{
urlPattern: /\.(?:png|jpg|jpeg|svg|gif)$/,
handler: 'CacheFirst',
options: {
cacheName: 'image-cache',
expiration: { maxEntries: 60, maxAgeSeconds: 30 * 24 * 60 * 60 }
}
}
]
}
Estas estrategias equilibran frescura y disponibilidad offline.
Desarrollo:
npm run dev
#abre http://localhost:5173
En Chrome DevTools → Application → Manifest y Service Workers verifica que la app sea detectada como PWA.
Prueba build (simular producción local):
npm run build
npm run preview
o usa un servidor estático que soporte service workers en localhost
Nota: los service workers funcionan en localhost y sobre HTTPS. Para deploy remoto debes usar HTTPS.
Abre la app en Chrome → DevTools → Lighthouse → Genera un reporte (elige categoría PWA).
O desde CLI:
npx lighthouse http://localhost:5173 --only-categories=pwa --view
Interpreta el reporte: corrige problemas señalados (manifest, service worker, carga inicial, caché).
Confirma que la app se instala (display standalone) y tiene contenido usable offline (al menos la pantalla principal).
Saca capturas de:
Prompt de instalación
App funcionando en modo offline
Reporte Lighthouse o puntaje PWA
Sube código a repositorio y comparte enlace + capturas como entregable.
El service worker no se instala: borra caches e intenta con Service Workers → Unregister y recarga. En desarrollo usa npm run build + preview para simular producción.
La app no se muestra como instalable: revisa manifest.start_url, display: "standalone" y que el manifest esté bien enlazado.
Caché mostrando contenido antiguo: implementa versionado y estrategias como skipWaiting() y clients.claim() en el SW para forzar actualización.
Problemas de scope: coloca el service worker en el root (/) si quieres caché global.
Añadir notificaciones push (usar Firebase Cloud Messaging o Web Push).
Implementar Background Sync para enviar datos cuando vuelva la conexión.
Optimizar imágenes y añadir lazy-loading, mejorando puntuación de rendimiento.
Añadir pruebas automáticas para el service worker (p. ej. con Workbox en build).
En la actividad aplicas la misma lógica que Clara: evaluar opciones (framework vs librería vs herramienta), elegir por ecosistema y documentación (React + vite-plugin-pwa), y usar auditoría (Lighthouse) para validar decisiones. El aprendizaje no es solo técnico: valorar usabilidad y experiencia del usuario.
No comments yet