A Todo list app with location reminders that remind the user to do something when he reaches a specific location.

Overview

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
        // DONE: Students explain their testing here.
        a. RemindersDaoTest to test the RemindersDao interface
        b. RemindersLocalRepositoryTest to test the RemindersLocalRepository class
        c. ReminderListFragmentTest to test the ReminderListFragment
        d. RemindersActivityTest to do an end-to-end test

2. test
        // DONE: Students explain their testing here.
        a. A FakeDataSource class is created for double test
        b. LiveDataTestUtil and MainCouroutineRule has been added to accomplish the tests
        c. RemindersListViewModelTest to test the RemindersListViewModel
        d. SaveReminderViewModelTest to test the SaveReminderViewModel

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 with the code.

Built With

  • 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.

License

You might also like...
An Android Todo List app

Todo List App An android Todo List app I am creating this project to teach myself about SQLDelight, Dependency Injection using Hilt, and Android Archi

An android app that allows building a todo list

Project 1 - SimpleToDo1 SimpleToDo1 is an android app that allows building a todo list and basic todo items management functionality including adding

ToDo list is a sample project for save task and complete they. developed with Kotlin , Coroutins and Dagger-Hilt Dependency injection.
ToDo list is a sample project for save task and complete they. developed with Kotlin , Coroutins and Dagger-Hilt Dependency injection.

ToDo list is a sample project for save task and complete they. developed with Kotlin , Coroutins and Dagger-Hilt Dependency injection.

This application is purpose to help user create todo activities.
This application is purpose to help user create todo activities.

To Do This application is purpose to help user create todo activities. Download App Features List Tasks Sort Tasks Add, Update and Delete Task Clean a

Google map location tracker uploading current to realtime database and displaying location information from firebase realtime.

WEEK-8-SQ009-ANDROID LOCATION - GROUP WORK (2) Problem Description Track your partner(s). Implementation 1: You are to build a map application to show

Xposed module which will set location where you want without effect mock location.
Xposed module which will set location where you want without effect mock location.

GPS Setter Support/Discussion: XDA thread As most of GPS spoof app not working anymore coz some are old and some are not proper implement with current

An App based on MVVM architecture to track & store a user's runs using Google Maps, with options to view & sort the runs as per the user's choice along the with option to run the app in background.
An App based on MVVM architecture to track & store a user's runs using Google Maps, with options to view & sort the runs as per the user's choice along the with option to run the app in background.

An App based on MVVM architecture to track & store a user's runs using Google Maps, with options to view & sort the runs as per the user's choice along the with option to run the app in background.

Realtime SOS Android Application. Location (GPS + Cellular Network) tracing application by alerting guardians of the User.

WomenSaftey Women Safety Android Application: Realtime SOS Android Application. Designed a Location (GPS + Cellular Network) tracing application by al

An app that displays the list of top headlines and when the user clicks on a news story
An app that displays the list of top headlines and when the user clicks on a news story

News Feed Android App (Summary) This app works as an app that shows the recent n

Owner
Virginia Redondo
Virginia Redondo
Android-TODO-LIST-VIPER - Android TODO LIST VIPER

Android TODO List VIPER VIPER is an architectural approach for iOS mobile app de

Allan Nava 1 May 26, 2022
SimpleTodo - An android app that allows building a todo list and basic todo items management functionality

Pre-work - SimpleTodo SimpleTodo is an android app that allows building a todo l

null 0 Dec 31, 2021
Todo-android - To-do App in Andriod that allows building a todo list

To-do App in Andriod todo-android is an android app that allows building a todo

Bernard Mulaw 0 Feb 10, 2022
SimpleToDo is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item.

SimpleToDo is an android app that allows building a todo list and basic todo items management functionality including adding new items, editing and deleting an existing item.

null 0 Jan 3, 2022
This app aims at helping people keep track of their job applications, and remind them regularly about the same.

Applications Tracker Lately I have been applying for many roles, and it has become a hard task to keep track of all the applications. Spreadsheets are

Kartik Pant 4 Feb 20, 2022
LocationPhoneMode - The app will ask the user to allow it to track the user location

LocationPhoneMode The app will ask the user to allow it to track the user locati

null 1 Jan 11, 2022
Movie Info - MovieInfo app that recieves popular movies and allow the user to search for specific movie through the restapi

Movie_Info MovieInfo app that recieves popular movies and allow the user to sear

inderjeet yadav 3 Jun 8, 2022
ToDo App is a kind of app that generally used to maintain our day-to-day tasks or list everything that we have to do

ToDo App is a kind of app that generally used to maintain our day-to-day tasks or list everything that we have to do, with the most important tasks at the top of the list, and the least important tasks at the bottom. It is helpful in planning our daily schedules.

Hamza Gamal 9 Oct 16, 2022
Personal notes and reminders app

Notes App App de anotações e lembretes pessoais, onde é possível adicionar um título com texto de componente, mudar a cor do lembrete, editar ou delet

Ruan Ruiz 1 Mar 4, 2022