Overview
Contribute Signage is a cloud-based digital signage platform that lets organizations design layouts in the browser and push them to fleets of display players, primarily Android, from a single web control panel. A user composes a signage screen on a drag-and-drop canvas, mixing images, video, web/RSS feeds, clocks, and weather widgets, schedules it, assigns it to device groups/channels, and the connected players pull and render it. Emergency messages can be broadcast to every screen at once.
The system is a multi-part ecosystem: a PHP (CodeIgniter 3) + MySQL web control panel with a Fabric.js WYSIWYG editor, Node.js services for real-time messaging and layout rendering, an MQTT command channel to the devices, and Android playback apps (two generations of Ionic/Angular players, plus early Electron-desktop and native-Android builds). It served education and corporate environments, with license-key-based commercial licensing. I led full-stack development across the control panel, the real-time/back-end services, and the Android player apps, with one additional developer.
Key Achievements
The web control panel, built on PHP (CodeIgniter) + MySQL, covers layouts, the media library, devices, playback groups/channels, schedules, users/roles, licenses, and emergency warnings, each with its own controller/model. The Fabric.js WYSIWYG layout editor gives non-designers a canvas-based drag-and-drop designer with matching preview and LED-preview renderers, and content tooling includes Pixabay stock-image search, the Froala rich-text editor, an RSS fetcher, and weather/clock widgets.
Device commands are delivered over an MQTT command channel (CloudMQTT via the SAM PHP library), publishing to per-device topics so the panel can address individual screens or groups in real time. A Socket.io server handles real-time message broadcast between the panel and connected clients, and a separate Node.js API/worker (Express + Sequelize/MySQL) uses Puppeteer for server-side layout rendering, node-cron for scheduled jobs, and Nodemailer for email. The emergency messaging system (the Warning module) broadcasts crisis messages across all connected displays simultaneously.
The primary, shipped playback apps are the Android players: v1 is built on Ionic + Angular + Cordova, with localStorage-based offline layout caching and network online/offline checks; v2 is built on Ionic + Angular + Capacitor, with SQLite offline storage, Firebase Crashlytics, and in-app APK self-update for managed display fleets. Two further targets were started but kept minimal and experimental - an Ember.js + Electron desktop build and an early native Android (Java) player.
Impact & Results
Contribute Signage delivered a complete cloud signage platform, letting organizations design in the browser, schedule, group, and push layouts to display fleets from one panel. The Fabric.js drag-and-drop editor with stock imagery and dynamic widgets made signage creation accessible to non-designers, while the MQTT command channel enabled real-time control of devices, addressable per device or per group, with instant emergency broadcast across all connected screens.
The platform supported commercial licensing via a license-key system with role-based access control, and shipped offline-capable, self-updating Android players across two generations. The product was sustained and evolved over roughly three years, from the 2018 control panel to the 2020 Capacitor-based, offline, self-updating Android player.
Share