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.
- Host: GitHub
- URL: https://github.com/andrew-a-a/location_reminder
- Owner: Andrew-A-A
- Created: 2022-09-22T12:19:25.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-08-11T13:47:52.000Z (almost 3 years ago)
- Last Synced: 2025-10-08T21:37:22.710Z (8 months ago)
- Topics: android-application, androidkotlin, espresso-tests, firebase-auth, geofencing, google-maps, google-maps-api, location
- Language: Kotlin
- Homepage:
- Size: 8.15 MB
- Stars: 1
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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.
[](https://kotlinlang.org/)
[](https://developer.android.com/)
[](https://firebase.google.com/)
[](https://developers.google.com/maps)
[](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.