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.
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 Library | How It's Used |
|---|---|
| Shiny.Mediator | Core 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.MicrosoftMemoryCache | Caching 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.Maui | MAUI 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.AppSupport | App-support middleware bundle (offline availability, resilient/retry, and performance-logging behaviors) layered over the mediator pipeline. |
Samples
Section titled “Samples”Open-source sample apps demonstrating Shiny libraries in action.
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 Library | How 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.Sqlite | Local 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.Stores | Key/value settings store for user preferences — mute state, repository sort order (shared by the sidebar and tray), and the background refresh interval. |
| Shiny.Extensions.DependencyInjection | Source-generated, attribute-driven service registration that wires up the app's services without hand-written DI boilerplate. |
| Shiny.Blazor.Controls / Shiny.Maui.Controls.Desktop | UI control library powering the Blazor Hybrid front-end (pills, toasts) plus the desktop helpers behind the monochrome template tray icon and its repo menu. |
A production-quality .NET MAUI reference app for Canada's Wonderland — real-time ride wait times (sourced from ThemeParks.wiki), a voice AI park assistant, GPS-based parking locator, meal-time tracking, and geofenced background notifications. It's a living showcase of how the Shiny libraries fit together in one app.
| Shiny Library | How It's Used |
|---|---|
| Shiny.Mediator.Maui | Request/handler pipeline driving every feature (ride data via the ThemeParks API client, parking, meals); AI tools are source-generated from the contracts (ShinyMediatorGenerateAITools). |
| Shiny.AiConversation (+ GitHub Copilot) | Voice-driven AI assistant with animated listening / thinking / speaking phases, using the GitHub Copilot chat-client provider. |
| Shiny.Locations | Distance-based ride sorting inside the park, geofence reminders on entry/exit, and automatic GPS shutdown outside the park to save battery. |
| Shiny.Jobs | Background jobs that poll ride wait times and drive smart notifications even when the app is backgrounded. |
| Shiny.Notifications | Local alerts when ride wait times drop and geofence-triggered park entry/exit reminders. |
| Shiny.DocumentDb.Sqlite | Cross-session persistent caching of park data so the app stays functional when connectivity drops. |
| Shiny.Maui.Shell (+ UxDivers Dialogs) | Shell navigation with source-generated routes and AI extensions, plus rich dialogs. |
| Shiny.Maui.Controls | UI controls including the zoomable image viewer used to capture and review your parking-spot photo. |
| Shiny.Extensions.MauiHosting / Localization.Generator / Configuration | Modular MAUI host wiring, strongly-typed localization, and mobile configuration. |
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 Library | How It's Used |
|---|---|
| Shiny.Speech | Text-to-speech reads the answers aloud during play. |
| Shiny.DocumentDb.Sqlite | Stores 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. |
| Shiny.Extensions.MauiHosting | Modular MAUI host configuration. |
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 Library | How It's Used |
|---|---|
| Shiny.BluetoothLE.Hosting | The tablet hosts a GATT peripheral that advertises and broadcasts live score/clock state. |
| Shiny.BluetoothLE | The phone acts as a BLE central, connecting to the tablet to send score and clock commands in real time. |
| Shiny.Maui.Controls | UI controls powering the LED-style display and the floating referee card panel. |
| Shiny.Maui.Shell | Shell navigation across the menu, scoreboard, and referee screens. |
| Shiny.Hosting.Maui | Shiny app host bootstrapping DI and platform services. |
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 Library | How 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.AspNet | Exposes mediator handlers directly as the EventHub server API endpoints. |
| Shiny.Mediator.Prism | Strongly-typed Prism navigation expressed as mediator requests implementing IPrismNavigationRequest. |
| Shiny.Mediator.Resilience | Resilience/retry middleware layered onto outbound requests. |
| Shiny.Extensions.DependencyInjection | Source-generated DI registration so each module registers its own services in isolation. |
| Shiny.Reflector | Source-generated, reflection-free property access. |
| Shiny.Extensions.Stores / Configuration | Key/value settings and mobile configuration shared across modules. |
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 Library | How It's Used |
|---|---|
| Shiny.Locations | The MAUI client continuously streams GPS coordinates from mobile/desktop up to the Orleans backend. |
| Shiny.Notifications | Local notifications on the client. |
| Shiny.Maui.Shell | Shell navigation in the client app. |
| Shiny.Extensions.DependencyInjection | Source-generated service registration. |
| Shiny.Hosting.Maui | Shiny app host bootstrapping the client. |
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 Library | How It's Used |
|---|---|
| Shiny.Speech | Speech-to-text voice commands ("continue", "stop", "my name is…") and a text-to-speech game-show announcer. |
| Shiny.Mediator.Maui | Game logic modeled as mediator requests/commands. |
| Shiny.DocumentDb.Sqlite | Tracks player stats and crowns the vault-cracking champion. |
| Shiny.Maui.Shell (+ UxDivers Dialogs) | Shell navigation and dialogs. |
| Shiny.Extensions.MauiHosting | Modular MAUI host configuration. |
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 Library | How It's Used |
|---|---|
| Shiny.Locations | High-accuracy GPS listening with an Android foreground-service notification keeping recording alive in the background. |
| Shiny.DocumentDb.Sqlite | Stores every GPS ping grouped by trip session for later export and filtering. |
| Shiny.Maui.Shell (+ UxDivers Dialogs) | Shell navigation and dialogs. |
| Shiny.Maui.Controls | UI controls for the recording and trip-management screens. |
| Shiny.Extensions.MauiHosting | Modular MAUI host configuration. |
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 Library | How It's Used |
|---|---|
| Shiny.Music | Reads the device music library and plays real song clips during each round. |
| Shiny.DocumentDb.Sqlite | Persists categories, rounds, and scores. |
| Shiny.Extensions.Stores | Key/value settings storage. |
| Shiny.Extensions.Reflector | Source-generated, reflection-free property access. |
| Shiny.Maui.Shell (+ UxDivers Dialogs) | Shell navigation and dialogs. |
| Shiny.Maui.Controls / Extensions.MauiHosting | UI controls and modular MAUI host configuration. |
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 Library | How It's Used |
|---|---|
| Shiny.Maui.Shell | Shell navigation with source-generated routes in the .NET MAUI app. |