This was a question I answered on Quora, but the content is mine so I repost it here.
This is my personal tech stack that I use for standing up projects quickly. I find it hits the right mix of robustness, scalability, ease-of-use, and developer on-boarding. I have several projects and clients running in production using this stack.
- Django (read about my Django application stack)
- Sentry for Exception logging
- Twilio (if needed)
- Bitbucket Pipelines (CI/CD)
- Digital Ocean or Azure (Linux VMs)
- Makefiles as task runners
- Commit code from dev machine
- Push to bitbucket
- Bitbucket runs pipelines (tests, build docker image, push to docker repo)
- Pipelines fires server machine to update with newly created docker image
- Post deployment hooks in docker image run sanity/smoke checks