First pass at the app foundation

Much better to specify an actual version, otherwise different developers (or deploys) could end up behaving differently and we wouldn't know why.