Add Egyptian escape room digital lock web app.

React/Vite lock UI with color-coded inputs, celebration SFX, and unlock video; Docker/nginx packaging and homelab deploy scripts documented in AGENTS.md.
This commit is contained in:
2026-06-11 09:10:56 -04:00
parent 7daf88fee6
commit 32a0331e8b
35 changed files with 3780 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
import type { MediaConfig } from './mediaConfig';
export function playClip(src: string): HTMLAudioElement {
const audio = new Audio(src);
void audio.play();
return audio;
}
export function playIncorrectSound(incorrectUrl: string) {
playClip(incorrectUrl);
}
type CelebrationConfig = Pick<
MediaConfig,
| 'unlockConfirmUrl'
| 'celebrationPopUrl'
| 'celebrationHornUrl'
| 'celebrationHornDurationMs'
>;
/** Confirm, pop, and horn together; horn is trimmed — ends before unlock video audio. */
export function playCelebrationSounds(config: CelebrationConfig) {
playClip(config.unlockConfirmUrl);
playClip(config.celebrationPopUrl);
const horn = playClip(config.celebrationHornUrl);
window.setTimeout(() => {
horn.pause();
horn.currentTime = 0;
}, config.celebrationHornDurationMs);
}