Skip to content

A threshold-based monitoring service that detects zone activity from a Query Gateway and sends alerts when predefined limits are exceeded.

Notifications You must be signed in to change notification settings

gabrielmendezsoares/fence-tracker

Repository files navigation

🚧 Fence Tracker

📋 Overview

Fence Tracker is a zone-based monitoring and alerting service that identifies when activity levels within specific geographic or logical zones exceed a configured threshold. It fetches data from a centralized Query Gateway, evaluates it against defined rules, and sends alerts when meaningful increases occur.

To prevent redundant notifications, Fence Tracker persists the last triggered state for each zone in a MySQL database. When a new threshold multiple is crossed, it formats and dispatches a structured alert message via an external messaging system.

🎯 Objectives

  • Fetch the latest fence activity data using a named query from the Query Gateway
  • Detect when the quantity per zone exceeds a defined threshold (e.g., 50)
  • Persist trigger states in a MySQL database using Prisma to track previously alerted values
  • Prevent duplicate alerts by only triggering when thresholds escalate beyond prior values
  • Generate structured alert messages containing relevant zone and account information
  • Send alerts to a configurable external messaging endpoint
  • Use Basic and Bearer authentication strategies for secure communication with the Query Gateway
  • Provide a scalable and maintainable alert pipeline for fence-based activity monitoring

📦 Quick Start

⚠️ Prerequisites

  • Node.js20.14.0JavaScript runtime environment
  • MySQL8.0Relational database
  • Query Gateway3.0.3Configurable data query service

⚙️ Setup

# Clone & navigate
git clone <repository-url> && cd fence-tracker

# Configure environment
cp .env.example .env  # Edit with your settings

# Install dependencies (auto-runs database setup)
npm install

💡 Database: Import storage.sql.example before running npm install


⚡ Usage

🛠️ Development

npm run start:development

🏗️ Production

npm run build && npm run start:production

📚 Command Reference

🧰 Core

Command Description
npm run start:development Start the application in development
npm run start:production Start the application in production
npm run build Build the application for production
npm run build:watch Build the application with watch mode
npm run clean Clean application build artifacts

🛢️ Database

Command Description
npm run db:pull Pull database schema into Prisma across all schemas
npm run db:push Push Prisma schema to the database across all schemas
npm run db:generate Generate Prisma Client for all schemas
npm run db:migrate:dev Run development migrations across all schemas
npm run db:migrate:deploy Deploy migrations to production across all schemas
npm run db:studio Open Prisma Studio (GUI) across all schemas
npm run db:reset Reset database (pull + generate) for all schemas

🐳 Docker

Command Description
npm run docker:build:development Build Docker image for development
npm run docker:build:production Build Docker image for production
npm run docker:run:development Run development Docker container
npm run docker:run:production Run production Docker container
npm run docker:compose:up:development Start Docker Compose in development
npm run docker:compose:up:production Start Docker Compose in production
npm run docker:compose:up:build:development Start & rebuild Docker Compose in development
npm run docker:compose:up:build:production Start & rebuild Docker Compose in production
npm run docker:compose:down Stop Docker Compose services
npm run docker:compose:logs View Docker Compose logs
npm run docker:prune Clean up unused Docker resources

🧪 Testing

Command Description
npm test Run all tests once
npm run test:watch Run tests in watch mode
npm run test:coverage Run tests and generate a coverage report

About

A threshold-based monitoring service that detects zone activity from a Query Gateway and sends alerts when predefined limits are exceeded.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published