Build in public
Devlog
A running log of building dply — what shipped each day, the bugs that bit, and the calls we made. One entry per day of work.
63 entries
-
· 2 min read ui hygiene servers
spinner buttons and release hygiene
A polish-and-fix day: release-hygiene scan fixes, a shared spinner button, patch/security actions, tidier empty states, and a deploy button on the sites card.
Read entry -
· 2 min read servers jobs services
in the server engine room
A focused day down in the server services, jobs, and migrations — the engine-room layer under the server workspace.
Read entry -
· 2 min read database deploy billing
threads through database, deploy, and billing
A medium day spread across the Database, Deploy, and Billing modules, plus some Livewire and a docs pass.
Read entry -
· 2 min read bugfix ui jobs
fixing commands
Three small commits sorting out command wiring and a few workspace UI rough edges left over from the module moves.
Read entry -
· 1 min read certificates modules bugfix
two lines in certificates
A genuinely tiny day: two commits, two files, both in the Certificates module.
Read entry -
· 1 min read cloud ui modules
a quiet one in the cloud surface
A short day — a single small commit touching the Cloud module and a couple of site workspace views.
Read entry -
· 2 min read bugfix modules ui
shaking out the refactor
The day-after-the-big-move day: chasing down bugs the module extraction shook loose across the workspace UI and the Logs engine.
Read entry -
Deep dive · 6 min read modules billing deptrac
billing, deptrac, and a map for the maze
Closing out the modular monolith: the final Billing module, a Deptrac wall to enforce the boundary, a CLAUDE.md navigation map, and a long day paying the test tax.
Read entry -
Deep dive · 6 min read refactor modules architecture
the great module extraction: carving dply into a modular monolith
78 commits pulling tangled domain engines out of one flat Laravel app and into a tiered modular monolith — capability by capability, in dependency order.
Read entry -
· 2 min read deploys maintenance console
deploy windows, maintenance mode, and console plumbing
Added deploy windows, wired up enabling maintenance mode, and did a big sweep of console and model work after a merge.
Read entry -
· 2 min read maintenance mail notifications
a maintenance page and notification-channel test emails
Built a proper maintenance page, queued notification-channel test emails, and fixed a Cloudflare mail key mapping bug.
Read entry -
· 2 min read redis deploys refactor
one-click redis and unifying the deploy surface
Shipped one-click Redis with auto-install, unified the deploy page and sidebar onto one coordinator, and added a 5xx auto-capture sweeper.
Read entry -
· 2 min read services servers hygiene
a quiet day in the services layer
No clean commit messages today, just steady work across site views, server services, and the jobs that tie them together.
Read entry -
· 2 min read downloads workers refactor
quick download, worker sync, and extracting partials
Built a quick-download path, synced state out to workers, and spent real time pulling bloated views apart into partials.
Read entry -
· 2 min read metrics servers workers
live server stats and chasing missing metrics
Spent the day on live server stats, fixing metrics that weren't showing up, and tidying queue workers and headers.
Read entry -
· 2 min read mcp mail deploys
more mcp, mail test-sends, and borrowing tooling from saved repos
A scattered day across MCP, mail provider test-sends, multi-site deploy, and warning people about broken .env files before they bite.
Read entry -
Deep dive · 6 min read deploys manifest ui
deployment methods, a canonical manifest, and unsticking the deploy button
A two-axis deployment-methods model, a canonical dply manifest that drives the deploy gate, and finally killing the deploy button that wouldn't let go.
Read entry -
· 2 min read servers snapshots providers
snapshots, system users, and cutting dead providers
Shipped a server Snapshots workspace, system-user management, and finally deleted four cloud providers nobody was using.
Read entry -
· 2 min read provisioning logs servers
a warm pool and the dply Logs add-on
Added a warm pool so managed VMs skip cold provisioning, shipped the dply Logs add-on with a Vector agent, and moved config reads off the render path.
Read entry -
Deep dive · 5 min read provisioning bindings sites
Baked snapshots and a binding catalog: making provisioning fast and sites composable
Thirty-six commits across two themes: cut cold-provisioning time with baked images and parallel installs, and let sites declare mail, logs, storage, and cache as first-class bindings.
Read entry -
Deep dive · 6 min read deploys atomic-releases ui
Atomic releases: the day deploys became something I'd trust at 2am
Forty-eight commits. The deploy path moved from in-place mutation to immutable releases with a symlink swap — plus a repo picker rework, a backups dashboard, and the hardening that made it real.
Read entry -
· 1 min read sites services ui
steady hands on the site workspace
A calmer day refining the site workspace and its services, with model and job changes rounding it out.
Read entry -
· 1 min read services jobs refactor
twenty-six small commits, mostly engine work
A heavy commit count spread across the services and jobs layers and both workspaces, plus some package-level churn.
Read entry -
· 1 min read ui services jobs
a day in the site workspace
Mostly site workspace UI and the services and jobs behind it, with model and config changes filling in the gaps.
Read entry -
· 2 min read provisioning servers ui
pick your OS when you spin up a box
Added OS image selection (Ubuntu/Debian) to the provider VM create flow, plus the usual merge-day cleanup.
Read entry -
· 1 min read services models migrations
plumbing day: services, models, a migration or two
Heads-down in the services layer with some model and migration work behind the server workspace, nothing flashy on the surface.
Read entry -
· 2 min read services tests ui
a big sweep across the workspaces
A wide, slightly unglamorous day touching both server and site workspaces, the services layer, docs, and a pile of tests.
Read entry -
· 2 min read servers services ui
back into the server services
A focused day in the server workspace and its services, with UI components and config getting cleaned up alongside the tests.
Read entry -
· 2 min read billing analytics servers
a transparent cost observatory
Shipped a transparent cost observatory into analytics, plus a wide sweep across server and site workspaces and services.
Read entry -
· 2 min read routes ui servers
wiring routes and the views behind them
Nine commits across server and site workspaces, with routes, controllers, and config getting some overdue attention.
Read entry -
· 2 min read sites servers models
a little of everything
A spread-out day touching both server and site workspaces, models, a migration, and the tests that hold it together.
Read entry -
· 2 min read edge docs ui
letting yesterday settle
A short follow-up day after the big Edge push — docs, site workspace polish, and a bit of config cleanup.
Read entry -
Deep dive · 6 min read edge cdn ssr
Making Edge a real host: routing, SSR adapters, and an Edge-in-front CDN
Twenty-nine commits turning Edge from a static-file uploader into a credible Netlify/Vercel rival — routing rules, multi-framework SSR, env migration, and a Cloudflare CDN layer for VMs.
Read entry -
· 2 min read sites jobs services
fewer commits, more wiring
A lower-key day stitching site workspace views to services and jobs, with a model and migration change underneath.
Read entry -
· 2 min read cloud paas autoscaling
building out Cloud, the managed PaaS
A big push on the Cloud product — managed PaaS scaffolding plus autoscaling and health checks, with a huge dependency bump dragged along.
Read entry -
· 2 min read ui services sites
a quiet day in the site workspace
Mostly heads-down plumbing in the site workspace — services, models, a migration, and the Livewire views that hang off them.
Read entry -
· 2 min read refactor sites ui
putting the branch back together
Rebased session work back on top of a fresh upstream pull and spent the day in the site workspace, routes, and controllers.
Read entry -
· 2 min read serverless services ui
first strokes on serverless
Started laying down the serverless surface — early services, UI, and jobs for running functions, plus the usual tests.
Read entry -
· 2 min read servers migrations services
migrations, services, and a fat diff
Seven unlabeled commits but a 348-file diff, centered on database migrations, server services, and the workspace UI behind them.
Read entry -
· 1 min read ui servers tests
a one-commit sunday
A single focused commit across the server workspace UI, a route, and tests — the kind of small tidy-up that keeps the surface coherent.
Read entry -
· 2 min read kubernetes wizard servers
teaching the wizard to speak kubernetes
Brought managed Kubernetes (DOKS and EKS) into the create wizard end to end, and finally retired the standalone container launcher.
Read entry -
Deep dive · 6 min read imports migration wizard
A 23-phase migration wizard, built in a day
Marching a Forge/Ploi import-and-migrate wizard from phase 1 into the twenties — a state machine, 13 SSH handlers, source-agnostic factories, and the rollback paths that make moving a live site survivable.
Read entry -
· 2 min read servers services jobs
continue
Nine small commits continuing yesterday's server-services thread, with migrations and workspace views getting incremental love.
Read entry -
· 2 min read servers jobs services
server services and the jobs behind them
Spent the day in server services and queued jobs, with model and config changes trailing behind to keep things wired up.
Read entry -
· 2 min read ui servers tests
a quiet day in the server workspace
Mostly heads-down work across the server workspace UI, a couple of model and migration tweaks, and tests to keep it honest.
Read entry -
· 2 min read site services migrations
one commit, the whole site stack
A single big commit across site services, models, migrations, and the site workspace — a coherent slice rather than scattered fixes.
Read entry -
· 1 min read jobs services config
config knobs and queued work
Another quiet two-commit day across jobs, services, and config, spanning both the server and site workspaces.
Read entry -
· 1 min read server jobs hygiene
a short one on server jobs
A small, two-commit day touching the server workspace and the jobs and services behind it.
Read entry -
· 2 min read ui server redis
an explainer on every tab
Rolled an x-explainer disclosure across every server workspace tab, then taught the cache workspace to show live Redis stats.
Read entry -
· 2 min read server ui hygiene
killing the '100% restart' bug
Cleanup day on the provisioning journey — fixed a polling thrash that restarted progress, plus server-create polish and a layout simplification.
Read entry -
Deep dive · 6 min read scaffold remote-cli wordpress
Empty server to running app: scaffold pipelines and a RemoteCli foundation
Async WordPress and Laravel scaffold pipelines, a journey UI to watch them install, and the RemoteCli layer (WP-CLI + Artisan) that powers a wave of new management tabs.
Read entry -
Deep dive · 6 min read edge containers modules
Standing up dply edge on two clouds, then paying down the test debt
How the managed-container layer got wired across DO App Platform and AWS App Runner behind one abstraction, and why the day ended in a long, deliberate test marathon.
Read entry -
· 2 min read deploys runtime modules
teaching dply to recognize a repo
Built the runtime detection foundation — a per-language detector set plus an orchestrator and a dply.yaml manifest parser.
Read entry -
· 2 min read ui jobs server
a quiet day in the server workspace
One big commit touching the server workspace UI and the jobs behind it, mostly plumbing rather than anything flashy.
Read entry -
· 2 min read ui servers sites
back at it: polishing the workspaces
A broad five-commit day across server and site workspace views, UI components, and docs — sanding down the experience rather than bolting on new features.
Read entry -
· 2 min read sites services jobs
more site workspace plumbing
Another single-commit grind through site workspace services, models, jobs, and config — pushing the site experience toward something complete.
Read entry -
· 2 min read sites services models
a quiet day on the site side
A focused single-commit day deepening the site and server workspace services, models, and a migration or two — steady, unglamorous progress.
Read entry -
· 2 min read livewire ui sessions
sessions, less javascript, and site screens
Eighteen commits spread across the site workspace, services, and a deliberate effort to cut JavaScript and lean harder on Livewire.
Read entry -
· 2 min read php provisioning logs
php management and the provision journey
Logs landed, server and site PHP management shipped, and I spent the day untangling the provisioning journey flow and task tracking.
Read entry -
· 2 min read servers ui services
the server workspace takes shape
A huge day across server services, models, and the workspace views — the single biggest churn so far as the server side really came together.
Read entry -
· 2 min read ui livewire routes
the ui starts to exist
A big front-end day — views, Livewire components, routes, and config all came together so dply finally looks like an app you can click through.
Read entry -
· 2 min read docs models services
wiring the foundations and writing some docs
Day two was unglamorous plumbing — models, services, controllers, packages, and the first real docs to keep myself honest.
Read entry -
· 2 min read kickoff laravel ui
day one: dropping the first commit
Kicking off dply with an initial commit — a Laravel base for managing servers, sites, and the early scaffolding for everything to come.
Read entry
Looking ahead? View the roadmap · Changelog