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.

RYAN OS RADIO0:00
Poolside — Do You Believe
Track 01 / 30Ready
◆ BLACKRyan OS
◇ WHITEYou
Opening Neovim…
01-movement.luautf-8lua1:1

Technical founder / Product engineer
Ryan Cassidy
I help startups turn early product bets into dependable, profitable software.
Selected experience
Work history
- Consultant
- Co-Founder & CTO
SpendPilot - Founding Engineer
Round - Senior Software Engineer
Searchland - Founding Engineer
Santé - Senior Software Engineer
Novo