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

https://github.com/mlapaglia/openalprwebhookprocessor

An OpenALPR Webhook Processor for IP Camera Overlays
https://github.com/mlapaglia/openalprwebhookprocessor

angular angular-material asp-net-core docker license-plate-recognition machine-learning

Last synced: 3 months ago
JSON representation

An OpenALPR Webhook Processor for IP Camera Overlays

Awesome Lists containing this project

README

          

# OpenALPR Webhook Processor
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=bugs)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=coverage)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)
[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=mlapaglia_OpenAlprWebhookProcessor&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=mlapaglia_OpenAlprWebhookProcessor)

A comprehensive license plate recognition management system that processes webhooks from OpenALPR web servers, manages IP cameras, and provides intelligent alerting capabilities.
Untitled
## 🎯 Core Features

### License Plate Processing
- **Real-time Processing**: Receives and processes license plate webhooks from OpenALPR web servers
- **Data Storage**: Stores plate numbers, vehicle descriptions, timestamps, and confidence scores
- **Image Management**: Handles full vehicle images and cropped license plate images
- **Statistics**: Tracks plate frequency and visit patterns

### Camera Management
- **Multi-Camera Support**: Manage multiple IP cameras with individual configurations
- **Manufacturer Support**: Compatible with Hikvision and Dahua camera systems
- **Live Overlay Updates**: Display detected license plates directly on camera video feeds
- **Automatic Day/Night Mode**: Schedule sunrise/sunset camera mode switching
- **Focus Control**: Automatic zoom and focus adjustments based on time of day
- **Camera Masking**: Define detection areas to improve accuracy

### Intelligent Alerting
- **Custom Alert Rules**: Set up alerts for specific license plates or patterns
- **Multiple Notification Channels**: Push notifications, Pushover integration, and webhook forwarding
- **Real-time Notifications**: Instant alerts when monitored plates are detected

### Machine Learning Predictions
- **Visit Prediction**: Predict when specific license plates will next appear
- **Pattern Recognition**: Analyze historical data to identify visiting patterns
- **Batch Processing**: Handle multiple prediction requests simultaneously
- **Model Training**: Automatic background model retraining with latest data

## 📊 Management Interface

### Dashboard & Monitoring
- **Live Feed**: Real-time license plate detection updates
- **Search & Filter**: Find specific plates by number, date, or camera
- **Statistics View**: Plate frequency analysis and visit patterns
- **System Logs**: Monitor application activity and troubleshoot issues

### Configuration Management
- **User Management**: Multi-user support
- **Camera Configuration**: Set up overlay text, day/night schedules, and focus settings
- **Alert Configuration**: Configure notification preferences and alert rules
- **Ignore Lists**: Define plates to exclude from processing or alerts
- **Webhook Forwarding**: Send processed data to external systems

### Advanced Features
- **Two-Factor Authentication**: Enhanced security for user accounts
- **Data Enrichment**: Enhance plate data with additional information sources
- **Real-time Updates**: Live system status and connection monitoring
- **Debug Tools**: System diagnostics and scheduled job monitoring

## 🚀 Quick Start

### Command Line
```bash
dotnet ./OpenAlprWebhookProcessor.dll
```

### Docker
```bash
docker run -d \
--name=openalprwebhookprocessor \
--net=bridge \
-v /host/path/:/app/config/ \
-p 3859:80 \
mlapaglia/openalprwebhookprocessor
```

## 📸 Screenshots

### License Plates Dashboard
image

### Camera Configuration
image

### Agent Settings
image

## 🎥 Demo Video
[![IMAGE ALT TEXT HERE](https://img.youtube.com/vi/GqafBPlDC7Q/0.jpg)](https://www.youtube.com/watch?v=GqafBPlDC7Q)

## 📦 Docker Hub
Available at: [mlapaglia/openalprwebhookprocessor](https://hub.docker.com/repository/docker/mlapaglia/openalprwebhookprocessor)

## 💾 Data Storage
The application requires persistent storage for:
- License plate database
- User settings and configurations
- Machine learning models
- Camera snapshots and images

Mount a volume to `/app/config/` to persist data between container restarts.

## 🛠️ Development

### Prerequisites
- [.NET 9 SDK](https://dotnet.microsoft.com/download/dotnet/9.0)
- [Node.js 24+](https://nodejs.org/) and npm
- [Angular CLI](https://angular.io/cli): `npm install -g @angular/cli`

### Getting Started

#### Backend (ASP.NET Core)
1. Navigate to the server project directory:
```cmd
cd OpenAlprWebhookProcessor.Server
```

2. Restore dependencies:
```cmd
dotnet restore
```

3. Start the backend server:
```cmd
dotnet run
```

The backend will start at `https://localhost:5001`

#### Frontend (Angular)
1. Navigate to the client project directory:
```cmd
cd openalprwebhookprocessor.client
```

2. Install dependencies:
```cmd
npm install
```

3. Start the development server:
```cmd
npm start
```

The frontend will start at `https://localhost:4200` and automatically proxy API requests to the backend.

### Running Both Together
For the best development experience, run both the backend and frontend simultaneously:

1. **Terminal 1** - Start the backend:
```cmd
cd OpenAlprWebhookProcessor.Server
dotnet run
```

2. **Terminal 2** - Start the frontend:
```cmd
cd openalprwebhookprocessor.client
npm start
```

3. Open your browser to `https://localhost:4200`

### Running Tests
- **Backend Tests**: `dotnet test` (from the solution root)
- **Frontend Tests**: `npm test` (from the client directory)