Interactive web experience · Independent project
Digital Carnival
A creator-world interface organised as a six-card tarot table. Navigation, content, atmosphere, sound, and performance controls belong to the same staged scene.
- Scope
- Creative direction · interaction design · front-end implementation
- Runtime
- React 18 · TypeScript · Vite / SWC · raw WebGL
- Input
- Pointer · touch · keyboard · URL hash
- Format
- Single-scene creator identity and content experience

01 World as interface
The content model became the navigation model.
Six parts of the creator identity are represented as tarot roles. Each card owns its artwork, aura, stage settings, summary, highlights, actions, and lore in structured data; the same definition drives the wheel, compact navigation, poster view, and reading ritual.
II · The Technomancer
I · The Performer
III · The SirenOne card definition, four views
Card data is mapped into the carousel, utility navigation, expanded poster, and randomised reading spread.
Selection changes the atmosphere
The active card writes its primary, secondary, accent, and sparkle colours into shared CSS variables.
Metaphor without a dead end
Selection is mirrored into the URL hash. Back, forward, and direct links can restore a specific card.
Illustration and audio credits are not inferred where the project files contain no attribution.
02 Interaction choreography
A route is staged as a sequence.
The main wheel supports click, drag, touch, arrow keys, and compact direct selection. Activating an inactive card brings it forward; activating the focused card opens its full detail. The separate reading mode turns the same deck into a timed three-card flow.
- 01ArriveA staged opening introduces the tent before the interface is exposed.
- 02BrowseSix subjects occupy a radial tarot wheel rather than a page menu.
- 03FocusThe active card expands in place and changes the scene’s colour field.
- 04OpenA second activation moves from card to full poster detail.
- 05ReadAn optional three-card ritual shuffles, draws, reveals, and types a result.
- 06ReturnHash state preserves the selected card without breaking the stage metaphor.

Six slots share a calculated angle around a desktop or mobile radius. Drag distance becomes rotation, then snaps to the nearest card.
One action selects; a second opens. This keeps the full wheel browsable without turning every glance into a modal.
A small state machine controls intro, shuffle, draw, reveal, fortune, and completion rather than relying on one long animation.
03 Rendering system
Atmosphere is composited, not baked into a backdrop.
The deluxe scene adds a raw WebGL pass over the React interface. A second shader handles the poster transition. Both use small fullscreen buffers and explicit fallbacks instead of a scene-graph library.
Atmospheric pass
15 fps cap- 01Fullscreen triangle strip
- 02Time-based grain and layered value noise
- 03Candle flicker weighted by vignette
- 04Slow fog fields rising through the lower frame
- 05Alpha blend over the interface
Burn dissolve
1.6 s pass- 01Transition origin taken from the selected card
- 02Radial distance combined with three noise scales
- 03Moving threshold removes the dark field
- 04Narrow teal edge marks the active boundary
- 05CSS transition remains available without WebGL
04 · Audio direction
The interface has a sound field.
A looped carnival bed runs through Web Audio with a low-pass filter, gain control, and a three-second fade. Quiet tent wind, wood creaks, dark atmosphere, and wind howls are scheduled independently. Card and modal actions draw from small preloaded bell pools with slight pitch variation.
05 Resilience
The spectacle can be turned down without removing the content.
The project treats adaptation as part of the interface. User preferences persist locally, reduced-motion preference can select the simpler presentation, and runtime checks can recommend a lower-cost mode.
Arcane mode
Radial wheel, parallax, animated transitions, environmental layers, and the complete stage.
Mortal mode
The spatial wheel becomes a direct card list while preserving each subject and its actions.
High performance
Expensive filters, shadows, particles, ambient orbs, and selected transition effects are disabled.
Deluxe mode
The atmospheric WebGL pass is opt-in and excluded on the mobile layout.
prefers-reduced-motion is observed and can initialise the simplified mode.