Un dashboard interactivo para consultar información climática en tiempo real, construido con React + Vite en el frontend y Node.js/Express en el backend.
- Búsqueda inteligente de ciudades por nombre
- Interfaz responsiva con validación en tiempo real
- Estados de carga y manejo de errores
- Temperatura actual con sensación térmica
- Condiciones meteorológicas con iconos descriptivos
- Ubicación completa (ciudad, región, país)
- Fecha y hora local de la ubicación consultada
- Última actualización de los datos
- Humedad relativa del aire
- Velocidad y dirección del viento (incluyendo ráfagas)
- Presión atmosférica
- Visibilidad
- Índice UV
- Punto de rocío
- Índice de calidad del aire EPA con clasificación visual
- Contaminantes específicos:
- Monóxido de carbono (CO)
- Dióxido de nitrógeno (NO₂)
- Ozono (O₃)
- Dióxido de azufre (SO₂)
- Partículas finas (PM2.5)
- Partículas gruesas (PM10)
- Indicadores visuales de nivel de calidad (Buena/Moderada/Dañina)
- Pronóstico de 3 días con información detallada
- Temperaturas máximas y mínimas
- Probabilidad de precipitación
- Humedad promedio
- Velocidad máxima del viento
- Índice UV diario
- Alertas de lluvia automáticas
- Resumen estadístico del período
- React 18.2.0 - Biblioteca de interfaz de usuario
- Vite 5.0.8 - Herramienta de construcción y desarrollo
- Bootstrap 5.3.2 - Framework CSS para diseño responsivo
- Bootstrap Icons - Iconografía
- Sass 1.69.5 - Preprocesador CSS
- Node.js - Runtime de JavaScript
- Express 4.18.2 - Framework web
- Axios 1.6.0 - Cliente HTTP
- CORS 2.8.5 - Middleware para peticiones cross-origin
- dotenv 16.3.1 - Gestión de variables de entorno
- Nodemon 3.0.2 - Recarga automática del servidor
- Concurrently 8.2.2 - Ejecución simultánea de scripts
- @vitejs/plugin-react 4.2.1 - Plugin de React para Vite
El dashboard utiliza WeatherAPI.com, una API gratuita de datos meteorológicos que proporciona:
- Datos meteorológicos actuales en tiempo real
- Pronósticos hasta 3 días
- Información de calidad del aire
- Datos astronómicos (amanecer/atardecer)
- Búsqueda de ubicaciones
GET /v1/current.json- Información climática actualGET /v1/forecast.json- Pronóstico meteorológicoGET /v1/search.json- Búsqueda de ciudadesGET /v1/astronomy.json- Datos astronómicos
Nota importante: La API utilizada es gratuita y tiene una limitación de 60 llamadas diarias. Debido a esta restricción, la clave de API (API Key) se actualiza cada dos semanas para mantener el servicio operativo.
- Node.js (v14 o superior)
- npm o yarn
git clone <repository-url>
cd clima-app2npm installCrear un archivo .env en la raíz del proyecto:
WEATHER_API_KEY=tu_clave_de_weatherapi.com
PORT=5000# Ejecutar frontend y backend simultáneamente
npm run dev
# O ejecutar por separado:
npm run server # Backend en puerto 5000
npm run client # Frontend en puerto 5173npm run buildclima-app2/
├── src/ # Código fuente del frontend
│ ├── components/ # Componentes React
│ │ ├── SearchBar.jsx # Barra de búsqueda
│ │ ├── WeatherDashboard.jsx # Dashboard principal
│ │ ├── CurrentWeather.jsx # Información actual
│ │ ├── WeatherStats.jsx # Estadísticas detalladas
│ │ ├── AirQuality.jsx # Calidad del aire
│ │ └── ForecastSection.jsx # Pronóstico extendido
│ ├── App.jsx # Componente principal
│ └── main.jsx # Punto de entrada
├── server/ # Código fuente del backend
│ ├── services/ # Servicios
│ │ └── weatherService.js # Servicio de API meteorológica
│ ├── routes/ # Rutas de la API
│ │ └── weather.js # Rutas meteorológicas
│ └── index.js # Servidor Express
├── package.json # Dependencias y scripts
└── README.md # Este archivo
- Diseño responsivo adaptable a todos los dispositivos
- Interfaz intuitiva con iconografía descriptiva
- Estados de carga y feedback visual
- Manejo de errores con mensajes informativos
- Paleta de colores coherente y accesible
- Animaciones suaves y transiciones
- Tipografía clara y legible
GET /api/weather/current/:city # Clima actual de una ciudad
GET /api/weather/forecast/:city # Pronóstico de una ciudad
GET /api/weather/search?q=query # Buscar ciudades
GET /api/weather/astronomy/:city # Datos astronómicos
Este proyecto está bajo la Licencia MIT.
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Desarrollado con ❤️ utilizando React, Node.js y WeatherAPI.com