A Todo list android app with location reminders that remind the user to do something when he reaches a specific location using kotlin.
2022-10-17.01-06-13.mp4
As Shown in the test run, the geofence and the notifications work on emulator pixel 3 API 29.
2022-10-17.01-34-05.mp4
All the unit tests as well as the instrumented tests pass.
1. A created project on Firebase console.
2. A created project on Google Cloud console.
Right click on the test
or androidTest
packages and select Run Tests
- All tests and test related functions are properly explained in their respective files.
-
A Login screen to ask users to login using an email address or a Google account. Upon successful login, it navigates the user to the Reminders screen. If there is no account, it navigates to a Register screen.
-
A Register screen to allow a user to register using an email address or a Google account.
-
A home screen that displays the reminders retrieved from local storage. If there are no reminders, it shows a "No Data" indicator. If there are any errors, it displays an error message.
-
A screen that shows a map with the user's current location and asks the user to select a point of interest to create a reminder.
-
An add a reminder screen when a user reaches the selected location. Each reminder should include a title, a description, and the selected location.
-
Reminder data is saved to local storage.
-
For each reminder, a geofence is created that fires up a notification when the user enters the geofencing area.
-
ViewModels, Coroutines and LiveData objects unit tests.
-
A FakeDataSource to replace the Data Layer and test the app in isolation.
-
Used Espresso and Mockito to test each screen of the app:
- DAO (Data Access Object) and Repository classes testing.
- Error messages testing.
- End-To-End testing for the Fragments navigation.
- Koin - A pragmatic lightweight dependency injection framework for Kotlin.
- FirebaseUI Authentication - FirebaseUI provides a drop-in auth solution that handles the UI flows for signing
- JobIntentService - Run background service from the background application, Compatible with >= Android O.