Respira is a mindfulness application designed to help users reduce anxiety and improve focus through guided breathing techniques. Built natively for Android, it features a persistent local database, asynchronous coroutines, and a responsive UI that adapts seamlessly to any device orientation.
- Language: Kotlin
- Architecture: MVVM (Model-View-ViewModel)
- Local Storage: Room SQLite Database
- Asynchrony: Kotlin Coroutines & Flow
- UI Components: ViewBinding, ConstraintLayout, Material Components
| Dashboard | Active Session | Technique Library |
|---|---|---|
![]() |
![]() |
![]() |
| Dashboard (Landscape) | Active Session (Landscape) |
|---|---|
![]() |
![]() |
- Custom Technique Library (CRUD): Users can Create, Read, Update, and Delete personalized breathing rhythms. Data is saved locally using a Room Database and updates the UI instantly via Kotlin
Flow. - State-Aware Timer Engine: The countdown logic utilizes
LiveDataand ViewModels to preserve state across configuration changes (like screen rotations) without resetting the user's session. - 3 Built-In Breathing Modes: Ships with Relax (4-7-8), Calm (5-5-5), and Energize (6-0-2) techniques out of the box, plus any custom rhythms saved to the library.
- Configurable Session Length: Users can set session cycles (1, 3, or 5 rounds) via the Settings menu, persisted across app launches with SharedPreferences.
- Responsive Design: Optimized layouts for both Portrait (Stacked) and Landscape (Split-Screen) utilizing advanced constrained scaling and chaining.
Building Respira was a deep dive into production-level Android development. Key technical takeaways include:
- Local Persistence: Set up Entities, DAOs, and a Room Database instance, bridging the gap between volatile UI data and long-term device storage.
- Fragment Architecture: Transitioned from simple Activities to lifecycle-aware
DialogFragmentpopups to manage modular UI components and handle data passing between contexts safely. - RecyclerView Mastery: Implemented a dynamic
ListAdapterwith aDiffUtilcallback for optimized list rendering, complete with a custom 3-dots popup menu for item-specific actions. - Professional Tooling: Utilized Android Studio's
tools:namespace to bypass layout preview limitations and silence conscious design choices to achieve a perfectly clean, 0-warning accessibility build.
To run this project locally:
- Clone the repository:
git clone https://github.com/yourusername/Respira.git - Open the project in Android Studio.
- Sync the project with Gradle files.
- Build and run on an emulator or physical device running Android API 24+.
Eduardo Bussien




