Prototipo YB01 #1

Open
edgar.friendly wants to merge 16 commits from prototipo-yb01 into master
Owner

Qué cambia

Por qué

Notas para el revisor

  • La app arranca con npm run dev.
  • No he añadido dependencias innecesarias.
  • He seguido la estructura existente.
## Qué cambia <!-- En una o dos frases. --> ## Por qué <!-- Issue relacionado o motivación. --> ## Notas para el revisor - [ ] La app arranca con `npm run dev`. - [ ] No he añadido dependencias innecesarias. - [ ] He seguido la estructura existente.
edgar.friendly added 2 commits 2026-07-24 08:22:53 +02:00
edgar.friendly added 1 commit 2026-08-01 18:30:05 +02:00
ci: despliegue automático por rama (workflow + scripts OOP)
deploy-branch / teardown (push) Skipped
deploy-branch / deploy (push) Successful in 2m15s
d1fec59dcb
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.
edgar.friendly added 1 commit 2026-08-01 19:28:17 +02:00
Migración de esquema DB y soporte PWA:
deploy-branch / teardown (push) Skipped
deploy-branch / deploy (push) Successful in 2m16s
a3fd928073
- 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.
edgar.friendly added 1 commit 2026-08-02 12:11:45 +02:00
feat(pwa): añade assets PWA que faltaban (manifest, sw.js, iconos)
deploy-branch / teardown (push) Skipped
deploy-branch / deploy (push) Successful in 2m49s
28d066b5af
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.
edgar.friendly added 1 commit 2026-08-05 19:07:41 +02:00
refactor(ui): modulariza App.jsx y unifica branding y caché PWA
deploy-branch / teardown (push) Skipped
deploy-branch / deploy (push) Successful in 2m36s
257fb9c622
- 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
edgar.friendly added 1 commit 2026-08-10 22:25:07 +02:00
feat: directorio más fiable y más fácil de usar
deploy-branch / teardown (push) Skipped
deploy-branch / deploy (push) Successful in 2m34s
b36867225c
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.
edgar.friendly added 1 commit 2026-08-15 20:37:18 +02:00
feat(ui): notificaciones toast y mapa que sobrevive al cambio de pestaña
deploy-branch / teardown (push) Skipped
deploy-branch / deploy (push) Successful in 2m41s
d48b74cbd4
- Añade sistema de avisos tipo snackbar (Toast.jsx + useToast.js) con
  auto-cierre, animación de entrada y estilos info/éxito/error.
- LocalCard: feedback visual al añadir/quitar un local de favoritos.
- AdminPanel: sustituye los alert() por toasts al aprobar, rechazar,
  eliminar locales, descartar avisos y guardar el filtro de palabras;
  además saluda con un toast tras iniciar sesión o crear cuenta.
- App: el contenedor del mapa Leaflet queda siempre montado (oculto con
  CSS) y se llama a invalidateSize() al volver a la pestaña de mapa;
  así el mapa ya no se rompe al navegar entre vistas (antes obligaba
  a recargar la página).
edgar.friendly added 7 commits 2026-09-12 16:44:26 +02:00
feat(propuesta): pasarela paso a paso con autodetección de ubicación y FAB
deploy-branch / deploy (push) Failing after 6s
deploy-branch / teardown (push) Skipped
003b1e209f
- Campo universal de ubicación (Google Maps/Waze/OSM/coordenadas/dirección)
  sobre proveedores extensibles (src/utils/ubicacion) con resolver e inferencia
  inversa Nominatim (nombre/provincia pre-rellenados, alias cooficiales)
- FAB flotante abajo a la derecha que abre la pasarela en un modal accesible
  (Escape, foco contenido, responsive); sin descripción ni puntuación;
  avisos de duplicado y filtro de palabras dentro del modal
- Aviso PWA reposicionado: tarjeta abajo a la izquierda en móvil,
  botón compacto arriba a la izquierda en PC (no tapa el FAB)
- Suite de pruebas: 88 unitarias/componente (vitest + RTL, offline) y
  10 de integración (supertest + SQLite :memory: y Nominatim real opt-in)
- CI: workflow de Gitea Actions con npm test + build en push/PR e
  integración manual
- FAB y aviso PWA flanquean la columna central (720px): right/left
  max(16px, calc((100vw - 720px)/2 + 16px)) para acompañar al contenido
  en pantallas anchas sin pegarse al borde de la ventana
- FAB de 64px en PC (54 en móvil); PWA abajo a la izquierda en PC y móvil
- Nuevo BotonProponerArriba (solo PC): píldora "Proponer local" arriba a
  la derecha, alineada al cuerpo, que abre la misma pasarela
chore(openspec): archiva pasarela-proponer-local y sincroniza specs principales
deploy-branch / deploy (push) Failing after 6s
deploy-branch / teardown (push) Skipped
7bb3ea22da
- Mueve el cambio (36/36 tareas, 4/4 artefactos) a changes/archive/
- Crea las specs principales de boton-flotante-proponer-local,
  pasarela-proponer-local y proveedores-ubicacion (con Purpose)
fix(ci): compatibilidad con el runner self-hosted (npm 10 / Node 20)
deploy-branch / deploy (push) Successful in 2m43s
deploy-branch / teardown (push) Skipped
0c5651a6c0
- vitest 4 traía vite 8 anidado con esbuild 0.28: el lockfile quedaba
  incompleto para npm ci y el npm 10.8.2 del runner fallaba con
  "Missing @esbuild/* from lock file" / EBADPLATFORM. vitest 3 usa el
  vite 5 del proyecto como peer: sin árbol anidado, esbuild solo 0.21.5
- jsdom 30 exige Node >=22.22 (el runner tiene 20.20): bajado a jsdom 26
- tests.yml sobre el runner real (self-hosted, Node del sistema) en vez
  de ubuntu-latest, que no existe como label
- aserciones de max()/calc() tolerantes a la serialización de jsdom 26
ci: mueve tests.yml a .gitea/workflows (ubicación que este Gitea ejecuta)
deploy-branch / deploy (push) Successful in 2m37s
deploy-branch / teardown (push) Skipped
tests / Unitarias + componente + build (push) Failing after 1m48s
tests / Integración (Nominatim real, opt-in) (push) Skipped
00eaa1d209
ci(tests): activa gcc-toolset-12 para compilar better-sqlite3 con npm ci
deploy-branch / deploy (push) Successful in 2m35s
deploy-branch / teardown (push) Skipped
tests / Unitarias + componente + build (push) Successful in 2m47s
tests / Integración (Nominatim real, opt-in) (push) Skipped
d0fa037010
ci: verificación de statuses tras reinicio de runner y gitea
deploy-branch / deploy (push) Successful in 2m13s
deploy-branch / teardown (push) Skipped
tests / Unitarias + componente + build (push) Successful in 2m41s
tests / Integración (Nominatim real, opt-in) (push) Skipped
tests / Unitarias + componente + build (pull_request) Successful in 2m37s
tests / Integración (Nominatim real, opt-in) (pull_request) Skipped
30b7cc884e
edgar.friendly added 1 commit 2026-09-12 19:00:36 +02:00
feat(pasarela): datos inferidos juntos en una pantalla "Datos del local"
deploy-branch / deploy (push) Successful in 2m18s
deploy-branch / teardown (push) Skipped
tests / Unitarias + componente + build (pull_request) Successful in 2m23s
tests / Integración (Nominatim real, opt-in) (pull_request) Skipped
tests / Unitarias + componente + build (push) Successful in 2m30s
tests / Integración (Nominatim real, opt-in) (push) Skipped
49e965b248
- Nuevo PasoDatosLocal con nombre, provincia y dirección (ahora editable)
  en la misma pantalla, con aviso cuando vienen de la inferencia
- El wizard pasa de 6 a 5 pasos: Ubicación → Datos del local → Categoría
  → Tipo específico → Resumen
- Eliminados PasoNombre y PasoProvincia (absorbidos)
- Spec principal actualizada al nuevo orden de pantallas
All checks were successful
deploy-branch / deploy (push) Successful in 2m18s
deploy-branch / teardown (push) Skipped
tests / Unitarias + componente + build (pull_request) Successful in 2m23s
tests / Integración (Nominatim real, opt-in) (pull_request) Skipped
tests / Unitarias + componente + build (push) Successful in 2m30s
tests / Integración (Nominatim real, opt-in) (push) Skipped
This pull request has changes conflicting with the target branch.
  • .gitignore
  • index.html
  • package-lock.json
  • package.json
  • server/db.js
  • server/index.js
  • src/App.jsx
  • src/main.jsx
  • vite.config.js
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin prototipo-yb01:prototipo-yb01
git checkout prototipo-yb01
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: edgar.friendly/localesp#1