Skip to content

Latest commit

 

History

104 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Digital Signage Management System

A full-stack distributed system for managing a network of digital billboard installations (LED walls) across a city. Built for the Web Systems Design and Architecture course at the University of Palermo.

The system simulates a real-world smart city infrastructure: administrators manage billboard installations and advertising schedules through a web console, while each billboard autonomously cycles through animated ad creatives and reports its activity back to a central monitoring service.


Architecture

The system is composed of two independent Java web services sharing a MySQL database:

Architecture

gestione (Spring Boot 3.2) handles the admin side: managing billboard installations (impianti) with GPS coordinates, assigning advertising schedules (palinsesti), serving the LED wall player, and proxying external API calls (weather via Open-Meteo, news via NewsAPI, geocoding via OpenStreetMap Nominatim).

monitoraggio (Jakarta Servlet 6.0 on Tomcat 10.1) is a lightweight monitoring service: it queries the database, writes installation status to TSV files, and renders an interactive map showing which billboards are active, inactive, or offline in real time.


Features

  • LED Wall player — cycles animated HTML/CSS ad creatives with configurable durations; overlays real-time clock, Palermo weather (Open-Meteo API), and a scrolling Italian news ticker (NewsAPI/ANSA)
  • 10 animated ad creatives — Tesla, Arc'teryx, Guinness, McDonald's, Omega, Phone 2a, Lidl, Pizza, Tommy Hilfiger, Arancine di Palermo
  • XML-based schedule system — playlists (palinsesti) defined in XML, validated against XSD/DTD schemas; each installation is assigned a schedule
  • Role-based access control — Spring Security 6 with BCrypt; ADMIN role for full management, USER role for read-only access
  • Interactive monitoring map — OpenLayers 2 + OpenStreetMap; color-coded pins (green/yellow/red) based on heartbeat signal recency (2-minute threshold)
  • Report generation — filterable display logs (by date range, ad name, operator COUNT/SUM); export to PDF (iText) or Excel (Apache POI)
  • Geocoding autocomplete — address-to-coordinates lookup via OpenStreetMap Nominatim when placing new installations

Ad Creatives

The billboard content is built as standalone animated HTML/CSS pages. Each can be previewed directly in a browser without running the server.

All brand names, logos, and images used in the ad creatives are property of their respective owners and are used solely for educational and demonstration purposes in this non-commercial university project.

Creative Path
Tesla Roadster gestione/src/main/resources/static/cartelloni/tesla/tesla.html
Arc'teryx gestione/src/main/resources/static/cartelloni/arcteryx/arcteryx.html
Guinness gestione/src/main/resources/static/cartelloni/guinness/guinness.html
McDonald's gestione/src/main/resources/static/cartelloni/mc/mc.html
Omega Speedmaster gestione/src/main/resources/static/cartelloni/omega/omega.html
Nothing Phone 2a gestione/src/main/resources/static/cartelloni/phone2a/phone2a.html
Lidl gestione/src/main/resources/static/cartelloni/lidl/lidl.html
Pizza gestione/src/main/resources/static/cartelloni/pizza/pizza.html
Tommy Hilfiger gestione/src/main/resources/static/cartelloni/tommy/tommy.html
Arancine gestione/src/main/resources/static/cartelloni/arancine/arancine.html

Tech Stack

Layer Technology
Backend (gestione) Java 17, Spring Boot 3.2.3, Spring Security 6, Spring Data JPA
Backend (monitoraggio) Java 17, Jakarta Servlet 6.0, Apache Tomcat 10.1
Database MySQL 8
Templating Thymeleaf
Mapping OpenLayers 2, OpenStreetMap
Reports Apache POI (Excel), iText 5 (PDF)
External APIs Open-Meteo (weather), NewsAPI (news ticker), OpenStreetMap Nominatim (geocoding)
Infrastructure Docker, Docker Compose, Colima (macOS)

Getting Started

Prerequisites

Setup

# 1. Clone the repository
git clone https://github.com/dqvid3/digital-signage-system.git
cd digital-signage-system

# 2. Configure environment
cp .env.example .env
# Edit .env and add your NewsAPI key (free at https://newsapi.org)

# 3. Start Colima (macOS only — skip if using Docker Desktop)
colima start

# 4. Build and start all services
docker compose up -d

On first run, Docker will download base images and build the two services (~3-5 minutes).

URLs

Service URL
Management console http://localhost:8080/gestione
LED Wall (installation 1) http://localhost:8080/impianto?id=1
Reports http://localhost:8080/reportistica
Monitoring map http://localhost:8081/resources/static/mappa/monitoraggio.html

Default Credentials

Username Password Role
davidebonura 124 ADMIN
gabrielebova01 prova ADMIN
ciaosalvo qwerty USER

Stopping

docker compose down

Configuration

Environment variables (.env)

Variable Description Required
NEWS_API_KEY API key from newsapi.org — free tier works No (news ticker disabled if missing)

The NewsAPI key is never exposed to the browser. The LED wall fetches news via a server-side proxy endpoint (/news) in the gestione service.


Database

The schema and seed data are in database/db_monitoraggio.sql. It pre-populates:

  • 5 billboard installations across Palermo (Stazione Centrale, UniPA, Piazza Castelnuovo, etc.)
  • 5 advertising schedules (XML playlists)
  • 10 ad creatives
  • 3 user accounts
  • 100 randomized display log entries (database/popola_visualizzazione.sql)

About

Digital billboard management system with LED wall player and real-time monitoring — Web Systems Design and Architecture, MSc @ UniPA 2024

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages