A nightly backup, a watchdog and an uptime ping sat in the repository for three weeks without running once. What I found when I finally set them up - and the restore I should have tested first.
A Next.js site, an admin and a Go API on a single server with Docker, Caddy and GitHub Actions - and the six failures that taught me what "deployed" actually means.
Updating the interface without waiting for the server using useOptimistic and Server Actions: how it works, what happens on failure, and when not to use it.