Case Study

Mr Fogg’s Departure Board for Raspberry Pi

A custom fullscreen departure board app for Raspberry Pi, inspired by vintage railway signage and built in Next.js with Figma-led implementation, live rail data integration, kiosk-mode optimisation and a bespoke analog clock.

mrfoggs departures board raspberry pi

Project overview

This project involved designing and building a fullscreen digital departures board web app inspired by a vintage railway split-flap and station-board aesthetic. The goal was to create something visually distinctive enough for a hospitality venue or public-facing display, while still behaving like a practical live information screen in kiosk mode.

The app was built as a modern Next.js application with a server-side API route, a Figma-led implementation workflow and a layout tuned for 16:9 TV displays. It combines a heritage-style visual system with live rail departure data, automated pagination, status highlighting and a custom analog clock designed to match the board styling.

Rather than treating this as a generic dashboard, the work focused on recreating the feel of the Figma concept as closely as possible while also making the app stable enough to run continuously on a Raspberry Pi-powered Chromium kiosk. This kind of delivery sits closest to my work in front-end implementation, custom functionality development and ongoing technical support.

The challenge

The main challenge was combining pixel-accurate design work with real operational requirements. The interface needed to look refined and atmospheric, but also function reliably as a live departures display with minimal maintenance and no user interaction.

Figma fidelity with custom typography
The board had to closely match a highly stylised vintage design, including ornamental details, unusual spacing and a heritage-inspired clock.
Live data within a presentation-led interface
Real departure information needed to be normalised into a clean, readable board format without breaking the visual rhythm of the design.
Kiosk-mode reliability
The app needed to run fullscreen, refresh automatically, avoid unnecessary input requirements and behave safely when the network or upstream API failed.
Performance on lightweight hardware
The interface was intended for Raspberry Pi and Chromium kiosk usage, so the implementation had to stay visually rich without becoming heavy or unstable.

What was delivered

The project was delivered as a custom Next.js application using App Router, Tailwind CSS and TypeScript, with the interface implemented from a connected Figma file and refined through multiple visual correction passes. The work covered both front-end presentation and the supporting API layer required to fetch, cache and stabilise live departures data.

Fullscreen departures board interface
Built a 16:9, TV-ready board layout designed for fullscreen display with a dark heritage colour palette and strong visual hierarchy.
Figma-led implementation workflow
Used Figma MCP context, screenshots and asset extraction to align the live interface closely with the approved visual design.
Live departures API route
Created a server-side /api/departures endpoint to fetch National Rail data, normalise it and cache responses safely.
Analog clock component
Built a real-time updating analog clock styled to match the board, including multiple correction passes to improve hand alignment and visual fidelity.
Automatic pagination and refresh behaviour
Added timed page rotation, periodic refreshes and graceful fallback to cached data when live data is unavailable.
Kiosk optimisation
Tuned the app for no-scroll, no-mouse fullscreen usage with wake-lock support and lightweight client-side updates.

Core functionality included

Custom departures board layout
A bespoke vintage-inspired board designed for large-format TV or monitor display.
Real-time analog clock
A live updating station-style clock component integrated into the board header area.
National Rail data integration
Server-side data fetching through a dedicated API route prepared for Darwin/LDBWS credentials.
30-second server caching
Departure responses are cached to reduce unnecessary upstream requests and improve resilience.
Fallback and stale-data handling
If the upstream feed fails, the board continues to show the most recent cached data or bundled fallback data.
Automatic page cycling
The board rotates through multiple pages of rows automatically, keeping the display readable at a distance.
Status-based visual treatment
On-time, delayed, expected and cancelled services are styled differently to improve legibility and urgency.
Kiosk-ready behaviour
The app supports fullscreen Chromium use on Raspberry Pi hardware with minimal operator interaction.

Key architecture decisions

A key decision was to build the project as a compact custom application rather than a CMS-driven site or a more complex dashboard platform. That kept the codebase focused, made kiosk behaviour easier to control and allowed the board to remain visually precise.

Another important architectural choice was separating live data concerns from presentation. The departures board itself remains a display layer, while data fetching, caching and fallback handling live behind a dedicated API route. That separation makes the board easier to maintain, easier to test and safer to run in environments where live transport feeds are not always reliable.

Design-first implementation
The app was built around Figma as the visual source of truth rather than relying on generic dashboard patterns.
Separated UI and data layers
Presentation components and live rail data logic were kept distinct to improve maintainability.
Fixed-ratio display strategy
The board was designed around a 16:9 TV ratio to maintain consistent presentation in fullscreen environments.
Resilience-first data handling
Caching and fallback behaviour were included from the start so the board remains usable even during API failure.

Results and outcomes

The result is a custom digital departures board that feels visually distinctive and purpose-built rather than template-driven. It reproduces the atmosphere of the original design while also delivering the practical behaviour needed for a public-facing screen.

The final implementation supports live departures, automated updates, pagination, status signalling and kiosk display behaviour in a single focused application. It also created a reusable foundation for similar venue, hospitality or transport-themed display systems in future.

High-fidelity board design
The interface was closely aligned to the supplied Figma layout, spacing, palette and ornamental details.
Functional live-data display
The board is ready to consume National Rail departure data through a structured server-side route.
Improved kiosk-readiness
Auto-refresh, page rotation and screen-friendly behaviour support long-running unattended display use.
Readable status communication
Delays, expected times and cancellations are surfaced more clearly through colour and motion treatment.
Stable fallback behaviour
Cached and sample data paths prevent the board from collapsing when live data is temporarily unavailable.
Reusable front-end foundation
The project now has a clean component structure that can be extended for arrivals boards, venue signage or other display systems.

Technology used

The project was built with Next.js App Router, TypeScript and Tailwind CSS, using a custom server-side API route for data fetching and in-memory caching. The interface was implemented against a connected Figma file using MCP-based design context and asset extraction, and prepared for National Rail Darwin/LDBWS integration and Raspberry Pi Chromium kiosk deployment.

The work overlaps most closely with theme and front-end implementation, custom development and technical support for long-term maintenance.

Next steps

This project demonstrates how a design-led display interface can still be engineered as a reliable operational product. The next logical step would be to connect production National Rail credentials, deploy to the target kiosk hardware and complete final QA on the physical screen environment.

From there, the same platform could be extended into arrivals boards, event signage, hospitality wayfinding or branded display systems for transport-adjacent venues. If you need a custom display interface, kiosk application or design-led front-end system, the most relevant starting points are usually front-end implementation, custom development and ongoing technical support.

Looking for similar outcomes? Start with Theme Development and browse more project examples.

Need Similar Results?

Let's discuss how I can help scale your website with a custom solution.

Newsletter

Get useful WordPress emails

Practical fixes, cleaner SEO wins, and lessons from real builds.

Double opt-in required. The checklist is sent only after confirmation.

💡

About This Project

This case study showcases my expertise in web development, demonstrating how I help UK businesses achieve their digital goals through custom solutions, performance optimization and strategic implementation. If you need a similar approach, explore Theme Development and practical implementation guides.

Want Similar Results for Your Business?

Let's discuss how I can help scale your website with a custom solution tailored to your business needs. From performance optimization to complete redesigns, I deliver results that drive growth.

Free 30-minute consultation • No commitment required • For business ready