Yangming Li
Featured Interactive Experience

Focus Room

Not another timer. A room you return to.

Built to reduce friction before focus, with a calm entry ritual, ambient sound mixer, low-visibility controls, and a fullscreen study room that settles deeper as the session unfolds.

5ambient layers Localpersistence Ghostcontrols Sessionevolution
View Architecture

The landing page stays light. The real product now opens as a fullscreen room, separate from the build notes and source browser below.

Focus Room

A quiet room for deep work.

Hover wakes the room. Open the fullscreen experience to begin.

Preview Hover wakes rain Fullscreen app
8s room cycle
Room settling
App Mode

The product now opens as a true room, not another section on the page

The landing page introduces the idea. The actual experience opens separately, locks the page behind it, and keeps the first-use path simple: enter, keep or tune the mix, start, finish softly.

01 Enter the room

The first screen is a threshold, not a settings page. Hold to enter and let the room come forward.

02 Keep the default mix

Rain, Piano, and Brown Noise are already active. Users can begin immediately or tune the room gently.

03 Start a session

The timer stays quiet and peripheral so the room remains primary while work begins.

04 Finish softly

Completion lands as a small intimate state instead of a loud productivity reward.

What It Is

A deep work focus app, virtual study room, and ambient sound mixer in one

Focus Room is designed for people looking for a focus app, study room app, writing room, or deep work timer. The experience stays intentionally calm: enter the room, keep the default mix, and begin without a setup-heavy dashboard.

Focus App Reduce activation energy

Instead of opening into forms and toggles, the experience starts with a threshold ritual that makes beginning feel lighter.

Study Room Fullscreen room, not a dashboard

The room becomes the primary interface so attention stays on work, atmosphere, and gentle progression instead of busy controls.

Ambient Audio Layered sound mixing

Rain, piano, wind, and other channels can be kept as defaults or tuned softly for different deep work and writing sessions.

Writing Room Quiet timer, clear intent

Writing mode keeps the timer peripheral and the editor central, helping longer sessions feel steady rather than gamified.

Architecture

Technical credibility, surfaced with less weight

The prototype still reads like a real SwiftUI handoff, but the first scan starts with the four decisions that make the experience believable: orchestration, persistence, audio seams, and reusable views.

Orchestration AppState + ViewModel

One observable root owns dependencies while a single room view model drives entry, timer, ghost UI, and completion.

Persistence Local by design

Sound selections, volumes, and last duration persist through a small UserDefaults seam without introducing account friction.

Audio Mockable playback seam

The prototype stays visually honest while deferring real fade-aware audio layering until the next phase.

Views Reusable composition

Threshold, room, timer, mixer, background, and completion remain isolated enough to move directly into an app target.

System Shape

One orchestrator, small seams, reusable views

The architecture keeps interaction quality central. State lives in one place, derived atmosphere values keep visuals coherent, and services stay thin enough to swap without rewriting the room.

FocusRoomApp
`-- AppState
`-- FocusRoomViewModel
|-- ThresholdView
|-- FocusRoomView
|-- RoomBackgroundView
|-- FocusTimerView
|-- AmbientMixerView
`-- SessionCompletionView
AppState / ViewModel orchestration Single source of truth for phase, timer, mixer, and room atmosphere.

AppState owns dependencies. FocusRoomViewModel centralizes threshold entry, session timing, ghost UI idling, completion messaging, and derived room evolution so the visuals never feel bolted together.

Entry ritual, idle fade, and completion share one mental model instead of scattering state across views. Derived RoomAtmosphere values keep lamp warmth, rain depth, and background calm in sync.
Local persistence Preferences survive without login or backend ceremony.

FocusRoomPreferencesStoring isolates persistence behind a protocol, so the room can remember last-used sound layers and duration while keeping countdown runtime state ephemeral.

UserDefaultsPreferencesStore is production-friendly for a first version. InMemoryPreferencesStore keeps previews and local iteration fast.
Mock audio seam Visual and interaction quality can mature before real assets land.

The audio layer is intentionally abstracted behind AmbientAudioControlling. That keeps the prototype believable today and ready for fade-aware playback tomorrow.

Preview fade-in and session completion fade-out can later map to real audio without redesigning the interface. The mock engine preserves product behavior while avoiding placeholder asset debt.
Reusable view structure Each layer is scoped tightly enough to migrate into Xcode cleanly.

The UI is split into the same components a production app would want: threshold ritual, background composition, timer, mixer, and completion. The room stays primary because each piece knows its role.

GhostGlassPanel standardizes the low-visibility control language. Preview data and theme tokens support iteration without turning the project into a demo-only codebase.
Source

Start with the code that makes the prototype believable

Rather than giving every file equal weight, the page starts with the two seams that matter most on first read: the room orchestrator and the local persistence layer. The full browser is still here when you want the whole tree.

swiftui-prototype/ViewModels/FocusRoomViewModel.swift Loading
Loading source...
FAQ

Questions people usually ask before trying Focus Room

This page is intentionally static enough for search engines to parse and descriptive enough for product, design, and engineering readers to understand what the experience does.

What is Focus Room? A deep work experience built as a SwiftUI prototype.

Focus Room combines a calm entry ritual, a fullscreen study room, layered ambient sound, and a quiet session timer so starting work feels lighter than opening a typical productivity dashboard.

Is Focus Room a focus timer or an ambient study room? It is both, with the timer kept intentionally peripheral.

The room, soundscape, and writing or focus modes stay central. The timer is present to support deep work, but it does not dominate the experience.

What makes Focus Room different from a standard focus app? It prioritizes lower setup friction and calmer interaction design.

Users can keep a ready-made sound mix, hold to enter, and begin in seconds instead of configuring every setting up front. The product aims to feel like a room you return to, not a dashboard you manage.

Is Focus Room a live product or a prototype? This page showcases a production-style SwiftUI prototype.

The page demonstrates product thinking, interaction design, architecture, and source structure. It is a public interactive showcase rather than an App Store release.