Live in production

Eyeon Portal

Digital signage for shopping malls, One desk controlling every promotional screen across a mall group, with paper posters retired for good.

  • React
  • Next.js
  • Node.js
  • TypeScript
  • PostgreSQL
  • Firebase
Same morningCampaign turnaround
< 10 secPublish to screens
Plays from cacheNetwork drops

Background

Before the portal existed, the mall group ran promotions the old way: design a poster, print a few dozen copies, drive them out to each location, and hope somebody remembered to take them down when the deal ended. Expired offers stayed on walls for days. A flash sale could be over before its poster went up. The group wanted screens in place of paper, and one desk from which to run all of them.

Challenges

  • Expiry had to be exact. A “50% off until 6 pm” banner still glowing at 7 pm is a customer-service problem, not a technical detail.
  • Mall networks are hostile. Kiosks sit on shared Wi-Fi that drops for minutes at a time, and a screen that goes blank with the network was unacceptable.
  • The people running campaigns are marketers, not IT staff. Scheduling two weeks of content across three malls had to feel like using a calendar, not deploying software.

Solution

We built the portal in two halves. The admin side, React and Next.js over a Node.js/TypeScript API with PostgreSQL, is where campaigns live: a calendar of slots per screen and per mall, with start and end times, previews, and an audit trail of who changed what. The display side is deliberately simple: each kiosk runs a full-screen web client that subscribes to its own channel in Firebase and plays whatever its schedule says.

Firebase handles the real-time push, publish a campaign and every affected screen switches within seconds. For the network problem, each kiosk caches its full playlist and assets locally: when the Wi-Fi drops, the screen keeps playing from cache and reconciles the moment it reconnects. Expiry times are enforced on the kiosk itself, so a dead network can never keep a dead deal alive.

Key features

  • Calendar-based scheduler with per-screen, per-mall targeting
  • Real-time publish, content reaches every kiosk in seconds
  • Offline-first kiosks that keep playing through network drops
  • Expiry enforced on the kiosk itself, so offers never outlive themselves
  • Roles and a full audit trail for marketing teams

Outcome

Campaign turnaround went from a week of printing to same-morning.

Facing a similar problem?

Tell us about it in your own words. We'll scope it with you and put the plan in writing.

Contact us