[famly/plan][famly/plan] is an example of how you can use [Docker][docker], [Make][make], and [Bash][bash] to automate your entire development environment and provide a nice CLI for common work-flows. It's an open-source version of our internal development tool at [Famly][famly] called famlydev. This repository is meant to be forked, cloned, and modified in any way you please; it's simply providing a starting point for you to hack around with. If you've found a way to improve upon it then feel free to send us a pull request ❤️
If you want to know more about the background of [famly/plan][famly/plan] and what problems we're trying to solve then read this [blog post][blog-post] by [@mads-hartmann][mads].
The goal we're trying to achieve is to have a 100% automatic way to to
setup and run your entire development stack locally. Once it's running
it should be reacting to code and configuration changes automatically.
For example, the Python backend will run the newest code on each
request and the frontend will reload the browser whenever you change
any of the files (Haven't enabled HMR in this example, but feel free
to add it). The migrations container will automatically run migrations
when you add new files and re-run them when they change. If you change
services/frontend/package.json the containers will re-install
dependencies and restart their internal processes; the developer
doesn't have to do anything.
The overall philosophy is that the developer should be able to focus on the task at hand rather than the mechanics of the developer environment -- if you can put something in a README it's likely you can automate it as well