I wanted to start this off with an interesting point about how I develop and deploy my website. I'll start off with a note:
Let's start off with the technology. Snappy is a packaging format from Canonical the makers of Ubuntu. I have been around Ubuntu for almost 10 years now so it seemed like an easy choice but from a technology standpoint it also helps quite a bit. What Snappy does it wraps up all the things needed for your app and it makes a super portable installer for most Linux platforms. Your mileage may vary on non-Debian/Ubuntu systems but the design is meant to be portable.
It also has some pretty easy to use confinement features which made deploying it a bit of a challenge because I wanted to keep it all in the one package. Basically I only gave the package permissions to do only things in the package and then do a network bind or some external networking (for the database or grabbing assets elsewhere).
The development app life cycle for this website is:
summary: Shane Fagan's website
description: I wanted a more flexible website that I can add some example code and stuff.
stage-packages: [python3-gevent, python3-dev]
plugs: [network-bind, network]