Richard Bucker

webapp application stack

Posted at — Dec 19, 2011

I’m trying not to be a “bitter betty” over the time spent on Mojolicious so I’ve been refreshing my stack in order to prepare for future endeavors. In the meantime the application I’ve been building for a client required that the GUI be split into an API and a GUI rather than just an integrated GUI. At this point I have completed the API development and it’s as extensible and scalable as I could hope for. Now it’s time for the GUI stack.There are several missions here. a) python; b) tornadoweb; c) keep in mind the person making changes to this app will not likely be a pythonista (thank goodness). That’s it. Now I need to pick the rest of the tools. If there is some interest on your part then do some googling. They are easy to find. PyCharm IDE - not all of the future developers need or want to understand everything from the command line. virtualenv - handle different versions of python. easy_install and pip - needed for installing the different dependencies, however, distutils might be best for deploying your app pycurl - dep simplejson - dep (at some point it was incorporated directly into python) tornadoweb - web framework fabric - repetitive CLI tool modern-package-template - python project folder structure libevent - requests - simple http client APIs gevent - needed by requests pystache (from mustache) - templating without logic of any kind - I like it because it’s supported by so many platforms including JavaScript for client side and perl too. The best part is that any mustache file can be reused. nose - unit testing. daemontools - daemonize any userspace app. redis - but I’m not actually accessing redis directly although there is some room for cacheing.and my GUI elements: bootstrap - this cooked Less / CSS is great. The best part is the best practices but the files are easy enough to spoil if necessary. and it’s dependenciesIt’s a pretty simple setup from here and creating your first project is easy too. After some experimentation you’ll figure out the order that works best for you.