App de clima por ciudad con ruta dinámica (/:city), modo visual híbrido (foto/minimalista) y arquitectura desacoplada para cambiar de proveedor meteorológico.
- SvelteKit (UI en CSR con
ssr=false) - API interna en SvelteKit (oculta la API key de AEMET)
- Clean Architecture (domain/application/infrastructure)
- Adapter:
@sveltejs/adapter-node
Copia .env.example a .env y rellena:
AEMET_API_KEY=tu_clave_real
WEATHER_PROVIDER=aemetnpm install
npm run devAbre http://localhost:5173/oviedo.
Para exponer en red/VPN:
npm run dev:vpnAbre http://IP_DE_TU_EQUIPO:4173/oviedo desde la red VPN.
/:city-> API internaGET /api/weather/:city- Resolución de municipio (AEMET maestro)
- Predicción horaria + diaria por código de municipio
- Render visual con paginación por horas y por días
- Si no existe o hay ambigüedad, devuelve sugerencias y filtro por provincia
GET /api/weather/:city?province=&code=GET /api/municipalities?province=&q=
npm run check
npm run build
npm run previewCon adapter-node, npm run preview levanta el servidor Node; en este proyecto queda fijado en http://127.0.0.1:4173 y carga variables desde .env.
Para servir el build en red/VPN:
npm run preview:vpnSi necesitas URL pública temporal (sin tocar DNS), puedes usar un túnel:
npx localtunnel --port 4173