Skip to content

πŸ“ Location-based alarm system with AI-powered place search. Built with Angular 18, Ionic 8, and Google Gemini AI. Set proximity alerts for destinations.

License

Notifications You must be signed in to change notification settings

toozuuu/GeoSentry

πŸ“ GeoSentry

Location-Based Alarm System with AI-Powered Place Search

Angular Ionic TypeScript License

An intelligent location-based alarm system that helps you monitor proximity to places and get notified when you're near your destinations.


✨ Features

  • πŸ—ΊοΈ AI-Powered Place Search - Use Google Gemini AI to search and find locations
  • πŸ“‘ Real-Time GPS Tracking - Continuous location monitoring with high accuracy
  • 🎯 Distance-Based Alarms - Set alarms based on distance (meters)
  • ⏱️ Time-Based Alarms - Set alarms based on estimated travel time (walking/driving)
  • πŸ“Š Visual Radar Display - Interactive radar view showing all monitored locations
  • πŸ”” Smart Notifications - Browser notifications when alarms trigger
  • πŸ”Š Audio Alerts - Sound alerts for proximity warnings
  • πŸ“± Progressive Web App - Works on mobile and desktop browsers
  • πŸŒ™ Dark Theme UI - Beautiful dark-themed interface
  • πŸ“ Google Maps Integration - Direct links to view places on Google Maps

πŸš€ Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • Google Gemini API Key (Get one here)

Installation

  1. Clone the repository

    git clone https://github.com/toozuuu/GeoSentry.git
    cd GeoSentry
  2. Install dependencies

    npm install
  3. Configure API Key

    Get a Gemini API key from Google AI Studio

    Create src/environments/environment.ts (it's in .gitignore for security):

    export const environment = {
      production: false,
      apiKey: 'YOUR_GEMINI_API_KEY_HERE'
    };

    For production builds, also create src/environments/environment.prod.ts:

    export const environment = {
      production: true,
      apiKey: 'YOUR_GEMINI_API_KEY_HERE'
    };
  4. Run the development server

    npm run dev

    The app will be available at http://localhost:3000

Building for Production

npm run build

The production build will be in the dist/geosentry/browser directory.

πŸ“– Usage

  1. Allow Location Access - Grant the browser permission to access your location
  2. Search for Places - Use the search bar to find locations using AI-powered search
  3. Select a Destination - Click on a search result to select it
  4. Set Alarm Type - Choose between:
    • Distance: Trigger when within X meters
    • Walking Time: Trigger when X minutes away by walking
    • Driving Time: Trigger when X minutes away by driving
  5. Adjust Threshold - Use the slider to set your desired distance/time
  6. Set Alarm - Click "Set Alarm" to start monitoring
  7. Monitor - Watch the radar display and receive notifications when approaching

πŸ—οΈ Project Structure

geosentry/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   └── radar/          # Radar visualization component
β”‚   β”‚   β”œβ”€β”€ home/               # Home page component
β”‚   β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”‚   β”œβ”€β”€ geo.service.ts  # Geolocation services
β”‚   β”‚   β”‚   └── gemini.service.ts # AI place search service
β”‚   β”‚   β”œβ”€β”€ app.component.ts    # Root component
β”‚   β”‚   └── app.routes.ts       # Route configuration
β”‚   β”œβ”€β”€ assets/                 # Static assets
β”‚   β”œβ”€β”€ environments/           # Environment configurations
β”‚   β”œβ”€β”€ types.ts               # TypeScript type definitions
β”‚   β”œβ”€β”€ index.html             # Application entry point
β”‚   └── main.ts                # Application bootstrap
β”œβ”€β”€ angular.json               # Angular configuration
β”œβ”€β”€ package.json               # Dependencies and scripts
└── tsconfig.json             # TypeScript configuration

πŸ› οΈ Tech Stack

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ”’ Security

See SECURITY.md for security policy and vulnerability reporting guidelines.

πŸ“š Additional Documentation

πŸ€” FAQ

Q: Does this work offline?
A: Basic location tracking works, but place search requires an internet connection for the Gemini API.

Q: How accurate is the GPS tracking?
A: Accuracy depends on your device's GPS capabilities. The app uses high-accuracy mode for best results.

Q: Can I use this without an API key?
A: No, the Gemini API key is required for the AI-powered place search feature.

Q: Is my location data stored?
A: No, all location data is processed locally in your browser. No location data is sent to external servers except for place search queries.

πŸ“§ Contact

Project Link: https://github.com/toozuuu/GeoSentry

Issues: https://github.com/toozuuu/GeoSentry/issues


Made with ❀️ using Angular and Ionic

⭐ Star this repo if you find it helpful!

GitHub stars GitHub forks

Releases

No releases published

Sponsor this project

Packages

No packages published