WeatherDash
Real-time weather data with 5-day forecasts and full PWA capabilities.

What is WeatherDash?
WeatherDash is an open-source weather dashboard that demonstrates modern frontend development practices with API integration, Progressive Web App capabilities, and responsive design. Built with React, TypeScript, and the OpenWeatherMap API, this project serves as an excellent learning resource for developers interested in real-time data fetching, PWA development, and creating installable web applications.
Perfect for developers looking to understand API integration patterns, service worker implementation, and building performant weather applications with modern web technologies.
Learning Focus: This project emphasizes API integration best practices, PWA development, and creating responsive, installable web applications with offline capabilities and real-time data updates.
Features
Weather Data & Forecasting
- Real-time Weather Data - Current conditions with live updates from OpenWeatherMap API
- 5-Day Forecast - Extended weather outlook with detailed hourly breakdowns
- Location Services - Intelligent city search with autocomplete and automatic geolocation
- Comprehensive Metrics - Detailed weather data including humidity, pressure, wind speed, and UV index
Progressive Web App Features
- Installable App - Add to home screen for native-like experience on any device
- Offline Support - Service worker caching for functionality without internet connection
- Background Sync - Automatic data updates when connectivity is restored
- Performance Optimized - Fast loading with strategic caching and lazy loading
User Experience
- Responsive Design - Mobile-first approach with seamless experience across all devices
- Dark/Light Mode - System-aware theme switching with manual override
- Temperature Units - Toggle between Celsius and Fahrenheit with persistent settings
- Recent Searches - Quick access to previously searched locations with local storage
Developer Features
- Type Safety - Full TypeScript implementation for robust API integration
- Error Boundaries - Comprehensive error handling with graceful degradation
- Testing Suite - Complete Vitest testing setup with coverage reports
- Performance Monitoring - Built-in analytics and performance optimization
Tech Stack
Frontend Framework
- React 18.3.3 - Modern React with hooks, concurrent features, and Suspense
- TypeScript 5.5.3 - Strict type safety for reliable API integration and data handling
- Vite 5.4.1 - Lightning-fast build tool with hot module replacement and optimized bundling
UI & Styling
- Tailwind CSS 3.4.11 - Utility-first CSS framework for rapid, responsive development
- shadcn/ui - High-quality, accessible component library built on Radix UI
- CSS Animations - Smooth transitions and micro-interactions for enhanced UX
- Responsive Design - Mobile-first approach with adaptive layouts
Progressive Web App
- Service Workers - Advanced caching strategies and offline functionality
- Web App Manifest - Installation prompts and native app behavior
- Background Sync - Queue API requests when offline and sync when online
- Push Notifications - Weather alerts and updates (configurable)
APIs & Services
- OpenWeatherMap API - Comprehensive weather data with global coverage
- Geolocation API - Automatic location detection with privacy controls
- Local Storage - Persistent settings and search history
Development Tools
- Vitest - Fast unit testing with coverage reports and UI
- ESLint & Prettier - Code quality enforcement and consistent formatting
- Husky - Git hooks for pre-commit quality checks
Installation
Prerequisites
- Node.js 18+ and npm
- OpenWeatherMap API key (free tier available)
Clone and Setup
- Clone the repository
git clone https://github.com/christianjeraldjutba/weather-dashboard-v1.git
cd weather-dashboard-v1
- Install dependencies
npm install
- Environment Setup
Create a
.env
file in the root directory:
VITE_OPENWEATHER_API_KEY=your_api_key_here
VITE_APP_NAME=WeatherDash
VITE_APP_VERSION=1.0.0
- Get OpenWeatherMap API Key
- Visit OpenWeatherMap API
- Sign up for a free account
- Generate an API key from your dashboard
- Add the key to your
.env
file
- Start development server
npm run dev
Navigate to http://localhost:5173
to see the application running.
Build Commands
# Development
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run tests
npm run test
# Run tests with coverage
npm run test:coverage
# Type checking
npm run type-check
Contributing
This project welcomes contributions from developers interested in weather applications, PWA development, and API integration! Here are areas where you can contribute and learn:
š Beginner-Friendly Contributions
- UI Enhancements - Improve weather icons, add animations, or enhance the color scheme
- Accessibility Improvements - Add more ARIA labels, improve keyboard navigation, or enhance screen reader support
- Unit Conversions - Add wind speed units (mph/kph), pressure units (hPa/inHg), or visibility units
- Theme Enhancements - Create additional color themes or improve dark/light mode transitions
š§ Intermediate Contributions
- Weather Alerts - Implement severe weather warnings and notification system
- Location History - Enhanced location management with favorites and recent searches
- Data Visualization - Add charts for temperature trends, precipitation, or weather patterns
- Offline Improvements - Enhanced PWA capabilities with better offline data management
šÆ Advanced Contributions
- Weather Maps - Integrate weather map overlays (radar, satellite, temperature)
- Push Notifications - Real-time weather alerts and daily forecast notifications
- Advanced Analytics - Weather pattern analysis and historical comparison features
- Performance Optimization - Implement virtualization, optimize API calls, or enhance caching strategies
How to Contribute
- Fork the repository
- Create a feature branch (
git checkout -b feature/weather-maps
) - Make your changes with clear commit messages
- Add tests for new functionality
- Submit a pull request with detailed description
We encourage API integration and PWA-focused contributions and provide detailed code reviews to help developers learn modern web development practices.
Author
Christian Jerald (CJ) Jutba
- š Portfolio: https://cjjutba.com/
- š¼ LinkedIn: https://www.linkedin.com/in/cjjutba/
- š GitHub: https://github.com/cjjutba
- š§ Email: hello@cjjutba.com
Acknowledgments
- OpenWeatherMap for providing comprehensive weather data API with global coverage
- shadcn/ui for the beautiful, accessible component library built on Radix UI
- Tailwind CSS for the utility-first framework enabling rapid responsive development
- Vite for the lightning-fast build tool and development server
- Vercel for seamless deployment and hosting with excellent PWA support
- Vitest for the fast and feature-rich testing framework
šÆ Key Improvements Made

Got a Project Idea?
Let's Make It Happen!
I'm available for full-time roles & freelance projects.
I thrive on crafting dynamic web applications, and delivering seamless user experiences.