Ryan OS

Starting Up…

Tech Stack.txt
RYAN OS / TECH STACK
====================

A few notes on what is running this little computer.

THE SITE
--------
Astro builds the pages and reusable components. The desktop is rendered
as HTML, with JavaScript modules handling windows, dragging, resizing,
keyboard shortcuts, and the individual apps. Vite handles development
and bundling. Larger apps load their code when you open them.

CSS & DESIGN
------------
The interface is hand-written CSS: global styles for the desktop,
component-scoped styles in Astro files, and separate stylesheets for
some apps. CSS custom properties define shared colours; Flexbox, Grid,
and media queries handle layout and smaller screens.

The classic Mac look comes from borders, inset shadows, pixel-style
icons, custom cursors, and a repeating wallpaper. Everyday is the main
interface font; Instrument Serif is used for larger headings. Both
fonts are served with the site. The editor uses a system monospace font.

HOSTING & BACKEND
-----------------
Cloudflare Workers hosts the site and runs the server-side API routes
through Astro's Cloudflare adapter. Static assets are served alongside
the Worker. Wrangler handles local Cloudflare tooling and deployment.

Cloudflare D1 stores guestbook entries, form submissions, and the email
outbox. Turnstile protects the forms, and Cloudflare's rate limiter
limits API traffic. A Cron Trigger retries queued email deliveries.
Resend delivers contact messages and guestbook notifications.

THE APPS
--------
Neovim: CodeMirror 6 with Replit's Vim bindings, a Lua syntax parser,
and Lezer highlighting. Lessons are editable buffers with instructions
in comments. Editing happens in the browser; Lua is not executed.

Places: MapLibre GL JS renders the map using bundled Natural Earth
data. The places list is maintained as a JSON file.

Chess: chess.js supplies the rules and legal moves. A small custom
opponent chooses moves; the board is built with HTML, CSS, and SVG.

Browser: a bundled 1999 AOL homepage starts the app. Other historical
pages come from the Internet Archive through a server-side endpoint
and appear in a sandboxed iframe.

Radio: the YouTube player API powers playback behind custom controls.
Desktop sound effects use the browser's native Audio API.

Language switching: a small JavaScript helper and a JSON translation
dictionary provide English and Spanish interface text. Browser storage
remembers language and sound preferences.

DEVELOPMENT & SHIPPING
----------------------
pnpm manages dependencies. Oxlint handles linting. Prettier formats
code, with the Astro plugin handling Astro templates.

GitHub Actions builds the site with Node.js 24. Successful builds on
main apply database migrations and deploy to Cloudflare Workers.
Buddy & Alfie.jpg
Ryan’s dogs, Buddy and Alfie
Places I've been / lived
25 places, a few called home.Save as text
Browser

Connecting…

Guestbook

Radio
RYAN OS RADIO0:00

Poolside — Do You Believe

Track 01 / 30
Playback controls
30 tracks

Ready

Chess
◆ BLACKRyan OS
◇ WHITEYou
Neovim

Opening Neovim…

01-movement.luautf-8lua1:1
About
Ryan Cassidy

Technical founder / Product engineer

Ryan Cassidy

I help startups turn early product bets into dependable, profitable software.

Résumé

Selected experience

Work history

  1. Consultant
  2. Co-Founder & CTOSpendPilot
  3. Founding EngineerRound
  4. Senior Software EngineerSearchland
  5. Founding EngineerSanté
  6. Senior Software EngineerNovo
View resume (opens in new tab)
Blog

Coming soon

Contact

Open communication channel

This could’ve been an email. It is.

Or emailryancassidy@hey.com.

X / Twitter