eating.computer

2026
UX DesignFull Stack DevelopmentDesign SystemsProduct Design

An app for my class: real-time chat with reactions, replies, threads, mentions, animated text effects and custom emotes, alongside week-by-week assignments, a roadmap, a shared file list, the syllabus, and tools for making things.

I wanted it to be a smooth and engaging experience.

The eating.computer mark, a black e on the brand green

eating.computer is the platform I built for my class at The Cooper Union. A web app, a site, and an iOS app. I designed the identity and the UX and heavily used claude to make it. If I'm teaching AI, I wanted to show my students something that they could make with it.

The same class session on a laptop and in the iOS app

Why not Discord? Why not Teams?

A studio class runs on communication, and that ends up on Discord or in email, or Instagram, nowhere near the syllabus or the assignment it's about. I wanted one place where the conversation and the coursework sit next to each other. If there's a question the chat is visible next to all the content on desktop.

Expressive chat

Text can shake, wave, ripple, glitch. You can set a run anywhere from 0.5x to 7x inline, type is important and expressive, the compose bar exposes real variable-font axes: weight 100 to 700, width 25% to 150%. Colors, rainbow, bold through strike, all there too.

Effects stack. Rainbow over ripple gives you a wavy rainbow.

Each effect is a Unicode private-use codepoint wrapped around the styled run, so a formatted message is still an ordinary string. It survives the database, notifications, and copy-paste.

Around that: reactions, threads, mentions, custom emotes, and animated stickers rendered through a Skottie worker, WebGL on desktop and a CPU frame atlas on iOS.

Close up: rainbow layered with ripple, and the variable-font sampler

The expression picker: emoji, animated emotes, custom uploads, GIFs

Code counts as a message

Half the class is code. Type something that looks like JavaScript, or Python, or SQL (or many other programming languages) and a pill appears offering to format it. One tap sends it as a real code block: syntax highlighting, a language badge, line numbers, one-tap Copy. Anything past twenty lines collapses behind a Show all control.

Gemma answering a code question in a formatted block

Gemma is hosted locally in the School of Engineering

The AI in the sidebar isn't a commercial API. Gemma is an open-weights model served off chatterbox.ee.cooper.edu, behind an OpenAI-compatible endpoint. Students ask her about coursework and code; the reply above came from that server. She also keeps each student's task list current from what they say in chat and what the assignments require, and writes an opt-in digest: what's due, what you said you'd do, and one thing to look at.

Tasks: Gemma builds the list from chat and assignments, and keeps completed items as history

Those inspiration links are real, checked links rather than model output. A second Cooper machine runs Scout, a worker that pulls from are.na, Wikipedia, museum archives like the V&A and Ars Electronica, and the most-cited papers on each week's topic, routed through the Cooper library proxy so students get the full text.

Recommendations: academic readings per week of the syllabus, opened through the Cooper library

One seed, every color

Pick a seed color and every token in the UI derives from it through Material 3's palette. Presets or your own seed, light or dark, with contrast and chroma controls. Themes are per student and sync across devices, so the same conversation is amber on one phone and slate on the next. The mark works the same way: one letterform on a seed color.

Gestures

On a phone the app is one horizontal track. Swipe between Home, Chat, Orbit, and the Lab. A conversation opens as a layer on top and a left-to-right swipe dismisses it. Threads work the same way, so swiping out of a reply drops you back in the main chat exactly where you left it. The picker follows those rules too: swipe across its surfaces, or drag the sheet down to close it. The nav bar is for finding things the first time; after that everything is a swipe.

The semester

Home is the current week: the assignment, its checklist, what's due Friday. Orbit holds the roadmap, the syllabus, and every file anyone shared in chat. Assignments get written in the same expressive editor as the chat, so they animate too.

Home, as a student sees it: the week's assignment and its checklist

Orbit: the roadmap, and the class files, syllabus included

Built with

LayerChoice
Web appSvelteKit, deployed on Vercel
DatabaseTurso (libSQL)
RealtimeFirebase Realtime Database
MediaCloudflare R2
AIGemma, self-hosted in Cooper Union's School of Engineering behind an OpenAI-compatible API
iOS appCapacitor shell around the live site: native keyboard, haptics, push
AuthGoogle + credentials, bridged to Firebase, student and instructor roles
Notificationsweb-push + VAPID in the browser, real APNs in the iOS shell

The iOS app is thin. It's a Capacitor shell around the live site, so a fix reaches the App Store version the moment it deploys.

Ricky Yurewitch

eating.computer