Back to All Projects
Frontend
Completed
4 days
Share:

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

React
TypeScript
Tailwind CSS
shadcn/ui
PWA
OpenWeatherMap API
Geolocation API
Vitest
Year: 2025
Duration: 4 days
Team: Solo
Type: Tool
Featured image for WeatherDash

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

  1. Clone the repository
Bash
Code
git clone https://github.com/christianjeraldjutba/weather-dashboard-v1.git
cd weather-dashboard-v1
  1. Install dependencies
Bash
Code
npm install
  1. Environment Setup Create a .env file in the root directory:
ENV
Code
VITE_OPENWEATHER_API_KEY=your_api_key_here
VITE_APP_NAME=WeatherDash
VITE_APP_VERSION=1.0.0
  1. 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
  1. Start development server
Bash
Code
npm run dev

Navigate to http://localhost:5173 to see the application running.

Build Commands

Bash
Code
# 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/weather-maps)
  3. Make your changes with clear commit messages
  4. Add tests for new functionality
  5. 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

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

CJ Jutba Logo

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.