https://github.com/binaryshrey/udacity-location-reminder
https://github.com/binaryshrey/udacity-location-reminder
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/binaryshrey/udacity-location-reminder
- Owner: binaryshrey
- Created: 2023-06-03T17:11:12.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-06-04T06:00:13.000Z (over 2 years ago)
- Last Synced: 2025-02-16T11:11:53.385Z (12 months ago)
- Language: Kotlin
- Size: 7.76 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Location Reminder
A Todo list app with location reminders that remind the user to do something when he reaches a specific location. The app will require the user to create an account and login to set and access reminders.
## Getting Started
1. Clone the project to your local machine.
2. Open the project using Android Studio.
### Dependencies
```
1. A created project on Firebase console.
2. A create a project on Google console.
```
### Installation
Step by step explanation of how to get a dev environment running.
```
1. To enable Firebase Authentication:
a. Go to the authentication tab at the Firebase console and enable Email/Password and Google Sign-in methods.
b. download `google-services.json` and add it to the app.
2. To enable Google Maps:
a. Go to APIs & Services at the Google console.
b. Select your project and go to APIs & Credentials.
c. Create a new api key and restrict it for android apps.
d. Add your package name and SHA-1 signing-certificate fingerprint.
c. Enable Maps SDK for Android from API restrictions and Save.
d. Copy the api key to the `google_maps_api.xml`
3. Run the app on your mobile phone or emulator with Google Play Services in it.
```
## Testing
Right click on the `test` or `androidTest` packages and select Run Tests
### Break Down Tests
Explain what each test does and why
```
1.androidTest
//TODO: Students explain their testing here.
2. test
//TODO: Students explain their testing here.
```
## Project Instructions
1. Create a Login screen to ask users to login using an email address or a Google account. Upon successful login, navigate the user to the Reminders screen. If there is no account, the app should navigate to a Register screen.
2. Create a Register screen to allow a user to register using an email address or a Google account.
3. Create a screen that displays the reminders retrieved from local storage. If there are no reminders, display a "No Data" indicator. If there are any errors, display an error message.
4. Create 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.
5. Create a screen to add a reminder when a user reaches the selected location. Each reminder should include
a. title
b. description
c. selected location
6. Reminder data should be saved to local storage.
7. For each reminder, create a geofencing request in the background that fires up a notification when the user enters the geofencing area.
8. Provide testing for the ViewModels, Coroutines and LiveData objects.
9. Create a FakeDataSource to replace the Data Layer and test the app in isolation.
10. Use Espresso and Mockito to test each screen of the app:
a. Test DAO (Data Access Object) and Repository classes.
b. Add testing for the error messages.
c. Add End-To-End testing for the Fragments navigation.
## Student Deliverables:
1. APK file of the final project.
2. Git Repository or zip file with the code.
## Built With
* [Koin](https://github.com/InsertKoinIO/koin) - A pragmatic lightweight dependency injection framework for Kotlin.
* [FirebaseUI Authentication](https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md) - FirebaseUI provides a drop-in auth solution that handles the UI flows for signing
* [JobIntentService](https://developer.android.com/reference/androidx/core/app/JobIntentService) - Run background service from the background application, Compatible with >= Android O.
## License