Skip to content
/ starter Public

An android application that saves locations and notify you when you enter the location zone

Notifications You must be signed in to change notification settings

Hedrax/starter

Repository files navigation

Location Reminder

It is a TO-DO list application with a location feature that reminds the user with actions associated with a location of his choice when he's in the surrounding area.
This project was made within the Android Nanodegree

Project's KeyPoints

  • Firebase Authentication
  • Google Maps API
  • Geofence API
  • MVVM Architecture
  • Testing
    • Unit Tests: ViewModel/LiveData, Test Double (Fake), Coroutines, and Room testing.
    • Integration Tests: Repository-Database, and UI Controller-ViewModel.
    • Instrumentation: Fragment Test, Activity Test, and Application Navigation.

Built with

  • Kotlin: Default language used to build this project
  • RecyclerView: A ViewGroup that contains the views corresponding to your data. Each individual element in the list is defined by a view holder object.
  • Navigation Component: Android Jetpack's Navigation component, used for Fragment-based navigation
  • Coroutines: A concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
  • Firebase Auth: backend services for use the SDKs and in-built UI libraries to authenticate the user in the application
  • Mockito: a Java-based framework used for unit testing of Java applications.
  • Maps SDK: a library for embedding highly customized maps within Android applications
  • Material Component: Interactive building blocks for creating a user interface.
  • Android Architecture Components: a collection of libraries that help design robust, testable, and maintainable apps: Room (a SQLite object mapping library), LiveData (builds data objects that notify views when the underlying database changes), ViewModel (stores UI-related data that isn't destroyed on app rotations)
  • Databinding: A Jetpack support library that allows to bind UI components in your layouts to data sources in your app using a declarative format rather than programmatically
  • Android Jetpack WorkManager library: allows to schedule work to run one-time or repeatedly using flexible scheduling windows.

ScreenShots

Welcoming Page Selecting Login method Selection Map
Selecting Location Details Fragment Listing Fragment

How to use

  1. Register with your account or link with your google account to the appliction.
  2. Click on the floating red (save icon) button in the listing screen after the authentication process.
  3. Click on Add reminder button
  4. Select location on the map
  5. Add title of the place you want to save.
  6. Add describtion of the location which will be selected (optional)
  7. Click on save reminder
  8. Make sure to give Background permission
  9. It's all set and you're geofence is active