This project showcase is about Panda, which is a custom built admin panel that uses a REST API backend with a material design frontend. The goal is to allow users to perform system administration tasks from a web interface, rather than having to SSH in.
I recently built a personal server for my home network. It runs Ubuntu 14.04, with Apache, Calibre, Plex, and Time Machine services. I have a RAID1 4tb array on it, and I use it as my main dev box whenever I need to code on linux, or leave a job running for a long time.
After configuring the server, I noticed that I often had to SSH into it just to check simple things such as disk usage and raid status, or to launch services such as Plex and calibre. This isn't a problem when I'm on my laptop or desktop, but when I'm on my phone or tablet SSH gets annoying. I decided to build a clean web interface that would allow me to perform various tasks without having to log in.
I'm a big fan of Material Design, so I decided to make a minimalist front end. I used JQuery ajax() to interface with the REST back end. I spent a long time deciding on which API engine to use, but ultimately chose Restler, because it is written in PHP. This allows for a very easy installation - I can drop in the files on any PHP compatible web server and the service is deployed. I might rewrite the backend in Flask or Django some day, but it works for now.
The Restler classes simply call various shell functions and return the stdout as a json string, which is decoded by the AJAX call on the frontend and displayed to the user.
This is one of those long running side projects that are eternally updated. A snapshot of my code can be found on my github, but this is not something I would call production ready. Right now there is scarce documentation, security is non existent, and all of the commands are hard coded in. If I decide to release this as a tool for the general public, it will need to be rewritten to support a nice config file and have a solid README, and have a ironclad authentication policy.
I have not enabled any security whatsoever, namely because I am the sole user on my home network, and all of the tasks are queries or hard coded shell commands. If I ever expose this service, I will need to come up with a good authentication mechanism. HTaccess seems like a good start, but if need be I can also build an auth module through the REST api.
I plan to keep adding more cards for various tasks. I'm thinking about adding one for synchronizing to a remote backup, and perhaps another one for initiating a system archive of the root filesystem.
With time, I may decide to make an Android App companion that will call the API directly. Seeing as I made the site mobile friendly this isn't a top priority, but it would be a fun exercise. For now, I have simply written a companion Android Wear App, the source for which can be found here.
Raid Status Output: