A premium weather app for Android with multiple selectable themes — from cyberpunk neon HUDs to soft pastel gradients. Real-time weather data, smart notifications, and a beautiful adaptive UI. Built with Flutter.
- Real-time weather via Open-Meteo API (no API key needed)
- GPS auto-detect + manual city search with geocoding
- 24-hour forecast with scrollable timeline
- 10-day forecast with temperature range bars
- Air Quality Index with pollutant breakdown (PM2.5, PM10, O3, NO2)
- What to wear — clothing advice based on conditions
- Rain timeline — minute-by-minute precipitation outlook
- Sunrise/sunset countdown with progress arc
- Smart notifications — morning briefing, evening outlook, severe weather alerts, trend insights
- Advanced metrics — atmosphere, wind, precipitation, UV (toggleable)
- Responsive layout — portrait, landscape, and tablet support
- Easter egg — tap the cloud icon 7 times for the debug weather FX simulator
SappyWeather ships with 5 built-in themes, switchable at runtime from Settings:
| Theme | Style |
|---|---|
| Cyberpunk | Neon HUD, glitch effects, particle rain/snow/lightning, scanlines |
| Clean | Minimal dark gradients, smooth transitions |
| Pastel | Dreamy pastel night aesthetic with soft lavender and candy highlights |
| Sunset | Warm amber and coral tones on dark backgrounds |
| Ocean | Deep sea blues and teals with aqua accents |
Each theme has its own splash screen, weather-reactive gradients, and card styling.
- Framework: Flutter 3.38.9 (Dart 3.10.8)
- State management: Provider
- Weather API: Open-Meteo
- Location: geolocator + geocoding
- Storage: shared_preferences
- Notifications: flutter_local_notifications + Firebase Cloud Messaging
- Background sync: workmanager
- Animations: flutter_animate + CustomPainter FX engine
- Flutter SDK >= 3.38.9
- Android SDK (minSdk 26)
- Java 17
git clone https://github.com/ShaptakNaskar/weatherman.git
cd weatherman
flutter pub get
flutter run# Debug
flutter build apk --debug
# Release (requires android/key.properties with keystore credentials)
flutter build apk --releaselib/
├── main.dart
├── config/
│ ├── constants.dart
│ ├── app_theme_data.dart # Abstract theme interface
│ ├── cyberpunk_theme.dart # Neon/HUD theme
│ ├── clean_theme_data.dart # Minimal dark theme
│ ├── pastel_theme.dart # Light & dark pastel themes
│ ├── sunset_theme.dart # Warm amber theme
│ └── ocean_theme.dart # Deep sea theme
├── models/
│ ├── location.dart
│ └── weather.dart
├── providers/
│ ├── location_provider.dart
│ ├── settings_provider.dart
│ ├── theme_provider.dart # Runtime theme switching
│ └── weather_provider.dart
├── screens/
│ ├── home_screen.dart
│ ├── search_screen.dart
│ ├── settings_screen.dart
│ ├── splash_screen.dart
│ ├── splash/ # Per-theme splash screens
│ └── debug_weather_screen.dart
├── services/
│ ├── weather_service.dart
│ ├── location_service.dart
│ ├── storage_service.dart
│ ├── notification_service.dart
│ ├── background_sync.dart
│ ├── push_service.dart
│ └── widget_service.dart
├── utils/
│ ├── date_utils.dart
│ ├── unit_converter.dart
│ └── weather_utils.dart
└── widgets/
├── cyberpunk/ # Glitch FX, HUD, cyber cards
├── pastel/ # Pastel backgrounds & cards
├── themed/ # Theme-aware wrappers
├── common/
└── weather/ # Weather display widgets
GitHub Actions automatically builds a signed APK on push to master and creates a GitHub Release with the APK attached.
| Permission | Purpose |
|---|---|
INTERNET |
Fetch weather data |
ACCESS_FINE_LOCATION |
GPS-based weather |
ACCESS_COARSE_LOCATION |
Approximate location fallback |
ACCESS_BACKGROUND_LOCATION |
Background weather sync |
POST_NOTIFICATIONS |
Weather alerts & briefings |
RECEIVE_BOOT_COMPLETED |
Restart background sync after reboot |
- Data source: Open-Meteo
- Framework: Flutter
Built by Sappy
