Blog
All articles. All pillars. All authors.
Building a Production Dashboard with Svelte 5 in 48 Hours
How we built sh0's production dashboard -- dark/light themes, 5-language i18n, real-time WebSocket logs, and 7 core pages -- using Svelte 5 runes and TailwindCSS 4 in 48 hours.
i18n from Day One: 5 Languages Across 105 Sessions
Why we built sh0 with 5-language support from the very first dashboard session, and how we maintained correct orthography across 105 development sessions.
Auto-Detecting 19 Tech Stacks from Source Code
How sh0's build engine detects 19 tech stacks, generates production-grade Dockerfiles with multi-stage builds, and creates optimized build contexts -- all in pure Rust.
The 16KB Bug: How a Pipe Buffer Froze Our Entire Platform
A 16KB pipe buffer caused Caddy to freeze every 5 minutes. The debugging story of a classic Unix pipe deadlock that took us from confusion to a 5-line fix.
From Flat Lists to Stacks: Redesigning Our Entire UX
We threw away our flat app/database list UI and rebuilt around project-scoped stacks with a dual sidebar, context navigation, and cPanel-style sections.
Web Terminal and File Explorer in a Self-Hosted PaaS
How we built a browser-based terminal (xterm.js + WebSocket + Docker exec) and a Docker Desktop-style file explorer -- features most self-hosted PaaS tools lack.
Real-Time Logs: WebSocket Streaming from Docker Containers
How we built real-time log streaming from Docker containers to the browser using WebSocket, with JWT authentication, auto-reconnect, and a terminal-style viewer.
The Bugs That Almost Broke Us
Git pull failures, CSRF blocking uploads, stale Caddy processes, FTP IPv6 incompatibilities, and Docker network aliases -- the bugs that almost derailed sh0.
OpenAPI as Single Source of Truth: Docs, MCP Tools, and Playground
How we used utoipa to auto-generate an OpenAPI 3.1 spec from Rust handler annotations, then used that spec to generate API docs, an interactive playground, and MCP tool definitions.
Migrating from localStorage Tokens to HTTP-Only Cookies
How we migrated sh0's authentication from localStorage JWT tokens to HTTP-only cookies with CSRF double-submit protection -- and why every self-hosted tool should do the same.
Autoscaling in Rust: CPU Thresholds, Cooldowns, and Load Balancing
How we built horizontal scaling with Caddy load balancing, replica container management, and an autoscaler that evaluates CPU/memory thresholds with configurable cooldowns.
From cargo build to a Live Server: The Release Pipeline
How we built sh0's release pipeline: multi-stage Docker builds, cross-compilation challenges, GitHub Actions CI/CD, binary distribution, and the first production deploy.