M4RKYU.SYSEdition 2027
Skip to content
LOCEN/Ontario · CA/▸work · ui studioStandbyOK/--:--:--EST
M4M4RK_YUportfolio
  • BuildBuild
    BuildOverview
    • WorkSelected case studies and write-ups
    • GamesPlayable prototypes and game-dev logs
  • GalleryGallery
    GalleryOverview
    • PhotosPhoto collections and visual experiments
    • ShopPrints, posters, and one-off objects
  • WritingWriting
    WritingOverview
    • BlogLong-form devlogs and field notes
    • NotesShort observations, links, snippets
  • ResourcesResources
    ResourcesOverview
    • Tools38 in-browser developer utilities
    • LinksDaily-use dev and design bookmarks
  • AboutAbout
  • ContactContact
中文
← projects
Web app · 2024Ready

UI Studio

A no-login multiplayer design canvas with shared objects, cursors, comments, undo history, and exportable room URLs.

Quick facts

Role
Solo developer: canvas architecture, multiplayer state, interface, and deployment.
Timeline
2024-2026
Platforms
Desktop editor · Mobile read-only viewer
LiveSource

On this page

  • >What it is
  • >What it looks like
  • >Built with
  • >Highlights
  • >Engineering
  • >Under the hood
  • >Outcome
  • >Roadmap & lessons
UI Studio home screen offering a new shareable collaborative board
Fig. 01 — UI Studio

Why I made this

Multiplayer always felt like sorcery to me, so I built the smallest shared canvas I could and watched the other cursors move until it stopped feeling like magic.

01

What it is

#

Problem

Design tools tend to be either single-player or heavyweight. UI Studio explores how light a shared canvas can feel while still handling live presence and concurrent edits.

Solution

UI Studio pairs Fabric.js object editing with Liveblocks storage, presence, comments, and history. A shared URL opens the same room, where collaborators can draw, arrange layers, chat through cursors, comment, undo, and export without creating an account.

02

What it looks like

#
  • Documented scopeThe public repository documents the shipped room, canvas, presence, comments, history, layer, and export systems.
03

Built with

#

Product

  • Next.js 14
  • TypeScript
  • Tailwind CSS

Canvas

  • Fabric.js 5
  • Layers
  • Inspector

Realtime

  • Liveblocks Storage
  • Presence
  • Comments
  • History

Export

  • PNG
  • PDF
  • JSON
  • jsPDF
04

Highlights

#
  • No-login room URLs with active-user presence and live cursors
  • Shapes, text, images, multi-select, alignment, ordering, and layers
  • Cursor chat, emoji reactions, and pinned comments
  • Shared undo/redo and visible connection state
  • PNG/PDF/JSON export plus JSON import
  • Pan and zoom from 20% to 400% with a mobile read-only view
05

Engineering

#
  1. Process 01

    Separate durable objects from ephemeral presence

    Context
    Canvas objects and comments must persist, while cursors, selection, and active-user state update too frequently for the same storage path.
    Approach
    Use Liveblocks storage for durable room data and presence for transient collaboration signals.
    Outcome
    Cursor feedback stays responsive, but synchronization code must coordinate two kinds of shared state.
  2. Process 02

    Make rooms link-first and account-free

    Context
    Authentication would add friction before the multiplayer canvas proved useful.
    Approach
    Generate a unique room URL and let collaborators enter directly.
    Outcome
    Sharing is immediate, but ownership, discovery, and access control remain intentionally limited.
06

Under the hood

#

Architecture notes

  • Fabric.js owns the canvas object model; Liveblocks owns the shared state.
  • Ephemeral cursor and user presence is separated from durable room storage and comment threads.
  • Shared history keeps undo/redo collaborative instead of treating every browser as an isolated editor.
  • Unique room identifiers make collaboration link-first and remove an authentication step from the prototype.

Challenges

  • Synchronizing Fabric object mutations with durable multiplayer storage without creating feedback loops.
  • The mobile experience is intentionally read-only; the full editor is designed for pointer-and-keyboard input.
  • Automated headless verification reached the deployed room URL but did not render the canvas surface, so the case study does not claim cross-browser coverage beyond the documented implementation.
07

Outcome

#
“
A deployed, source-available multiplayer canvas with a notably broad prototype surface: presence, comments, shared history, layers, inspector tools, and three export formats.
08

Roadmap & lessons

#

Lessons learned

  1. 01Multiplayer feels magical only when presence is instant and edits never fight.
  2. 02Separating ephemeral presence from durable storage keeps the canvas responsive.

Next steps

  1. 01Restore reliable automated canvas rendering
  2. 02Add focused multiplayer integration tests
  3. 03Decide whether mobile editing belongs in scope

Related work

Web app

Nimbus

A passwordless cloud workspace for organizing, sharing, beaming, and asking questions about your files.

Web app

M4rketView

A free, no-key crypto dashboard with live prices, resilient public-data fallbacks, local portfolios, alerts, and comparison tools.

PreviousDescent Into MadnessA published Unity WebGL dungeon shooter with procedural floors, sanity pressure, classes, bosses, loot, and fast-travel exploration.
Back to all work
NextAI Agent ToolkitA personal Windows-first toolkit for local AI coding: PowerShell automation, Ollama, a Streamlit control center, and conservative repo workers.
Back to archive
M4RKYUM4RKYUM4RKYUM4RKYUM4RKYUM4RKYUM4RKYUM4RKYU
Crafted since 2024
ZhenXiao Mark YuZhenXiao Mark Yu
get in touch

Saw something here?Tell me about it.

It's a portfolio, not a service · but I read every note — drop a line if anything here resonated, or just to say hi.

Start a conversation
open channel

say hi anytime · 2026

--:--:--ESTOntario, Canada
  • Email
  • GitHub
  • dev.to
  • LinkedIn
  • Twitter / X
  • Instagram
  • Facebook
  • YouTube
  • CodePen
  • Spotify
  • Snapchat

Newsletter

Get the occasional dispatch

Notes and logs from m4rkyu.com — short, dated, no noise. Unsubscribe anytime.

Work

Production builds, games, and visual archives.

  • Projects
  • Games
  • Archive
  • Logs

Resources

Daily-use tools and a personal link library.

  • Search
  • Latest
  • Tools
  • Links
  • Notes
  • Topics
  • Shop
RSSJSON feed

Studio

Background, contact, and channels for collaboration.

  • About
  • Contact
  • Changelog
  • Colophon
  • Resumepending

Socials

Find me on the usual feeds.

  • GitHub
  • dev.to
  • LinkedIn
  • Twitter / X
  • Instagram
  • Facebook
  • YouTube
  • CodePen
  • Spotify
  • Snapchat
  • Email
© 2026 ZhenXiao Mark Yumarkyu0615@gmail.com
  • Email
  • GitHub
  • dev.to
  • LinkedIn
  • Twitter / X
  • Instagram
  • Facebook
  • YouTube
  • CodePen
  • Spotify
  • Snapchat
PrivacyTermsBuilt with Next.js 16 · React 19 · Tailwind 4