Architecture Overview
The License Plate Recognition System is a service-oriented application, designed for containerized deployment. The entire system is orchestrated using Docker Compose.
Services
The system is composed of the following services:
analytics-service: Provides analytics and insights on the collected license plate data.auth-service: Handles user authentication and authorization, integrating with Active Directory.data-collection-service: Polls the Synology NAS for new images, sends them to the Plate Recognizer service, and stores the results in the database.notification-service: Sends notifications (e.g., email) based on predefined rules and events.web-service: The frontend application, built with Next.js, that provides the user interface for the system.plate-recognizer: A third-party service that performs the actual license plate recognition.postgres: The PostgreSQL database that stores all the application data.db-prestart: A service that runs database migrations before the other services start.postgres-backup: A service that performs periodic backups of the database.grafana: Visualization Service for the ingestion data from the data-collection service
Data Flow
- The
data-collection-serviceperiodically fetches images from a Synology NAS. - These images are sent to the
plate-recognizerservice, which detects and reads license plates. - The results from the
plate-recognizerservice are then stored in thepostgresdatabase by thedata-collection-service. - The
web-serviceprovides a user interface to view the collected data, and it communicates with the other backend services (analytics-service,notification-service,auth-service) to provide various features. - The
notification-servicecan be configured to send alerts based on the data collected. - The
analytics-serviceprovides data for dashboards and reports in theweb-service.
Containerization
All services are containerized using Docker. This allows for a consistent and reproducible deployment across different environments. The docker-compose.*.yaml files define the services, their dependencies, and their configurations.