El objetivo de estos cambios es, por un lado, mantener los datos
actualizados y, por otro, mejorar la experiencia para quienes lo usan:
- Fiabilidad: los locales se pueden confirmar ("Sigue aquí") y
reportar (cerrado, datos incorrectos...), y se avisa de duplicados
antes de publicar, para que el contenido no se quede obsoleto ni
repetido.
- Usabilidad: autocompletado al proponer, favoritos, "cerca de mí",
compartir fichas, enlaces a Waze y una política de privacidad
visible, para que sea más sencillo aportar y encontrar locales.
- Extrae App.jsx en módulos reutilizables: constants/ (categorias,
provincias), utils/geo, styles/shared, hooks/usePwaInstall y
components/ (StarRating, LocalCard, CampoUbicacion, BannerMovil,
CategoriaBadge)
- AdminPanel reutiliza constantes y componentes compartidos y corrige
la limpieza de suscripciones de Firebase al desmontar
- Añade logos de marca (logo-localesp.png + @2x) y regenera los iconos
PWA con tamaños menores
- sw.js: sube la caché del shell a v2 e incluye los nuevos iconos y logos
El commit anterior (a3fd928) referenciaba /manifest.webmanifest,
/sw.js, /favicon-32.png y /apple-touch-icon.png en index.html y
main.jsx, pero los archivos no existían: el fallback SPA los servía
como index.html (200 text/html), así que la PWA no era instalable y
parecía que el desplegue no había actualizado.
Se añaden en public/ (Vite los copia a dist/ raíz):
- manifest.webmanifest: nombre, theme_color #8B0000, iconos any/maskable.
- sw.js: cache del shell con stale-while-revalidate (sirve cache al
instante y revalida en segundo plano) + network-first para /api/.
Versión de caché localesp-shell-v1.
- Iconos: favicon-32, apple-touch-icon (180), icon-192, icon-512 y
icon-512-maskable.
- Mapeo campos en base de datos: ubicacion→provincia, telefono→subcategoria,
email→direccion, web→enlaceGoogleMaps y añadido puntuacion.
- Migración suave (ensureColumn) para añadir las nuevas columnas sin perder
datos existentes si la DB ya existía con el esquema antiguo.
- Actualización de rutas del servidor para guardar/leer los nuevos campos y
convertir el NULL a valor nulo por defecto en puntuacion.
- Soporte PWA: añadido meta tags (manifest, theme-color, apple-touch-icon) y
registro de service worker para instalación del app y shell offline.
Añade la automatización de despliegue a esta rama (no la tenía):
- .gitea/workflows/deploy.yml: build + deploy on push, teardown on delete.
- scripts/lib/env.sh + deploy.sh + teardown.sh: lib OOP (Env + SystemdUnit/
NginxVhost/TlsCert) y entrypoints finos.
El código de la app NO se modifica. Traído path-scoped desde master (6cc326e).
Cada push a prototipo-yb01 publicará la app en prototipo-yb01.localesp.es.