Skip to content
Shiny.NET

Apps & Samples Built with Shiny

These are real applications and open-source samples built on top of the Shiny family of libraries. Each entry breaks down which Shiny libraries the project uses and how, with links straight to the relevant documentation.

Building something with Shiny? Open an issue or PR to get it listed here.

Full applications and shipping products.

Moultrie Mobile

Cellular trail-camera and hunt-planning companion

The official Moultrie Mobile app — a comprehensive hunt-planning and wildlife-management platform for iOS and Android. Hunters and land managers control cellular trail cameras and connected feeders remotely (adjusting resolution, detection delay, and upload frequency), receive real-time wildlife alerts, organize photos into smart-tagged albums and 'Buck Lists', and plan hunts with interactive maps, wind forecasting, activity charts, and AI photo filtering. A large, modular app shipping at scale on top of the Shiny stack.

Shiny LibraryHow It's Used
Shiny.BluetoothLEBLE central used to pair with and communicate directly with the hunting cameras and connected feeders — provisioning devices and reading/writing settings over Bluetooth Low Energy.
Shiny.JobsBackground jobs that synchronize camera images, device state, and account data so the app stays usable offline in the field where cellular coverage is unreliable.
Shiny.LocationsGPS tracking for hunting trips — logging location during outings and powering the device-location and map-based scouting features.
Shiny.MediatorIn-process mediator decoupling communication across the app's many large feature modules, keeping a sprawling codebase loosely coupled and maintainable.

MAUI Sherpa

Your guide to .NET MAUI development

A cross-platform desktop app (macOS, Windows, Linux) that manages your .NET MAUI development environment — environment diagnostics via 'MAUI Doctor', Android SDK & emulator management, Apple Developer tooling (Xcode, simulators, certificates, provisioning profiles), device inspectors, the DevFlow remote visual-tree inspector, publish profiles, and GitHub Copilot integration.

Shiny LibraryHow It's Used
Shiny.MediatorCore of the app's architecture — every operation (SDK queries, emulator actions, certificate management, etc.) is modeled as a request/command contract with a dedicated handler, keeping the UI thin and the logic testable.
Shiny.Mediator.Caching.MicrosoftMemoryCacheCaching middleware backed by IMemoryCache so expensive lookups (installed SDK packages, available Xcode versions, device lists) are served from memory instead of being re-queried on every screen.
Shiny.Mediator.MauiMAUI integration that wires the mediator into the app host and surfaces MAUI-specific behaviors (main-thread marshalling, lifecycle-aware event handling) to the Blazor Hybrid UI.
Shiny.Mediator.AppSupportApp-support middleware bundle (offline availability, resilient/retry, and performance-logging behaviors) layered over the mediator pipeline.
Shiny.Blazor.ControlsPowers the DevFlow app inspector UI — a DockHost docking layout, DataGrids for the logs, network and WebView console tabs, a TreeView file browser, and ToastHost notifications.
Shiny.DocumentDb.Sqlite.SqlCipherBacks the encrypted local vault (SqlCipherLocalVaultStore) that keeps sensitive data encrypted at rest.

Shiny Notch

The MacBook camera notch, turned into a live panel

A macOS app (Apple silicon) built with .NET MAUI on the native AppKit head that turns the MacBook camera notch into a live panel. Hover the notch to open it: Now Playing for Apple Music and Spotify, iOS-widget-style weather, today's and tomorrow's calendar, a drag-and-drop file tray, CPU/GPU/memory stats, a camera mirror with looks, voice notes, tasks, a countdown timer and a teleprompter — plus volume and brightness HUDs. While collapsed it peeks either side of the camera with what's playing and the next timer, meeting or forecast. The notch itself is shared code, with Windows and Linux heads in progress. Signed, notarized builds are on the releases page; the source is available to read but not redistribute.

Shiny LibraryHow It's Used
Shiny.Maui.ControlsNotchView, the black surface that grows out of the camera housing and morphs to fit the peek, the panel and the HUD; MotionIconView for the music bars and TableView for Settings.
Shiny.Maui.Controls.DesktopINotchWindowService — the borderless notch window, hover tracking and the camera cut-out size — plus file drop onto the tray and the quick entry popup tasks are typed into.
Shiny.Maui.Controls.CameraCameraView powers the Mirror tab — live preview, looks (Mono, Noir, Sepia, Vivid…), camera choice and photos.
Shiny.CoreHosting, permissions, and IAppStartupInstaller for open at login (an SMAppService login item), including the needs-approval and turned-off states.
Shiny.CalendarEvery calendar on the Mac, feeding the Calendar tab and the "meeting soon" peek, with permissions through Shiny.Core.
Shiny.AudioVoice notes — recording from a chosen microphone with a level meter, and playback.
Shiny.Extensions.StoresAll settings, persisted to NSUserDefaults on macOS (a settings file on the other heads).
Shiny.Extensions.DependencyInjectionSource-generated [Singleton] registration, including each platform head's implementations of the shared platform interfaces.

FileServe

A self-hosted file server for a team, from the system tray

A desktop app for macOS (AppKit), Windows and Linux (GTK4) that keeps to the system tray and serves a browser portal, so nobody has to install a client. Folders on the machine are published to groups with explicit permissions and metered upload/download quotas; every sign-in, transfer and refusal goes to an audit log, with live sessions, bandwidth history, share links, ClamAV/AMSI virus scanning, backup and restore. The same server can host a private NuGet feed and npm registry authenticated with personal access tokens, and open a public tunnel when people are off the LAN. The desktop app has no screens of its own — it is a window onto its own server. Signed, notarized macOS builds are on the releases page; the source is available to read but not redistribute.

Shiny LibraryHow It's Used
Shiny.Net.HttpServerThe whole server — HTTP on every interface, routing, middleware, cookie authentication, host filtering against DNS rebinding, and range-aware file transfers. No ASP.NET Core, so it runs inside the MAUI desktop app.
Shiny.Net.HttpServer.NuGet / .NpmA private NuGet v3 feed at /nuget and npm registry at /npm, authenticated with personal access tokens and governed by the same groups as the file shares.
Shiny.AppDeviceBridgeHosts the Blazor WebAssembly portal straight out of an embedded zip, with signed over-the-air frontend updates, and Shiny.AppDeviceBridge.Tunnel for an optional public https address.
Shiny.DocumentDb.SqliteOne SQLite file holds users, groups, shares, grants, quotas, the activity log and bandwidth history — source-generated JSON with no reflection fallback, and online backup for download and restore.
Shiny.Blazor.ControlsThe portal UI — DataGrid for people, activity and links, PasswordStrength on setup and account screens, TreeView folder picking, docking, file drop for uploads, dialogs and toasts.
Shiny.Maui.Controls.DesktopThe tray icon and its menu on all three platforms, swapping to an active icon while anyone is signed in.
Shiny.NotificationsA desktop notification for the activity events you choose — sign-ins, uploads, refusals — on macOS, Windows and Linux (Shiny.Notifications.Linux).
Shiny.CoreIAppStartupInstaller for start at login, exposed through the admin API so the portal can turn it on — the platform mechanism is picked per head.

Open-source sample apps demonstrating Shiny libraries in action.

GitHub Shine

Shine a spotlight on your GitHub repos

A cross-platform .NET MAUI Blazor Hybrid desktop dashboard (macOS / AppKit, Linux / GTK4, Windows) for monitoring the GitHub repos you care about. It polls GitHub via fine-grained PATs and surfaces stars, forks, issues, pull requests, and CI build status at a glance — with native notifications, a tray menu with a live repo list, drag-to-reorder cards, bulk source archiving, and database backup/restore. It leans heavily on the Shiny stack, making it a great end-to-end reference for combining several Shiny libraries in one app.

Shiny LibraryHow It's Used
Shiny.Mediator (+ .Maui)In-process mediator that models every operation as a request, command, or event with its own handler — the backbone of the app, with the MAUI extension wiring it into the host and main-thread marshalling.
Shiny.Notifications (+ .Linux)Native local notifications for new issues, new pull requests, and failed workflow runs — including the Linux backend so notifications work across all three desktop platforms.
Shiny.DocumentDb.SqliteLocal SQLite document store persisting accounts, repos, and dashboard card order; the whole store is exported/imported as a single SQLite file for the Settings-tab backup & restore.
Shiny.Extensions.StoresKey/value settings store for user preferences — mute state, repository sort order (shared by the sidebar and tray), and the background refresh interval.
Shiny.Extensions.DependencyInjectionSource-generated, attribute-driven service registration that wires up the app's services without hand-written DI boilerplate.
Shiny.Blazor.Controls / Shiny.Maui.Controls.DesktopUI control library powering the Blazor Hybrid front-end (pills, toasts) plus the desktop helpers behind the monochrome template tray icon and its repo menu.

Shiny Wonderland

Real-time Canada's Wonderland park companion

A production-quality .NET MAUI reference app for Canada's Wonderland — real-time ride wait times (sourced from ThemeParks.wiki) with a live map, Siri / Shortcuts / Gemini integration, GPS-based parking locator with a spot photo, meal-time tracking, ride history, and geofenced background notifications. It's a living showcase of how the Shiny libraries fit together in one app.

Shiny LibraryHow It's Used
Shiny.AppFunctionsDeclares the app's key actions (ride wait times, directions to a ride, park hours, weather, save/find parking) once in C#; the source generator emits App Intents for Siri, Spotlight & Shortcuts on iOS and the AppFunctions schema for Gemini on Android 16+. Rides are an [AppEntity] so assistants get a ride picker.
Shiny.Mediator.AppFunctionsRoutes every App Function invocation through a Shiny Mediator handler, so Siri/Gemini share the exact same logic as the UI.
Shiny.Mediator.Maui (+ Sentry)Request/handler pipeline driving every feature (ride data via the ThemeParks API client, parking, meals, weather) with caching/offline middleware, and Sentry integration for tracing and error capture.
Shiny.LocationsDistance-based ride sorting inside the park, a park-arrival geofence reminder, and automatic GPS shutdown outside the park to save battery.
Shiny.JobsBackground jobs that poll ride wait times and drive smart notifications even when the app is backgrounded.
Shiny.NotificationsLocal alerts when ride wait times drop, park-arrival reminders, and meal/drink pass reminders.
Shiny.DocumentDb.SqliteCross-session persistent caching of park data and ride history so the app stays functional when connectivity drops.
Shiny.Maui.Shell (+ UxDivers Dialogs)Shell navigation with source-generated routes and ViewModel lifecycle, plus rich dialogs.
Shiny.Maui.ControlsUI controls including the zoomable image viewer used to capture and review your parking-spot photo.
Shiny.Extensions.DependencyInjectionAttribute-driven, source-generated service registration.
Shiny.Extensions.Localization.Generator / ConfigurationStrongly-typed localization and mobile appsettings.json configuration.

Heads Up

Heads Up party-game clone

A clone of the popular Heads Up party game built with .NET MAUI — flip the phone up to pass or down to mark a correct guess, with AI-generated category answers (including phonetic matching so 'Bell' and 'Belle' count the same), text-to-speech read-out, and saved game history. Generated from the Shiny Templates.

Shiny LibraryHow It's Used
Shiny.SpeechText-to-speech reads the answers aloud during play.
Shiny.DocumentDb.SqliteStores game history and scores in a local SQLite document store.
Shiny.Maui.Shell (+ UxDivers Dialogs)Shell navigation between the category, ready, and game screens, plus dialogs.

Digital Scoreboard

Bluetooth LE football scoreboard

A football scoreboard app built with .NET MAUI that's controlled over Bluetooth LE — host an LED-style scoreboard on a tablet and drive it from a phone, with a floating referee quick-tap card, full-screen half-time timers, and customizable rule sets. Great for little-league games.

Shiny LibraryHow It's Used
Shiny.BluetoothLE.HostingThe tablet hosts a GATT peripheral that advertises and broadcasts live score/clock state.
Shiny.BluetoothLEThe phone acts as a BLE central, connecting to the tablet to send score and clock commands in real time.
Shiny.Maui.ControlsUI controls powering the LED-style display and the floating referee card panel.
Shiny.Maui.ShellShell navigation across the menu, scoreboard, and referee screens.
Shiny.Hosting.MauiShiny app host bootstrapping DI and platform services.

Mediator Sample (EventHub)

End-to-end enterprise Shiny.Mediator sample

An end-to-end, enterprise-style reference showing good practices for large .NET MAUI teams — modular apps with decoupled cross-module communication built on Shiny.Mediator and Prism, backed by a server-side EventHub API that reuses the same mediator contracts.

Shiny LibraryHow It's Used
Shiny.Mediator (+ Maui / Contracts)Requests, commands, and events flow through the mediator on both client and server, sharing a single strongly-typed contracts assembly.
Shiny.Mediator.AspNetExposes mediator handlers directly as the EventHub server API endpoints.
Shiny.Mediator.PrismStrongly-typed Prism navigation expressed as mediator requests implementing IPrismNavigationRequest.
Shiny.Mediator.ResilienceResilience/retry middleware layered onto outbound requests.
Shiny.Extensions.DependencyInjectionSource-generated DI registration so each module registers its own services in isolation.
Shiny.Extensions.ReflectorSource-generated, reflection-free property access.
Shiny.Extensions.Stores / ConfigurationKey/value settings and mobile configuration shared across modules.

Where Are You

Real-time GPS tracking on .NET Aspire + Orleans

A .NET Aspire + Orleans + .NET MAUI app suite that turns raw coordinates into live insights — the MAUI client streams user GPS to an Orleans-backed streaming API, and a web UI renders direction, speed, and location on a live map. The whole stack spins up with F5.

Shiny LibraryHow It's Used
Shiny.LocationsThe MAUI client continuously streams GPS coordinates from mobile/desktop up to the Orleans backend.
Shiny.NotificationsLocal notifications on the client.
Shiny.Maui.ShellShell navigation in the client app.
Shiny.Extensions.DependencyInjectionSource-generated service registration.
Shiny.Hosting.MauiShiny app host bootstrapping the client.

Beat The Bank

Voice-driven game show with CarPlay

A speech-to-text / text-to-speech game built with .NET MAUI, inspired by the radio game — keep opening vaults to grow your winnings, say 'continue' or 'stop', and try to hit the jackpot before the alarm. Shows off voice commands, Apple CarPlay, player-stat tracking, and clean structured code.

Shiny LibraryHow It's Used
Shiny.SpeechSpeech-to-text voice commands ("continue", "stop", "my name is…") and a text-to-speech game-show announcer.
Shiny.Mediator.MauiGame logic modeled as mediator requests/commands.
Shiny.DocumentDb.SqliteTracks player stats and crowns the vault-cracking champion.
Shiny.Maui.Shell (+ UxDivers Dialogs)Shell navigation and dialogs.

KML Recorder

GPS track recorder with KML / GeoJSON export

A .NET MAUI app (iOS & Android) that records GPS coordinates and exports them as KML or GeoJSON — trip check-in/check-out sessions, battery & GPS monitoring, and delivery via email, Azure Blob Storage, system share, or local storage. Also supports Apple CarPlay and Android Auto for hands-free control.

Shiny LibraryHow It's Used
Shiny.LocationsHigh-accuracy GPS listening with an Android foreground-service notification keeping recording alive in the background.
Shiny.DocumentDb.SqliteStores every GPS ping grouped by trip session for later export and filtering.
Shiny.Maui.Shell (+ UxDivers Dialogs)Shell navigation and dialogs.
Shiny.Maui.ControlsUI controls for the recording and trip-management screens.

TuneGames

AI music trivia from your own library

A .NET MAUI music trivia game — pick a category, GPT-4o-mini selects songs and convincing decoys from YOUR device music library, plays short clips back-to-back, and challenges you to identify them against the clock. Detects Apple Music subscriptions for expanded song access.

Shiny LibraryHow It's Used
Shiny.MusicReads the device music library and plays real song clips during each round.
Shiny.DocumentDb.SqlitePersists categories, rounds, and scores.
Shiny.Extensions.StoresKey/value settings storage.
Shiny.Extensions.ReflectorSource-generated, reflection-free property access.
Shiny.Maui.Shell (+ UxDivers Dialogs)Shell navigation and dialogs.
Shiny.Maui.ControlsUI controls.

PlexSuggest

Personalized Plex recommendations (MAUI + CLI)

Personalized recommendations from your Plex library — it analyzes your watch history to surface unwatched movies and shows you'll love, organized into dynamically generated categories and scored 0–100 with an explanation. Ships as both a dotnet CLI tool and a .NET MAUI app, with AOT/trim-safe JSON via source generation.

Shiny LibraryHow It's Used
Shiny.Maui.ShellShell navigation with source-generated routes in the .NET MAUI app.

Disney Droids

Control & chat with Disney Droid Depot droids over BLE

Two cross-platform .NET MAUI apps for discovering, controlling, and chatting with Disney Droid Depot droids over Bluetooth LE. A mobile app (Android & iOS) gives hands-on manual control — scan, connect, drive, rotate the head, and play themed sound banks — while a macOS app turns the droid into an AI companion you chat with in natural language, with GitHub Copilot driving tool-use over the droid's capabilities plus webcam vision. Built on a reusable BLE library that implements Disney's proprietary droid command protocol.

Shiny LibraryHow It's Used
Shiny.BluetoothLECross-platform BLE central that scans for nearby droids, reads RSSI and manufacturer data for droid-type detection, connects, and writes the proprietary droid command protocol (movement, head rotation, sounds).
Shiny.Hosting.MauiShiny app host bootstrapping DI and platform services for the mobile app.
Shiny.Maui.ShellShell navigation with source-generated routes across the scan, control, and chat screens on both the mobile and macOS apps.