Case Studies Archive
Internship Project

Digital Signage - PLN UPDL Palembang

A serverless digital signage system powered by Next.js and Google Workspace. It transforms Google Sheets data into a real-time, premium glassmorphism TV display for classroom schedules with zero learning curve for admins.

Year2026
Role
Duration
Read Time4 min
Digital Signage - PLN UPDL Palembang

Why This Matters

UPDL Palembang holds multiple training classes in different rooms every day. New participants often don't immediately know which room to go to. The front office also potentially receives the same questions repeatedly regarding classroom locations. Information that is easily accessible as soon as participants enter the building will improve the participant experience while reducing manual communication load.

The Problem

The schedule data is actually available, but it was only used for internal operational needs. TVs in public areas were not utilized as real-time information media, so participants still had to ask the staff. As a result, information was not disseminated proactively.

Existing Workflow

Admin updates spreadsheetData is updated but only used for internal administration.
Participants arriveParticipants arrive at the building.
Manual inquiryParticipants search for info manually or ask staff.
TV inactiveTV does not display learning information.

Constraints

  • Zero budget for commercial Digital Signage CMS.
  • Schedules are already managed via Google Spreadsheet, so we cannot change the admin's workflow.
  • Multiple TVs will display the same information.
  • TVs run continuously all day, so the page must be stable for long-term use.
  • The display must be easily readable from a distance.

Stakeholders

  • Trainees (Peserta Diklat)
  • Front Office
  • Learning Admins (Admin Pembelajaran)
  • UPDL Management

Success Criteria

  • Admins continue working using the exact same spreadsheet.
  • The TV always displays today's learning schedule.
  • No manual browser refreshing is required.
  • All TVs always display the latest synced data.
  • The interface is highly legible from a distance.

Goals

  • Transform a spreadsheet into a real-time data source.
  • Eliminate the need for manual TV updates.
  • Display information that participants actually need.
  • Ensure all TVs are always synchronized.

Before vs After

Before

Spreadsheet was only used by admins.

After

Spreadsheet becomes the single source of truth.

Before

TVs provided no contextual information.

After

TVs automatically update when the spreadsheet changes.

Before

Participants had to ask staff.

After

Participants instantly know their room locations.

Before

Manual or non-existent TV updates.

After

Zero manual refresh required.

Architecture

Google Sheets

Admin updates schedule

Apps Script

Acts as a REST API

Next.js

Fetches & renders UI

Auto Polling

Background sync

Engineering Decisions

DecisionAlternativesWhy This Choice
Google Spreadsheet as Source of TruthCustom Database (PostgreSQL/MongoDB) with Admin PanelRespects the constraint of not changing the admin workflow. Building a new admin panel would require training and change management for a process that already works.
Google Apps Script as Backend APINode.js Server parsing Sheets APIZero infrastructure cost and avoids managing complex OAuth credentials. GAS acts as a simple, stateless JSON endpoint.
Next.js for FrontendVanilla HTML/JS or React SPANext.js provides excellent routing, component encapsulation, and potential for future API route additions if the architecture scales.
Client-side Polling over Manual RefreshManual Refresh by Admin or WebSocketsWebSockets weren't possible natively with GAS. Polling at reasonable intervals ensures TVs are always synced without any human intervention or heavy server load.
No Additional DatabaseCaching layer (Redis/Supabase)Keeps the architecture strictly serverless and zero-cost. The scale of requests (a few TVs polling every few minutes) is well within Google's quota limits.

Implementation Details

Admins only need to update their usual spreadsheet. Google Apps Script serves this data as a JSON REST API. The Next.js frontend, displayed on the TVs, periodically polls this API. If a schedule change occurs, the TV display updates automatically without anyone needing to touch the TV or refresh the browser.

Challenges

Designing a UI that remains legible across various TV sizes and distances was challenging. Another challenge was determining an efficient polling interval so data updates quickly without hitting Apps Script rate limits. Finally, ensuring the Single Page Application (SPA) remains stable without memory leaks when running continuously for hours on a Smart TV browser.

Gallery

Real-time Display
Real-time DisplayThe main TV interface showing active classes.

Business Impact

Information is now available proactively. Participants find their classrooms much faster, resulting in the front office receiving significantly fewer repetitive questions. The internal spreadsheet gained immense value by doubling as a public information source.

Technical Achievement

Successfully transformed an internal operational spreadsheet into a real-time digital signage system using a serverless architecture with zero additional infrastructure costs.

Lessons Learned

Digital transformation does not always mean building a completely new system from scratch. In many cases, the best engineering solution is to extend the value of the systems the organization is already using comfortably.

What I Would Do Differently Today

If the data source were to change from Google Sheets, I would implement WebSockets or Server-Sent Events (SSE) instead of polling. I would also add remote device monitoring, offline caching for network drops, and a health check dashboard to manage multiple screens.