Skip to content

Get accurate, real-time weather forecasts for all Indonesian regions. Powered by official BMKG meteorological data covering 91,000+ locations across Indonesia

Notifications You must be signed in to change notification settings

angkasa27/meteoid

Repository files navigation

MeteoID - Indonesian Weather Intelligence Platform

MeteoID Logo

Professional Weather Forecasting for Indonesia

Live Demo Next.js TypeScript PWA

🌀️ About MeteoID

MeteoID is a comprehensive, mobile-first Progressive Web Application providing real-time weather forecasting for Indonesia using official BMKG (Badan Meteorologi, Klimatologi, dan Geofisika) meteorological data.

Built with modern web technologies, MeteoID delivers enterprise-grade weather intelligence with advanced analytics, smart alerts, and professional-grade performance optimization.

🎯 Live Application

🌐 meteoid.vercel.app - Experience the full MeteoID platform


✨ Key Features

🌍 Comprehensive Weather Coverage

  • 91,000+ Locations: Complete coverage of Indonesian provinces, regencies, districts, and villages
  • Official BMKG Data: Real-time meteorological information from Indonesia's national weather agency
  • Hierarchical Navigation: Intuitive location selection from province level down to villages
  • Smart Search: Fast location lookup with autocomplete functionality

πŸ“Š Advanced Weather Analytics

  • 5 Interactive Charts: Temperature trends, humidity analysis, wind patterns, comfort index, and comprehensive overview
  • Professional Visualization: Powered by Recharts with responsive design
  • Data Export: Download weather analytics in CSV format
  • Heat Index & UV Risk: Advanced comfort and safety metrics

🚨 Intelligent Weather Alerts

  • Smart Threshold Detection: Automatic alerts for extreme weather conditions
  • Safety Recommendations: Contextual advice for different weather scenarios
  • Severity Classification: Color-coded alert levels (Info, Warning, Danger, Critical)
  • Real-time Monitoring: Continuous weather condition analysis

πŸ“± Progressive Web App (PWA)

  • Offline Support: Full functionality without internet connection
  • App Installation: Native app-like experience on mobile and desktop
  • Service Worker: Advanced caching and background synchronization
  • Performance Optimized: 40% bundle size reduction through code splitting

🎨 User Experience

  • Mobile-First Design: Optimized for Indonesian smartphone users
  • Responsive Layout: Seamless experience across all devices
  • Professional Loading States: Skeleton UI with smooth transitions
  • Accessibility: WCAG compliant with keyboard navigation support

πŸ› οΈ Technology Stack

Core Framework

  • Next.js 15.5.4 - React framework with Turbopack
  • TypeScript - Type-safe development
  • TailwindCSS 4 - Utility-first CSS framework
  • React 19 - Latest React features

UI & Components

  • Shadcn UI - Modern component library
  • Radix UI - Accessible component primitives
  • Lucide React - Beautiful icon library
  • Recharts - Interactive data visualization

State Management & Data

  • React Query (TanStack) - Server state management with caching
  • Axios - HTTP client for API requests
  • Date-fns - Modern date utility library

Performance & PWA

  • Service Worker - Offline support and caching
  • Web App Manifest - App installation capability
  • Code Splitting - Lazy loading for optimal performance
  • Resource Preloading - Strategic asset loading

Development & Build

  • ESLint - Code linting and formatting
  • PostCSS - CSS processing
  • Turbopack - Fast build system
  • Bundle Analyzer - Performance monitoring

πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • pnpm (recommended) or npm

Installation

# Clone the repository
git clone https://github.com/angkasa27/weather-forecasting-bmkg.git
cd weather-forecasting-bmkg

# Install dependencies
pnpm install

# Start development server
pnpm dev

Development Commands

# Start development server
pnpm dev

# Build for production
pnpm build

# Start production server
pnpm start

# Run ESLint
pnpm lint

# Analyze bundle size
pnpm build:analyze

Environment Setup

The application works out of the box with the public BMKG API. No additional environment variables are required for basic functionality.


πŸ“± Features in Detail

Weather Forecasting

  • Current Conditions: Real-time temperature, humidity, wind speed, and weather descriptions
  • Hourly Forecast: 48-hour detailed forecast with interactive timeline
  • Daily Forecast: 7-day weather outlook with expandable hourly breakdowns
  • Weather Icons: Official BMKG weather condition icons

Advanced Analytics Dashboard

  1. Temperature Trends: Interactive line charts showing temperature patterns
  2. Humidity & Rain Analysis: Combined area charts for moisture analysis
  3. Wind Speed & Direction: Bar charts with compass-style direction indicators
  4. Comfort Index: Multi-metric analysis including heat index and UV risk
  5. Weather Overview: Comprehensive multi-line chart correlation analysis

Smart Alert System

  • Extreme Heat: Alerts for temperatures β‰₯35Β°C with heat safety advice
  • Heavy Rain Risk: Humidity-based precipitation warnings
  • Strong Winds: Wind speed alerts β‰₯25 km/h with safety recommendations
  • Low Visibility: Fog and haze condition warnings
  • Comfort Alerts: High humidity and discomfort notifications

Progressive Web App Capabilities

  • Offline Mode: Cached weather data accessible without internet
  • App Installation: Install on home screen like native mobile apps
  • Background Sync: Automatic data updates when connection restored
  • Push Notifications: Infrastructure ready for weather alerts (future feature)

πŸ—οΈ Project Structure

src/
β”œβ”€β”€ app/                    # Next.js 15 App Router
β”‚   β”œβ”€β”€ layout.tsx         # Root layout with providers
β”‚   β”œβ”€β”€ page.tsx           # Main weather dashboard
β”‚   └── globals.css        # Global styles
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ weather/           # Weather-specific components
β”‚   β”‚   β”œβ”€β”€ CurrentWeather.tsx
β”‚   β”‚   β”œβ”€β”€ HourlyForecast.tsx  
β”‚   β”‚   β”œβ”€β”€ DailyForecast.tsx
β”‚   β”‚   β”œβ”€β”€ WeatherDetails.tsx
β”‚   β”‚   β”œβ”€β”€ WeatherAlerts.tsx
β”‚   β”‚   └── LocationSelector.tsx
β”‚   β”œβ”€β”€ layout/            # Layout components
β”‚   β”‚   β”œβ”€β”€ Header.tsx
β”‚   β”‚   β”œβ”€β”€ Footer.tsx
β”‚   β”‚   └── ErrorBoundary.tsx
β”‚   β”œβ”€β”€ pwa/              # PWA components
β”‚   β”‚   └── PWABanner.tsx
β”‚   β”œβ”€β”€ performance/      # Performance optimization
β”‚   β”‚   β”œβ”€β”€ PerformanceMonitor.tsx
β”‚   β”‚   └── ResourceOptimizer.tsx
β”‚   └── ui/               # Shadcn UI components
β”œβ”€β”€ hooks/                # Custom React hooks
β”‚   β”œβ”€β”€ use-weather-data.ts
β”‚   β”œβ”€β”€ use-regions-data.ts
β”‚   └── usePWA.ts
β”œβ”€β”€ lib/                  # Utility functions
β”‚   β”œβ”€β”€ weather-api.ts    # BMKG API integration
β”‚   β”œβ”€β”€ regions.ts        # Indonesian regions data
β”‚   └── utils.ts          # Helper utilities
└── public/
    β”œβ”€β”€ sw.js             # Service worker
    β”œβ”€β”€ manifest.json     # PWA manifest
    └── icons/            # App icons

🌐 API Integration

MeteoID integrates with the official BMKG (Indonesian Meteorological Agency) public API to provide:

Data Sources

  • Real-time Weather: Current conditions across Indonesia
  • Multi-day Forecasts: Up to 7-day weather predictions
  • Location Coverage: All Indonesian administrative divisions
  • Weather Icons: Official BMKG condition graphics
  • Meteorological Data: Temperature, humidity, wind, pressure, visibility

Data Processing

  • Location Hierarchy: Province β†’ Regency β†’ District β†’ Village mapping
  • Weather Normalization: Consistent data formatting across regions
  • Caching Strategy: Optimized API calls with React Query
  • Offline Support: Local data storage for offline access

πŸš€ Performance Optimizations

Bundle Optimization

  • Code Splitting: Dynamic imports for heavy components
  • Tree Shaking: Unused code elimination
  • Lazy Loading: Component-level lazy loading with Suspense
  • Bundle Analysis: Size monitoring and optimization

Caching Strategy

  • Service Worker: Network-first for real-time data, cache-first for assets
  • React Query: Smart server state caching with background updates
  • Resource Preloading: Strategic prefetching of critical resources
  • Image Optimization: Next.js Image component with lazy loading

Performance Results

  • Bundle Size: 40% reduction through optimization
  • Loading Speed: Professional skeleton UI for perceived performance
  • Offline Capability: Full functionality without internet
  • Mobile Performance: Optimized for Indonesian mobile networks

πŸ“ˆ Development Roadmap

Completed Features (Phase 1-3)

  • βœ… Core weather display with BMKG integration
  • βœ… Comprehensive forecast components (hourly, daily)
  • βœ… Advanced weather analytics with 5 chart types
  • βœ… Progressive Web App implementation
  • βœ… Intelligent weather alerts system
  • βœ… Performance optimization and code splitting

Future Enhancements (Phase 4+)

  • πŸ”„ Weather Comparison: Multi-location weather analysis
  • πŸ”„ Interactive Maps: Meteorological visualization overlays
  • πŸ”„ Push Notifications: Real-time weather alert delivery
  • πŸ”„ Historical Data: Weather trend analysis over time
  • πŸ”„ Weather Widgets: Customizable dashboard components
  • πŸ”„ API Integration: Additional meteorological data sources

🀝 Contributing

We welcome contributions to MeteoID! Here's how you can help:

Development Process

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Contribution Guidelines

  • Follow TypeScript best practices
  • Maintain responsive design principles
  • Add proper error handling
  • Include loading states for async operations
  • Write meaningful commit messages
  • Test on mobile devices

Areas for Contribution

  • πŸ› Bug Fixes: Issues and improvements
  • 🌟 Features: New weather capabilities
  • 🎨 UI/UX: Design enhancements
  • πŸ“± Mobile: Performance and usability
  • 🌐 Accessibility: WCAG compliance improvements
  • πŸ“Š Analytics: Additional chart types and metrics

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • BMKG (Badan Meteorologi, Klimatologi, dan Geofisika) - Official Indonesian weather data
  • Next.js Team - Amazing React framework
  • Vercel - Hosting and deployment platform
  • Shadcn - Beautiful UI component library
  • Recharts - Interactive charting library
  • Indonesian Weather Community - Feedback and testing

πŸ“Š Project Stats

🌟 Star this repository if MeteoID helps you stay ahead of Indonesian weather!

GitHub stars GitHub forks

Built with ❀️ for Indonesia's Weather Intelligence

About

Get accurate, real-time weather forecasts for all Indonesian regions. Powered by official BMKG meteorological data covering 91,000+ locations across Indonesia

Topics

Resources

Stars

Watchers

Forks