Pronóstico del tiempo a 7 días para las nueve capitales departamentales de Bolivia: temperatura máxima y mínima, sensación térmica y viento. Datos de Open-Meteo.
翻訳待ち
暮らしTypeScript · CSSGitHub @MarlonTMF接続状況の再確認が必要です所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Loading the full README. The saved excerpt is shown below.
Clima Bolivia — Pronóstico de 7 días Aplicación web que muestra el pronóstico de los próximos siete días para las nueve capitales departamentales de Bolivia. Aplicación desplegada: Repositorio: ▼ Ver la vista móvil (390 px) Requisitos: Node.js 20 o superior (desarrollado con la 24.14.0) y npm. No hace falta ninguna clave de API ni archivo .env: la API elegida no pide autenticación.Read the full README ↗
Aplicación web que muestra el pronóstico de los próximos siete días para las nueve capitales departamentales de Bolivia.
Aplicación desplegada: https://clima-bolivia-theta.vercel.app/ Repositorio: https://github.com/MarlonTMF/Clima_Bolivia
Requisitos: Node.js 20 o superior (desarrollado con la 24.14.0) y npm.
No hace falta ninguna clave de API ni archivo .env: la API elegida no pide
autenticación.
git clone https://github.com/MarlonTMF/Clima_Bolivia.git
cd Clima_Bolivia
npm install
npm run dev # http://localhost:5173
| Comando | Qué hace |
|---|---|
npm run dev | Servidor de desarrollo |
npm run build | Compila tipos y genera dist/ para producción |
npm run preview | Sirve el dist/ ya compilado |
npm run test | 19 pruebas con Vitest |
npm run typecheck | Comprobación de tipos |
npm run lint | oxlint |
npm run audit | Auditoría propia de fallos silenciosos (ver más abajo) |
npm run check | Los cinco anteriores en orden. Es el que se ejecuta antes de cada commit |
Una nota sobre typecheck: usa tsc -b --noEmit, no tsc --noEmit. El
tsconfig.json raíz es un archivo de referencias sin archivos propios, así
que tsc --noEmit devuelve éxito aunque haya errores de tipos. Se
descubrió introduciendo un error a propósito para comprobar que el hook de
verificación servía de algo, y no servía.
| Pieza | Elección | Por qué |
|---|---|---|
| Framework | React 19 | Componentización y tipado, y es lo más reconocible para quien evalúa. Svelte habría sido más ligero; se eligió React por familiaridad, no por superioridad técnica |
| Lenguaje | TypeScript | Tipar la respuesta de la API convierte un error de mapeo en un fallo de compilación en vez de en una pantalla en blanco |
| Build | Vite | Un comando para arrancar y para compilar, sin configuración |
| Estilos | CSS plano | Sin framework: son unas 970 líneas que se pueden explicar una a una |
| Pruebas | Vitest + Testing Library | 19 pruebas: lógica, mapeo de la API, los cinco casos de error y los cuatro estados de la interfaz |
| Linter | oxlint | Viene con la plantilla de Vite |
| Despliegue | Vercel (plan gratuito) | Sitio estático servido desde CDN |
"dependencies": { "react": "^19.2.8", "react-dom": "^19.2.8" }
Eso es todo. Sin router, sin gestor de estado, sin cliente HTTP, sin librería de CSS, sin librería de iconos, sin librería de fechas. Para una sola pantalla, cada dependencia sería una decisión más que defender y una superficie más que explicar:
useState en el
componente raíz.fetch nativo cubre el caso, incluido el timeout con
AbortController.Intl.DateTimeFormat,
que está en el navegador.Las dependencias de desarrollo sí existen —Vitest, Testing Library, jsdom, TypeScript— y no contradicen lo anterior: no entran en el paquete final ni llegan al usuario.
El resultado compilado son 99 KB comprimidos, de los que unos 68 KB son React. Ese peso es la contrapartida asumida de la decisión.
Se compararon cuatro opciones contra su documentación oficial antes de elegir, no después.
| API | 7 días diarios en plan gratuito | Clave | Peticiones para 9 ciudades | Veredicto |
|---|---|---|---|---|
| Open-Meteo | Sí | No requiere | 1 | Elegida |
| OpenWeather | Vía One Call, modelo de pago por uso con 1 000 llamadas diarias gratis | Sí | 9 | Descartada |
| WeatherAPI.com | No: sólo 3 días | Sí | 9 | Descartada por no cumplir el requisito |
| Meteosource | Sí | Sí | 9 | Descartada: 9 llamadas por carga sobre un límite de 400 diarias |
Las tres razones de la elección:
La limitación real, dicha por delante: el uso gratuito de Open-Meteo es no comercial, bajo licencia CC-BY 4.0. Si este proyecto pasara a uso comercial habría que pagar su plan o reevaluar OpenWeather — que además exigiría un backend propio para no exponer la clave en el navegador.
weatherApi.ts.src/data/cities.ts.This is the beginning of the README. Read the rest at the original. Read the full README ↗