Editorial art platform
Let’s Worm
Since 2017, writer Dan Murphy and I have prompted one another through stories and images; the current site gives a selected part of that long-running exchange its own editorial identity.
- Role
- Illustration · Editorial collaboration · Web design and engineering
- When
- 2017—Now
- Built with
- SvelteKit · Sanity · TypeScript

The beginning
Let’s Worm began in 2017 as a creative exchange between writer Dan Murphy and me. Dan had a Tumblr for his stories and would ask me to illustrate them. Over time, the collaboration loosened into a broader way of prompting one another: sometimes a story leads, sometimes an image does, and the work develops by worming around inside an idea until it becomes something neither of us would have made alone.
The name also carries a small piece of our history. After staying with Dan in Brooklyn while I was living in Chicago, I drew a group of worms spelling out “thank you.” The worm became both a mascot and a useful verb for the process.
The body of work
We have made more than 100 stories, illustrations, and paired experiments together. The work moves between flash fiction, longer stories, drawing, painting, character studies, collage, and sequential images without forcing every piece into one house style.
Dan leads the writing and defined most of the collection's editorial categories. I create the illustrations and visual responses, occasionally edit or offer opinions on the writing, and help shape the collaboration as it evolves.
A home built for the idea
The original Tumblr gave the stories somewhere to live, but it never fully expressed the collaboration as its own project. I designed and built the current SvelteKit and Sanity site to give Let’s Worm a dedicated identity and editorial structure.
The public site is a curated selection from the larger archive—not a migration of all 100-plus works. Its logo, squiggles, paper-like surfaces, and proudly wormy details create continuity while leaving room for each story and image to set its own tone.
What I owned
I created the illustrations and visual responses, designed the identity and interface for the current site, and built its frontend and content system. My role also includes the informal editorial conversation that has sustained the collaboration since 2017. Dan Murphy is the project's writer and primary architect of its written categories.
The system behind the work
Let's Worm Design System
A warm, strange, and accessible editorial system that gives Let's Worm a coherent literary identity while keeping stories resilient across themes, viewports, content lengths, and input methods.
-
Editorial before ornamental
Stories, contributors, and issue context remain clear before the system introduces visual flourish.
-
Warm, strange, and human
Caslon, Futura, paper tones, mauve, and the worm motif create handmade character without compromising legibility.
-
Movement has meaning
Motion communicates state and continuity while reduced-motion users receive an equivalent static experience.
-
Resilient by default
Components tolerate long titles, absent images, narrow containers, zoom, and light or dark environments.
-
Native interaction first
Links, buttons, forms, headings, and landmarks retain native behavior, visible focus, and clear accessible names.
Visual fingerprint
Identity, components, and proof.
A curated view of the system’s real foundations and state coverage—not a second documentation site.
Foundation
Semantic color
- Paper
#f6eee8Primary editorial surface
- Warm ink
#271d09Reading text and structure
- Mauve dark
#8c5061Focus and strong accent
- Mauve
#bf718ePrimary action and worm identity
- Mauve light
#d9a5b3Dark-theme action and tint
- Cream
#f5f1e8Raised editorial surface
Foundation
Typography roles
- Reading Adobe Caslon Pro
Carries stories and long-form editorial content with a literary voice.
- Display and interface Futura PT
Marks structure, navigation, metadata, and expressive headlines.
- Technical Fira Mono
Supports code-like and technical moments without entering story text.
Inventory
Representative components

Actions
Native buttons share one action and focus language across editorial and utility flows.
- Primary
- Secondary
- Disabled
Field guidance and error
Visible labels, associated guidance, and errors keep forms understandable in every state.
- Default
- Guidance
- Invalid
Empty state
A quiet editorial fallback explains the absence of stories without turning the page into a dead end.
- No stories
- Status
- Responsive
In the product
System at work

Decision propagation
Editorial character without fragile layouts
Paper, ink, mauve, Caslon, Futura, and the worm motif adapt across themes while stories, bylines, summaries, and navigation remain structurally clear.
A three-pixel focus ring, reduced-motion transitions, mobile-menu focus containment, forced-colors fallback, and responsive reflow protect the reading experience.
More selected work
Elsewhere in the portfolio