Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌤️ Atmos - Advanced Weather & Alert System

Kotlin Jetpack Compose Architecture Room Database

Atmos is a highly robust, modern Android weather application built entirely with Kotlin and Jetpack Compose. Going beyond basic weather forecasting, Atmos features a completely custom, background-resilient Danger Alerting System that can wake up the device and ring native alarms when severe weather thresholds (Heat, Wind, Rain) are crossed.


✨ Key Features

  • Real-Time & Offline Weather: Fetches detailed current, hourly, and daily forecasts. Caches the latest data locally using Room so the app works seamlessly offline.
  • Advanced Background Alarms: Users can set custom threshold alerts (e.g., "Wake me up if wind speed exceeds 50 mph"). Powered by AlarmManager, the app bypasses Doze mode, acquires a WakeLock, and triggers a full-screen alarm over the lock screen—even if the app is fully closed.
  • Multi-Location Management (Favorites): Save multiple locations, view them in a dedicated list, and sync weather data across all favorite cities simultaneously.
  • Granular User Preferences: Highly customizable unit settings (Celsius/Fahrenheit/Kelvin, MPH/m/s), multi-language support, and the ability to toggle between live GPS tracking or a manual static location.
  • Modern UI/UX: Built 100% in Jetpack Compose, featuring beautiful gradients, bottom sheets, sliders, and a highly responsive design.

🛠️ Tech Stack & Libraries

Atmos is built using modern Android development practices and libraries:

  • UI: Jetpack Compose for a declarative, reactive UI.
  • Architecture: Clean Architecture + MVVM (Model-View-ViewModel) utilizing Kotlin StateFlow and Coroutines.
  • Dependency Injection: Koin for lightweight, pragmatic DI.
  • Local Storage: * Room Database: For storing offline weather data, saved locations, and user-configured alerts.
    • DataStore (Preferences): For securely storing user settings like units and language.
  • Networking: Retrofit & OkHttp for REST API communication.
  • Background Processing: * AlarmManager & BroadcastReceivers for exact-time, wake-up weather alarms.
    • WorkManager for deferrable background data syncing.

📂 Project Structure (Clean Architecture)

The codebase is strictly separated into three main layers to enforce separation of concerns:

com.example.atmos
│
├── domain/               # 🧠 The core business logic (No Android dependencies)
│   ├── entity/           # Plain data classes (Weather, Alert, UserPreferences)
│   ├── repository/       # Interfaces for data operations
│   └── usecases/         # Single-responsibility actions (e.g., SyncWeatherUseCase, GetCachedWeatherUseCase)
│
├── data/                 # 💾 Data management and API interactions
│   ├── local/            # Room Database, DAOs, and Entities
│   ├── remote/           # Retrofit APIs, DTOs
│   ├── repository/       # Implementations of Domain repositories
│   └── scheduler/        # AlarmManager, BroadcastReceivers, and WorkManager logic
│
└── presentation/         # 📱 UI and State Management
    ├── design_system/    # Compose Themes, Colors, Fonts
    ├── home/             # Home Screen & ViewModel
    ├── alert/            # Weather Alerts Screen, Bottom Sheets, & Alarm UI
    └── favorites/        # Saved Locations Screen & ViewModel

About

A robust, offline-first Android weather app built with Kotlin and Jetpack Compose. Features a custom background Danger Alerting System that wakes the device during severe weather thresholds. Architected with Clean Architecture, MVVM, and Koin.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages