Blog
All articles. All pillars. All authors.
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.
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.
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.
The Deploy Hub: 183 Options, One Page
How we built a Softaculous-style deploy hub with 183 options across 5 categories, 7 deploy form components, and a split-panel UX.
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.
Building for Africa: Mobile Money, Local Pricing, and Why It Matters
Why we built sh0 from Abidjan with Mobile Money payments, 5-language support including Swahili, and pricing designed for African developers.
119 One-Click Templates: From WordPress to Ollama
How we built a YAML-based template system with variable substitution, dependency ordering, and 119 production-ready templates covering databases, CMS, AI/ML, and more.
Docker Compose on a PaaS: Parsing, Validating, Deploying
How we added Docker Compose support to sh0 -- parsing Compose v3 YAML, validating dependencies, detecting circular references, and deploying multi-service stacks.
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.
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.
Building a React Native K12 App in 7 Days
20 sessions in 7 days: Expo SDK 54 monorepo, Zustand stores, SSE streaming, voice calls via LiveKit, biometric auth, and a custom tab bar.