First pass at the app foundation

Thanks for the tip, and yes `sudo` is necessary, at least for me.