"Breathe, breathe in the air. Don't be afraid to care." - Pink Floyd, The Dark Side of the Moon
Breathe is a modern, MD3 Android application designed to monitor real-time Air Quality Index (AQI) levels across J&K & Ladakh. Built with Kotlin and Jetpack Compose, it provides a clean, fluid interface to track pollution levels using the Indian National Air Quality Index (NAQI) standards.
- Check the breathe api repo to know how the AQI is calculated.
- Material Design 3 Expressive
- AMOLED Dark Theme Support
- Supports devices running Android 8.1 and above
- Fluid Animations and interactive UI
- Advanced animation options
- AQI Spectrum
- Real-time Monitoring
- US and Indian AQI standards
- Detailed Breakdown
- Cigarette equivalence
- A map with data laid across
- 24 Hour graph of AQI Data
- Detailed extended graph data for sensor based locations
- Widget Support
- Language: Kotlin
- UI Framework: Jetpack Compose (Material3)
- Architecture: MVVM (Model-View-ViewModel)
- Networking: Retrofit & Gson
- Concurrency: Kotlin Coroutines & Flow
- Theme: Dynamic Material You (Monet)
The project follows a standard but modularized android app structure.
├── data/
│ ├── AnimationSettings.kt
│ ├── BreatheApi.kt
│ └── Models.kt
├── navigation/
│ └── Navigation.kt
├── ui/ # All UI related code
│ ├── components/ # Reusable UI elements (Cards, Graphs, Dashboards)
│ │ ├── CardComponents.kt
│ │ ├── DashboardComponents.kt
│ │ └── GraphComponents.kt
│ │ └── MorphingPill.kt
│ └── screens/ # Full-page screen composables
│ ├── ExploreScreen.kt
│ ├── HomeScreen.kt
│ ├── MapScreen.kt
│ └── SettingsScreen.kt
├── util/ # Helper functions and extensions
│ └── Utils.kt
│ └── IndiaBoundaryOverlay.kt
├── viewmodel/ # Caching and loading
│ └── BreatheViewModel.kt
├── widgets/ # Widget logic
│ ├── BreatheWidget.kt
│ ├── BreatheWidgetWorker.kt
│ └── WidgetActions.kt
└── MainActivity.kt # Application Entry Point
- Android Studio Hedgehog or newer.
- JDK 17.
- A running instance of the Breathe Backend (Python/FastAPI).
-
Clone the repository:
git clone https://github.com/breathe-OSS/breathe && cd breathe -
Open in Android Studio.
- Alternatively, if you have the command line launcher configured:
studio .
- Configure the API Endpoint:
- Open
app/src/main/java/com/sidharthify/breathe/data/BreatheApi.kt. - Update
BASE_URLto point to your backend server (e.g., your local IP if running locally).
- Build and Run:
- GUI: Sync Gradle files, select your device, and click Run.
- Terminal: Ensure your device is connected (
adb devices) and run:./gradlew installDebug
Publicly available AQI data for the J&K & Ladakh region is currently unreliable. Most standardized sources rely on sparse sensor networks or algorithmic modeling that does not accurately reflect ground-level realities. This results in widely varying values across different platforms. Google, for example, shows values that are insanely low, but they are usually off by a huge margin.
Breathe aims to solve this by strictly curating sources and building a ground-truth network.
Used for all pollutant values for most regions in J&K & Ladakh. Open-Meteo's satellite-based air quality model provides stable and consistent values that generally fall within the expected range of nearby ground measurements.
-
Air quality & pollutant data: Open-Meteo Air Quality API
-
Weather forecasts & historical data: Open-Meteo
Used for other regions where we have gotten contributions to, the sensors are deployed in real time.
- Their website: AirGradient
This provides accurate values of PM10 and PM2.5. Other values are fetched from Open-Meteo (like O₃ and NO₂)
The limitations of our current project is that we do not have ground sensors in every region and are mostly relying on satellite data, so the data is not 100% accurate.
We are actively working to deploy custom physical sensors to improve data density in Jammu. If you are interested in hosting a sensor node, please contact us at: contact@breatheoss.app
We have deployed AirGradient sensors in Jammu, Srinagar, Leh, Rajouri, Doda, Samba, Udhampur & Bandipora (as of 28/07/26) which provide an accurate measurement of PM10 and PM2.5 values. We are working to deploy them in all other regions.
This project is fully Free & Open Source Software (FOSS).
- sidharthify (Lead Dev)
- Flashwreck (Lead dev and devops maintainer)
- SleeperOfSaturn (iOS app co-lead)
- Lostless1907 (Contributor and developer)
- suveshmoza (Contributor and developer)
- empirea9 (Contributor)




