Skip to content

rankupgames/Remote-Display-Nodes

Repository files navigation

Ducks Unlimited Remote Display Nodes

Windows WPF display-node client for the Ducks Unlimited kiosk and remote exhibit display demo system. The client connects to the SignalR backend, receives assigned templates and media, and renders fullscreen display experiences.

Portfolio home and related work: migueldevs.com.

Portfolio Context

This repository is a public-facing portfolio/source snapshot, not a hardened production deployment. Internal context notes, local runtime profiles, screenshots, and machine artifacts are intentionally excluded. The bundled fonts, images, and video are demo assets for showing the kiosk experience.

Before publishing publicly, confirm permission to show any client branding, Ducks Unlimited references, QR codes, screenshots, imagery, and bundled demo media.

Role In The System

Remote-Display-Nodes is the runtime used by physical or simulated exhibit displays.

DU-Demo-CMS-Panel or Jahia-CMS-Panel
  -> DU-Demo-Server /serverhub
  -> Remote-Display-Nodes
  -> fullscreen kiosk/display templates

On connection, a node registers its profile with the server. The server can assign a template, request screenshots, and provide content/media through stream methods. The client downloads required media, updates local state, and renders the selected template.

Backend Contract

The client side expects the backend hub to support:

  • RegisterClientNode for node registration.
  • UpdateNodeProfileInClient when the server confirms or updates node profile state.
  • RequestTemplateFromServer and UpdateTemplateInClient for assigned templates.
  • DownloadFromStorageStream for template content/media.
  • UploadMediaToStorageStream and UpdateScreenshotInServer for screenshot/status reporting.

The admin frontend can be either DU-Demo-CMS-Panel or Jahia-CMS-Panel; the display node should not need to care which operator surface made the assignment.

What It Shows

  • SignalR connection management and reconnect handling.
  • Fullscreen kiosk/display mode with a demo/debug overlay.
  • Template-driven rendering for slideshow and information showcase experiences.
  • Media download, caching, and playback for image, video, and audio content.
  • Screenshot/status reporting back to the management server.

Tech Stack

  • .NET 8 WPF desktop application.
  • Microsoft.AspNetCore.SignalR.Client.
  • Newtonsoft.Json for content/template payloads.
  • Serilog console sink.
  • Bundled Montserrat typography and kiosk media assets.

Repository Layout

src/App.xaml                 Application entry point
src/MainWindow.xaml          Main kiosk display surface and hub wiring
src/Core/                    Client profile and template models
src/System/Handler/          Template, content, media, and showcase handlers
src/Views/Pages/             Display pages
config/                      Demo client configuration
assets/                      Kiosk imagery, icons, fonts, and media

Running Locally

This is a Windows WPF application.

dotnet restore ProjectDUClientNode.csproj
dotnet build ProjectDUClientNode.csproj
dotnet run --project ProjectDUClientNode.csproj

Building from macOS or Linux requires explicit Windows targeting and still does not replace a real Windows runtime test:

dotnet build ProjectDUClientNode.csproj -p:EnableWindowsTargeting=true

The checked-in configuration points at demo/local infrastructure and can be changed locally for another SignalR host. In the current source, the connection code builds both demo and localhost URLs and then connects to the localhost URL; update that before live demo use.

Release Notes

  • The largest tracked asset is a bundled demo video, which is intentional for the exhibit snapshot.
  • Local macOS verification without Windows targeting fails with NETSDK1100, which is expected for a Windows WPF target.
  • Do not treat the checked-in config as production configuration.
  • Runtime-generated profile, media-cache, and screenshot files are ignored.

What I Would Do Differently

  • Move server URL selection fully into config and remove hardcoded host selection from the window code.
  • Add a headless/client-state test layer around template and content handlers.
  • Split bundled demo media from source and load it through a seed/sample-content process.
  • Add a Windows CI build and a manual kiosk QA checklist for fullscreen behavior, reconnects, media playback, and screenshot reporting.
  • Make client identity and node registration authenticated before using this on an exposed backend.

Related Repositories

  • DU-Demo-Server: ASP.NET Core SignalR/API backend.
  • DU-Demo-CMS-Panel: standalone web CMS/admin interface.
  • Jahia-CMS-Panel: original Jahia CMS module integration and alternate admin frontend.

About

Portfolio snapshot of a WPF remote display-node client for Ducks Unlimited kiosk experiences.

Resources

License

Stars

1 star

Watchers

2 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages