H2O Please es una aplicacion web frontend para registrar el consumo diario de agua y consultar el progreso de hidratacion del usuario. Esta version final funciona solo en cliente, usa HTML, CSS y JavaScript vanilla, persiste los datos en localStorage y añade una tarjeta de clima integrada en el dashboard.
La aplicacion esta cerrada como frontend estatico:
- acceso con login y registro local
- dashboard con vistas
HOY,HISTORIALyYO - gestion del consumo diario de agua
- perfil de usuario con recalculo del objetivo diario
- modo oscuro con toggle en dashboard
- tarjeta de clima reutilizable en dashboard
- preview independiente de la weather card
No hay backend, base de datos, build, npm ni pipeline de test automatizado en el estado actual del repositorio.
- Registro local de usuario con
usernameypassword - Inicio de sesion local con validacion de credenciales
- Autologin si ya existe una sesion activa
- Dashboard con contador, progreso y objetivo diario
- Alta manual de agua consumida desde el formulario principal
- Proteccion basica frente a clicks repetidos en el boton de beber
- Historial diario de tomas con borrado individual
- Reinicio automatico del consumo al cambiar de dia
- Vista de perfil con edad, peso y recalculo del objetivo diario
- Vuelta automatica a la vista
HOYdespues de guardar el perfil - Cierre de sesion desde la vista
YO - Modo oscuro en dashboard
- Tarjeta de clima con geolocalizacion y cache local
- Fallback meteorologico cuando no hay API key de OpenWeather
- Recomendacion compacta de hidratacion segun la maxima diaria prevista
- Vista
weather-preview.htmlpara revisar la card de clima de forma aislada
- HTML5
- CSS3
- JavaScript vanilla con modulos ES
localStorage- Geolocation API del navegador
- Fetch API
- OpenWeather API
- Open-Meteo API
- BigDataCloud Reverse Geocoding API
H2O-please/
├─ assets/
│ ├─ fonts/
│ └─ images/
├─ docs/
│ ├─ DOCUMENTACION.html
│ ├─ Estructure.md
│ ├─ Feature_api_clima.md
│ ├─ GitHub_guia_flujo.md
│ ├─ H2O_Please_guia_git_ollama_docs_equipo.md
│ └─ resumen_integracion_h2o_please_v2.md
├─ scripts/
│ ├─ config/
│ │ ├─ weatherRuntimeConfig.example.js
│ │ └─ weatherRuntimeConfig.local.js
│ ├─ core/
│ │ ├─ App.js
│ │ ├─ DOMManager.js
│ │ ├─ Navigation.js
│ │ ├─ Views.js
│ │ ├─ storage.js
│ │ └─ utils.js
│ ├─ features/
│ │ └─ weather-api/
│ │ ├─ README_API.md
│ │ ├─ index.js
│ │ ├─ weatherApiClient.js
│ │ ├─ weatherCache.js
│ │ ├─ weatherConfig.js
│ │ ├─ weatherDomManager.js
│ │ └─ weatherService.js
│ ├─ models/
│ │ └─ UserConsumption.js
│ ├─ pages/
│ │ ├─ dashboardWeatherIntegration.js
│ │ ├─ weatherCardIntegration.js
│ │ └─ weatherPreviewPage.js
│ ├─ services/
│ │ └─ authService.js
│ ├─ darkmode.js
│ ├─ dashboard.js
│ └─ index.js
├─ styles/
│ ├─ styles.css
│ └─ weather-preview.css
├─ dashboard.html
├─ index.html
├─ weather-preview.html
└─ README.md
El proyecto no necesita instalacion de dependencias. Basta con servir los archivos estaticos desde un servidor local.
git clone https://github.com/David-LS-Bilbao/H2O-please.git
cd H2O-please
python3 -m http.server 5500Despues abre en el navegador:
http://localhost:5500/para login y registrohttp://localhost:5500/dashboard.htmlsi ya existe un usuario activohttp://localhost:5500/weather-preview.htmlpara revisar la weather card por separado
Nota: la geolocalizacion del clima requiere un contexto seguro o localhost. Para desarrollo local, http://localhost:5500 es valido.
- Abre
index.html. - Usa la pestana
Iniciar sesionoCrear cuenta. - Al autenticarse, la aplicacion redirige a
dashboard.html. - En
HOYpuedes:- consultar el objetivo diario
- ver el total consumido
- revisar la tarjeta de clima
- anadir una nueva toma de agua
- En
HISTORIALpuedes revisar las tomas del dia y borrar entradas. - En
YOpuedes editar edad y peso, guardar cambios y cerrar sesion.
La aplicacion guarda todo el estado en localStorage.
| Clave | Uso |
|---|---|
currentUser |
Usuario con sesion activa |
userConsumption:<username> |
Estado persistido del usuario |
H2O_PLEASE_WEATHER_API_KEY |
API key opcional de OpenWeather |
localWeatherSnapshot |
Ultimo snapshot meteorologico valido |
La entrada userConsumption:<username> contiene la informacion funcional del usuario, por ejemplo:
usernamepasswordlastTimeConsumedlastTimeConsumedUnixnextAlarmwaterConsumedconsumptionTargethistorylastDateageweight
La feature meteorologica vive en scripts/features/weather-api/ y se monta desde:
scripts/pages/dashboardWeatherIntegration.jsparadashboard.htmlscripts/pages/weatherPreviewPage.jsparaweather-preview.html
- Se monta la weather card en el contenedor correspondiente.
- Si existe un snapshot local previo, se pinta primero para no dejar la vista vacia.
- La app intenta obtener la ubicacion del usuario.
- Si hay API key de OpenWeather, usa OpenWeather como proveedor principal.
- Si no hay API key, o el proveedor principal no aplica, usa Open-Meteo.
- Resuelve la maxima diaria prevista desde Open-Meteo.
- Calcula un mensaje corto de hidratacion dentro de la propia card en funcion de esa maxima.
- Intenta resolver una ubicacion legible con BigDataCloud.
- Guarda el ultimo snapshot valido en
localStorage. - Si falla el refresco por red o proveedor y habia cache previa, reutiliza ese dato guardado.
Como mejora pequena y reversible de la feature meteorologica, la tarjeta muestra ahora la maxima prevista del dia y un consejo compacto de hidratacion. El objetivo es aportar contexto util sin tocar la logica principal de consumo de agua ni aumentar demasiado la altura de la interfaz en movil.
La app puede funcionar sin API key gracias al fallback con Open-Meteo. Si quieres usar OpenWeather, la forma mas simple es guardar la key en localStorage:
localStorage.setItem("H2O_PLEASE_WEATHER_API_KEY", "tu-api-key");El repositorio tambien incluye estos ficheros de apoyo:
scripts/config/weatherRuntimeConfig.example.js
scripts/config/weatherRuntimeConfig.local.js
La plantilla esperada es:
window.H2O_PLEASE_WEATHER_API_KEY = "tu-api-key";- Es una aplicacion frontend pura; no hay backend ni persistencia remota.
- Los datos de usuario y password quedan en
localStorage, asi que no es un sistema de autenticacion seguro para produccion. - No hay tests automatizados, lint ni build en el repositorio actual.
- La geolocalizacion y las llamadas al clima dependen del navegador, la red y los permisos del usuario.
- La preview del clima y el dashboard sirven para validacion manual, no para pruebas automatizadas.
El repositorio incluye documentacion tecnica complementaria en docs/:
docs/Feature_api_clima.mddocs/GitHub_guia_flujo.mddocs/resumen_integracion_h2o_please_v2.mddocs/DOCUMENTACION.html
La documentacion especifica de la feature meteorologica esta en:
scripts/features/weather-api/README_API.md
Proyecto desarrollado e integrado por el equipo de H2O Please.