Josh Ramirez
← Back to the journal

Departed Spring 2025

Aura

the wrist · WatchOS app · Archived

Aura on the wrist — one clip, one tap, no back button.

Departure

School banned phones and my hand kept reaching for an empty pocket. What I actually missed wasn't messages — it was the dopamine scroll. The Apple Watch was the only screen they couldn't take, so I built TikTok for my wrist: one short clip at a time, no recommender, no back button. Tap to skip, or double-pinch the fingers and roll the dice again.

Approach

  • SwiftUI
  • WatchOS
  • AVFoundation
  • Manifest v3

Phones banned at school — wrist only. No TikTok SDK, so the content has to be sideloaded.

Field log

  1. Spring 2025 — empty pocket

    First week of the phone ban. Hand reaching down, finding nothing, every fifteen minutes. The thing the iPhone had been carrying for me was a small, repeatable hit — and the watch was still on my wrist.

    What got banned. What didn't.
  2. The frame

    TikTok for the wrist. One short clip at a time, no recommender, no profile, no back button. The whole app is the next clip.

  3. Day 1 — the Chrome extension

    Manifest v3 extension that watched TikTok's network tab, peeled the MP4 URLs the page was already loading, and saved them to a folder I'd later drag into the Xcode bundle. No API, no auth — just a content script reading what the browser already had.

    The pipeline upstream of Xcode — TikTok in, MP4 out.
  4. ContentView

    SwiftUI view with a single video player filling the watch face edge-to-edge. AVPlayer chewed through the bundled MP4s in order. The screen is too small for a swipe — the tap is the entire interface.

  5. Two gestures

    Tap on the face for the next clip. Double-pinch the index and thumb for the same — watchOS surfaces the gesture as an event, so I could roll the dice with my arm flat on the desk and the watch face barely visible from across the aisle.

    The one-handed advance. No screen contact required.
  6. Live, in class

    Wore it through a lecture and made it through four clips before I caught myself. The itch was being scratched — compressed to a 1.7-inch rectangle and lossier MP4s, but the loop was intact: tap, end, next, roll the dice again.

From the gallery

Field test. Periodic table in the background, MP4 on the wrist.
Chrome scrapes. SwiftUI renders. AVFoundation plays.

What I came back with

Wrist-scroll, on-device

Lesson from the terrain

The Apple Watch can carry surprisingly little video — small screen, busy battery, an AVPlayer never built for autoplay loops — but it can carry enough to scratch the itch. The architecture was indefensible: a Chrome extension scraping someone else's CDN, MP4s sideloaded into a bundle, zero recommendation logic, no way back. The loop still closed — tap, end, next — and that turned out to be the whole product.

Cross-links