An open API service indexing awesome lists of open source software.

https://github.com/andrew-a-a/location_reminder

Android app that allows users to set reminders based on their location.
https://github.com/andrew-a-a/location_reminder

android-application androidkotlin espresso-tests firebase-auth geofencing google-maps google-maps-api location

Last synced: 23 days ago
JSON representation

Android app that allows users to set reminders based on their location.

Awesome Lists containing this project

README

          

# πŸ“ Location Reminder

> A geo-fencing task manager for Android β€” set reminders that trigger automatically when you arrive at a location.

[![Kotlin](https://img.shields.io/badge/Kotlin-7F52FF?style=flat&logo=kotlin&logoColor=white)](https://kotlinlang.org/)
[![Android](https://img.shields.io/badge/Android%20SDK-3DDC84?style=flat&logo=android&logoColor=white)](https://developer.android.com/)
[![Firebase](https://img.shields.io/badge/Firebase%20Auth-FFCA28?style=flat&logo=firebase&logoColor=black)](https://firebase.google.com/)
[![Google Maps](https://img.shields.io/badge/Google%20Maps%20API-4285F4?style=flat&logo=googlemaps&logoColor=white)](https://developers.google.com/maps)
[![Udacity](https://img.shields.io/badge/Udacity-Nanodegree%20Capstone-02B3E4?style=flat&logo=udacity&logoColor=white)](https://www.udacity.com/)

---

## Overview

**Location Reminder** lets users create to-do reminders that fire a notification the moment they enter a defined geographic area β€” no manual checking required. Built as the capstone project for the [Udacity Advanced Android Kotlin Developer Nanodegree](https://www.udacity.com/certificate/e/f2e634c8-f94b-11ec-987c-0b9c8416d65c), it demonstrates a complete production-ready Android app with authentication, map interaction, background geofencing, and local persistence.

---

## Features

- πŸ” **Firebase Authentication** β€” sign in with your Google/Gmail account in one tap
- πŸ—ΊοΈ **Interactive Map** β€” long-press anywhere on the map to drop a pin and set it as your reminder trigger zone
- πŸ”” **Geo-fence Notifications** β€” background geofence monitors your location; a notification fires automatically when you enter the target area
- πŸ“‹ **Reminder List** β€” view all your saved reminders with title, description, and linked location
- ✏️ **Edit & Delete** β€” manage your reminders with full CRUD support
- πŸ”‹ **Battery-efficient** β€” uses Android's Geofencing API for low-power background tracking

---

## Screenshots

### Authentication




The app uses **Firebase Authentication** to provide seamless sign-in with Gmail β€” no separate account registration needed.

---

### Adding a Reminder & Selecting a Location





Users can add a new reminder with a title and description, then open the map to tap exactly where the reminder should activate β€” anywhere in the world.

---

### Geo-fence Notification



Once the user enters the selected area, a notification fires instantly β€” showing the reminder title and the name of the reached place β€” even when the app is in the background.

---

## Tech Stack

| Layer | Technology |
|---|---|
| Language | Kotlin |
| Architecture | MVVM (ViewModel + LiveData) |
| Authentication | Firebase Authentication (Google Sign-In) |
| Maps & Location | Google Maps SDK, Android Location Services |
| Geo-fencing | Android Geofencing API |
| Local Persistence | Room Database |
| Dependency Injection | Koin |
| Navigation | Android Navigation Component |
| Build | Gradle |

---

## Architecture

The app follows the **MVVM** pattern with a clean separation of concerns:

```
UI Layer β†’ Fragments + ViewModels (LiveData observations)
Domain Layer β†’ Repository pattern for data access abstraction
Data Layer β†’ Room (local DB) + Firebase (auth) + Geofencing API
```

---

## Getting Started

### Prerequisites

- Android Studio Flamingo or later
- Android device or emulator running API 26+
- Google Maps API key
- Firebase project with Authentication enabled (Google Sign-In)

### Setup

1. **Clone the repository**
```bash
git clone https://github.com/Andrew-A-A/Location_Reminder.git
cd Location_Reminder
```

2. **Add your Google Maps API key**

In `local.properties`:
```
MAPS_API_KEY=your_api_key_here
```

3. **Connect Firebase**
- Create a Firebase project at [console.firebase.google.com](https://console.firebase.google.com)
- Enable **Authentication β†’ Google Sign-In**
- Download `google-services.json` and place it in the `/app` directory

4. **Build and run**

Open in Android Studio and run on your device or emulator.

---

## Project Background

Built as the **capstone project** for the Udacity Advanced Android Kotlin Developer Nanodegree (Aug–Sep 2022). The goal was to deliver a fully functional, architecturally sound Android app combining authentication, maps, background services, and local persistence β€” demonstrating mastery of the modern Android development stack.