spen studio

Case study

Glance

A second-screen macOS board: weather, calendar, music, stocks, packages, and a live 3D printer — layouts that reflow from wide to mini.

Project 01
Glance website
Client
Independent
Services
macOS app · Product design · Design system
  1. 01 / Challenge

    Personal status lived in separate menu-bar apps: weather here, calendar there, printer progress in a vendor window, packages in email. Nothing shared a layout language, and none of them survived being resized to a second monitor or a tiny corner window.

    Glance starting frame
  2. 02 / Insight

    Heterogeneous data can share a card language, and that language has to reflow from a wide second monitor down to a mini corner window without becoming another full-screen app.

    Glance in use
  3. 03 / System

    A modular SwiftUI dashboard: Open-Meteo, Google Calendar, Apple Music, Finnhub/Yahoo stocks, Ship24, Bambu Lab MQTT. Provider → store → view, DashCard chrome, demo data so the board is never empty. Layout is a feature: wide grid, week calendar, compact stack, mini corner. The same glass language later showed up in Role Radar and Content System.

    WEATHERCALENDARMUSICPRINTERSTOCKS

    Process reconstruction

    Glance architecture

    How the pieces hand off without another dashboard nobody opens.

    • Weather
    • Calendar
    • Music
    • Printer
  4. 04 / Execution

    A modular SwiftUI dashboard: Open-Meteo, Google Calendar, Apple Music, Finnhub/Yahoo stocks, Ship24, Bambu Lab MQTT. Provider → store → view, DashCard chrome, demo data so the board is never empty. Layout is a feature: wide grid, week calendar, compact stack, mini corner. The same glass language later showed up in Role Radar and Content System.

    Glance in motion
  5. 05 / Outcome

    One glanceable surface for the day, with captures here using placeholder print, packages, calendar, music, and tickers. Cards reflow instead of clipping. Animations stay small — progress, now-playing, layout — because the point is to look over, not to watch.

    Glance after launch

Toolkit

Every surface, featured fully.

Each piece below is almost its own product — designed, shipped, and used as a first-class workflow rather than a buried submenu.

01

Dashboard grid

Glance is a second-screen product: weather, calendar, music, stocks, packages, and Bambu Lab printer telemetry in one glass grid. Each widget is a provider → store → view slice. The grid is the product; there is no home tab behind it. Cards share DashCard chrome so density can change without each module inventing a frame. Demo mode fills the grid with a print in progress, in-transit packages, a day of calendar, a track playing, and a four-symbol watchlist — because an empty status board is a dead product.

Dashboard grid screenshot

02

Responsive layout

The layout is not a fixed dashboard screenshot. At a wide desktop the cards sit in a multi-column grid. At compact (phone-ish window) they stack. Mini mode collapses to the fewest surfaces that still read from across a room. SwiftUI size classes drive which cards stay, which compress, and how the weather strip vs the calendar week compete for width. Animations are small on purpose: now-playing art, printer progress, and card reflow — not a marketing reel. The stills in this case study are the same app at wide, week-calendar, compact, and mini.

Responsive layout screenshot

03

Calendar week

Day view is the default for “what is next.” Week view is the scan for a second monitor. Google Calendar is the provider; demo week data stands in when we capture the site. Meet links and titles stay short enough to read at arm’s length.

Calendar week screenshot

04

Music & markets

Apple Music now-playing sits beside a watchlist that prefers Finnhub and falls back to Yahoo, then to deterministic demo quotes. Tickers in captures are AAPL, MSFT, NVDA, TSLA — placeholders, not a live portfolio. The music card is transport plus artwork, not a mini player you are meant to live in. Glance should tell you what is on; it should not become another Entertainment.app.

Music & markets screenshot

05

Packages & printer

Ship24 (or mock) tracking and Bambu Lab MQTT share the bottom of the board because they are the same question: is the thing I am waiting on still moving? Demo captures show a print in progress (~62% PLA) and a couple of in-flight packages so the cards read as live ops, not empty states. MQTT credentials stay on the device. The website shots never include a real serial or LAN IP.

Packages & printer screenshot

06

Mini & compact

Mini is the “TV in the corner” size. Compact is a tall sidebar. Both are first-class layouts, not broken wides. If a card cannot survive those widths, it does not belong on the board.

Mini & compact screenshot
Demo data on every widget from day one.
Provider → store → view architecture.
Glass language reused across later apps.