OC.HiddenDashboard
A fun Umbraco package that adds a hidden dashboard accessible via a configurable key sequence, with full extensibility for third-party packages to register their own hidden content.
- ๐ฎ Key Sequence Activation - Hidden dashboard revealed with a configurable key sequence
- ๐ง Fully Configurable - Customize title, key sequence, and control example extensions via appsettings.json
- ๐ฏ Extensible - Third-party packages can register their own hidden content
- ๐จ Example Extensions - Includes working Pac-Man game and documentation examples
- ๐ฆ Type Safe - Full TypeScript support for extension development
dotnet add package OC.HiddenDashboardAdd to your appsettings.json:
{
"OC.HiddenDashboard": {
"KeySequence": ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight"]
}
}Note: If KeySequence is not set or is empty, the hidden dashboard will not be accessible.
- Navigate to Umbraco Content section
- Press the configured key sequence (example above is the Konami code: โ โ โ โ โ โ)
- The hidden dashboard appears!
{
"OC.HiddenDashboard": {
"KeySequence": ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight"],
"DashboardTitle": "Secret Developer Tools",
"ShowExampleExtensions": false,
"DisabledExampleExtensions": ["OC.HiddenDashboard.PacmanGame"]
}
}| Option | Type | Default | Description |
|---|---|---|---|
KeySequence |
string[] | [] (disabled) | Array of key codes to activate dashboard. Required to enable the dashboard. |
DashboardTitle |
string | "Hidden Dashboard" | Title shown in the dashboard |
ShowExampleExtensions |
boolean | true | Show/hide all built-in examples |
DisabledExampleExtensions |
string[] | [] | Array of specific extensions to disable |
NoExtensionsMessage |
string | "No hidden content..." | Custom empty state message |
ShowExtensibilityHint |
boolean | true | Show hint about third-party extensions |
Classic Konami Code:
{
"OC.HiddenDashboard": {
"KeySequence": ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight"]
}
}Simple Custom Sequence:
{
"OC.HiddenDashboard": {
"KeySequence": ["h", "i", "d", "d", "e", "n"]
}
}Production Setup (Hide All Examples):
{
"OC.HiddenDashboard": {
"KeySequence": ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight"],
"ShowExampleExtensions": false
}
}Hide Only Pac-Man:
{
"OC.HiddenDashboard": {
"KeySequence": ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight"],
"DisabledExampleExtensions": ["OC.HiddenDashboard.PacmanGame"]
}
}Custom Branding:
{
"OC.HiddenDashboard": {
"KeySequence": ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight"],
"DashboardTitle": "๐ง Internal Tools"
}
}Third-party packages can register their own hidden content that appears in the dashboard.
import { LitElement, html, customElement } from "@umbraco-cms/backoffice/external/lit";
import { UmbElementMixin } from "@umbraco-cms/backoffice/element-api";
@customElement("my-secret-tools")
export class MySecretToolsElement extends UmbElementMixin(LitElement) {
render() {
return html`
<div>
<h2>๐ง My Secret Tools</h2>
<p>Hidden developer tools for advanced users</p>
</div>
`;
}
}
export default MySecretToolsElement;import type { ManifestBase } from "@umbraco-cms/backoffice/extension-api";
export const manifests: Array<ManifestBase> = [
{
type: "hiddenContent",
alias: "MyPackage.SecretTools",
name: "My Secret Tools",
meta: {
label: "Developer Tools",
description: "Hidden tools for advanced users",
icon: "icon-wrench",
},
element: () => import("./my-secret-tools.element.js"),
} as any,
];Your extension will automatically appear in the hidden dashboard sidebar when users enter the Konami code!
The package includes two example extensions:
Demonstrates how to create custom hidden content with documentation and interactive demos.
A fully playable classic Pac-Man game with:
- Classic gameplay and ghost AI
- Power pellets and scoring
- High score tracking (localStorage)
- Keyboard controls
Controls:
- Arrow Keys: Move
- P or Space: Pause
- CONFIGURATION.md - Complete configuration guide with examples
- EXTENSIBILITY.md - Quick start for package developers
- EXTENSION-USAGE.md - Detailed API reference and examples
- PACMAN.md - About the Pac-Man easter egg
- Umbraco CMS 17.0+
- .NET 10
- Node.js LTS (for development)
# Build TypeScript/Client
cd Client
npm install
npm run build
# Build .NET
dotnet buildcd Client
npm run watchPerfect for:
- ๐ Debug panels and diagnostics
- ๐๏ธ Feature flag management
- ๐ Performance monitoring tools
- ๐จ Easter eggs and fun content
- ๐ Administrative utilities
- ๐ฎ Games and interactive content
Contributions welcome! Please see CONTRIBUTING.md for guidelines.
MIT License. See LICENSE for details.
Created by Owain.Codes
Made with โค๏ธ for the Umbraco community