Use a mono-repo with Docker multi-stage builds to build and deploy your whole stack in one place.

Photo by Leone Venter on Unsplash

Any modern app consists of numerous individual projects. Usually something like an API and a client, each with their own git repo and build process. Large software development teams can have individual groups manage these separate projects, but a single full-stack developer may need to touch each project to complete one user story for the app. Separate dev environments, separate git commits and separate deploy processes start to get very messy and mistake-prone even if each project is nice and clean by itself.


A developer’s own laptop —our local development environment for all our projects, is a sanctum. Cleanly installed IDEs, enhanced terminal with updated package managers installing everything in into neatly isolated projects, Git repos, ssh keys and credentials configured for all your staging and production environments. Until a project comes along with a dependency that wants to cast a big footprint on your system with drivers and extra software. It’s usually something big and hefty like a non-open-source database. It’s Oracle. I’m talking about Oracle for this article.

Photo by hara gopal on Unsplash

Oracle is an un-rivaled database system with decades of development in its foundation…


When building serverless applications, it’s difficult to maintain comprehensive version control. Even the simplest application will bring together several of the services your cloud provider offers, and it’s often quicker to write the code and set up the configuration directly in the console when you’re prototyping, rather than trying to script everything out. …

Jason Williams

I am a software engineer, husband and father with 18+ years of experience in all three.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store