Skip to content

shubham-gadekar-alpha/myEyeCare

Repository files navigation

πŸ‘οΈπŸ’§ Eye & Water Reminder App

Play Store
CI

A simple yet powerful reminder app to take care of your eye health and hydration needs. (Currently under review & available for testing only. If you wish to test this app, please share your email so I can send you an invite link.)


πŸ“± About the App

Eye & Water Reminder is an Android application designed to remind users to:

  • Take regular eye breaks (reducing digital strain).
  • Drink enough water throughout the day.

The app is lightweight, simple, and perfect for health-conscious users.
This repository is mainly created for learning purposes and is open to contributions from developers worldwide.


πŸš€ Features

βœ… Smart reminders for both eye breaks & water intake
βœ… Customizable reminder frequency
βœ… User-friendly UI with Material Design
βœ… Lightweight & battery-efficient
βœ… Free & Open Source
βœ… Perfect for Android learning (Jetpack Compose, MVVM, Room, Clean Architecture, etc.)


πŸ›  Tech Stack

  • Language: Kotlin
  • Architecture: MVVM (Model-View-ViewModel) with Clean Architecture
  • UI Toolkit: Jetpack Compose
  • Local Storage: Room Database
  • Dependency Injection: Hilt
  • Async & Reactive: Coroutines & Flow
  • Background Tasks: WorkManager
  • Static Analysis: Detekt (Code quality & lint checks)
  • Unit Testing: JUnit + JaCoCo (Code coverage reports)
  • CI/CD: GitHub Actions (Automated build, unit tests, and linting pipeline)

βš™οΈ CI/CD Pipeline

This project integrates GitHub Actions to ensure high code quality and reliability.
The pipeline includes:

  • πŸ” Detekt Analysis β†’ Automated Kotlin static code analysis for clean, maintainable code.
  • πŸ— Build Verification β†’ Ensures that every commit/PR successfully compiles the Android project.
  • βœ… Unit Test Execution β†’ Runs unit tests with coverage checks to validate correctness.

These checks are triggered automatically on every pull request to maintain project quality.



com.alpha.myeyecare/ 
β”‚ 
β”œβ”€β”€ common/                          
β”‚   β”œβ”€β”€ constants/ 
β”‚   β”‚   β”œβ”€β”€ AppDestinations.kt
β”‚   β”‚   └── ReminderTypes.kt 
β”‚   └── utils/ 
β”‚       β”œβ”€β”€ ExtensionFunctions.kt            
β”‚       └── UtilFunctions.kt         
β”‚ 
β”œβ”€β”€ data/                            
β”‚   β”œβ”€β”€ local/                       
β”‚   β”‚   β”œβ”€β”€ converters/ 
β”‚   β”‚   β”‚   β”œβ”€β”€ Converters.kt 
β”‚   β”‚   β”œβ”€β”€ dao/ 
β”‚   β”‚   β”‚   β”œβ”€β”€ ReminderDao.kt  
β”‚   β”‚   β”œβ”€β”€ entities/ 
β”‚   β”‚   β”‚   β”œβ”€β”€ Reminder.kt  
β”‚   β”‚   └── ReminderDatabase.kt 
β”‚   β”‚ 
β”‚   └── repository/                 # Repository implementation
β”‚       β”œβ”€β”€ SuggectionRepositoryImpl.kt  
β”‚       └── ReminderRepositoryImpl.kt  
β”‚  
β”œβ”€β”€ di/                             
β”‚   β”œβ”€β”€ AppModule.kt 
β”‚   β”œβ”€β”€ DatabaseModule.kt
β”‚   └── RemoteModule.kt 
β”‚
β”œβ”€β”€ domain/                         
β”‚   β”œβ”€β”€ model/ 
β”‚   β”‚   β”œβ”€β”€ DaysOfWeek.kt 
β”‚   β”‚   β”œβ”€β”€ ReminderDetails.kt 
β”‚   β”‚   β”œβ”€β”€ ReminderFrequency.kt 
β”‚   β”‚   └── Suggestion.kt 
β”‚   β”‚ 
β”‚   β”œβ”€β”€ repository/                 # Abstract repository interfaces 
β”‚   β”‚   β”œβ”€β”€ ReminderRepository.kt 
β”‚   β”‚   └── SuggestionRepository.kt 
β”‚   β”‚ 
β”‚   └── usecase/                   
β”‚       β”œβ”€β”€ CheckReminderStatusUseCase.kt 
β”‚       β”œβ”€β”€ GetReminderDetailsUserCase.kt 
β”‚       β”œβ”€β”€ SaveReminderUseCase.kt  
β”‚       └── SaveSuggestionsUseCase.kt 
β”‚ 
β”œβ”€β”€ presentation/                  
β”‚   β”œβ”€β”€ navigation/ 
β”‚   β”‚    └── NavGraph.kt  
β”‚   └── ui/                   
β”‚       β”œβ”€β”€ common/ 
β”‚       β”‚   └── CommonUI.kt
β”‚       β”œβ”€β”€ detailsScreen/ 
β”‚       β”‚   β”œβ”€β”€ SetupReminderScreen.kt
β”‚       β”‚   └── SetupReminderViewModel.kt
β”‚       β”œβ”€β”€ home/ 
β”‚       β”‚   └── HomeScreen.kt 
β”‚       β”œβ”€β”€ splash/ 
β”‚       β”‚   β”œβ”€β”€ SplashScreen.kt
β”‚       β”‚   └── SplashViewModel.kt 
β”‚       β”œβ”€β”€ suggestion/ 
β”‚       β”‚   β”œβ”€β”€ SuggestionSubmissionViewModel.kt 
β”‚       β”‚   └── UserSuggestionScreen.kt
β”‚       β”œβ”€β”€ theme/ 
β”‚       β”‚   β”œβ”€β”€ Color.kt 
β”‚       β”‚   β”œβ”€β”€ Theme.kt 
β”‚       β”‚   └── Type.kt 
β”‚       └── userPermission.kt  
β”œβ”€β”€ Worker/                  
β”‚   β”œβ”€β”€ ReminderScheduler.kt
β”‚   └── ReminderWorker.kt 
β”œβ”€β”€ MainActivity.kt                   
└── MyApplication.kt                 


πŸ“Έ Screenshots

Home Screen Reminder Screen Settings

🀝 Contributing

We welcome contributions! πŸš€
If you’d like to add new features, improve UI/UX, or optimize performance:

  1. Fork this repo 🍴
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request πŸŽ‰

Every PR will go through automated build, lint, and test checks before merging.


πŸ‘¨β€πŸ’» Developers

  • Shubham Gadekar (Developer)
  • Nitin Tyagi (Developer)
  • Open to all contributors! Add yourself here via PR.

🎯 Why Open Source?

This project is for learning purposes. Developers can explore:

  • Jetpack Compose UI development
  • MVVM with Kotlin
  • Dependency Injection with Hilt
  • Room database
  • WorkManager background scheduling
  • Static analysis & linting with Detekt
  • CI/CD automation with GitHub Actions

πŸ“₯ Download

Get it now on the Play Store:
πŸ‘‰ Download from Play Store


⭐ Support

If you find this project helpful, don’t forget to star ⭐ the repo and share it with others!