Django Project Template and Vagrant Development Environment
Kinsa Environment sets up standard development environment for Python Web application development work.
This project arouse out of two needs: freelancers and teammates working within a diverse set of operating systems and using a diverse set of tools needing to use and access a common development environment without having to setup that environment in their own unique system, and the want to shortcut the installation of the same things for every new development project, every time.
Vagrant, Berkshelf, Omnibus, Chef
Vagrant makes it easy to configure reproducible development environments by wrapping a series of commands around a provisioning tool like Chef which automates the installation of configuration of the environment and installs packages. Berkshelf and Omnibus tag the installed versions of packages and Chef respectively to ensure that once a configuration is working, it will continue to work.
Ubuntu Linux, PostgreSQL, VirtualEnv, PIP, RubyEnv, Git
The Ubuntu operating system is a widely-used and widely-available Linux distribution that we use in production as well as development. PostgreSQL is a relational database system with arguably the best support from the Django framework and community. VirtualEnv allows us to version and separate the Python packages installed. PIP allows us to script the installation of those packages. RubyEnv segregates our Ruby and Gem installations and we use Git for version control.
Django Newproj Template
Django Newproj Template is a separate project, although intended to be used with the Kinsa Environemnt, which takes advantage of Django’s ability to load in a starting template for new projects allowing us to skip installing the same base set of applications, copying in the same base set of templates, and plumbing the same base set of URLs to views every time.
Django Newproj Template follows a set of best practices for Django Web application development including the separation of settings and requirements files between environments, something that's made easier by the Kinsa Environment which knows to make special accommodations for loading a specific settings file. The Kinsa Environment also sets up shortcuts for port forwarding out of the virtual environment back to the host operating system so commands like runserver work. Finally, it sets up the project to follow the best practice of using the same database system in development and production, PostgreSQL, something else that is made possible by Kinsa Environment’s installation and configuration of that database system.
Gesso, Compass, Susy, SASS
I created Gesso way back before Twitter Bootstrap, Zurb Foundation or any of the other frontend frameworks existed. At that time it loaded a CSS reset (the Eric Meyer), set up a few font stacks, a baseline grid, and added some hacks for dealing with Internet Explorer 6’s unique interpretation of the CSS standard. Gesso has since evolved to be the primer coat for a Compass-based SASS project. Like Django Newproj Template it takes the begging configuration steps of setting up a series of stylesheets that rely on the Compass framework and Susy responsive grid system, calling a reset, establishing vertical rhythm, and following some best practices like defining variables in a separate file. It is also tightly integrated with Django Newproj Template and the way that
<form> elements get assembled by Django for styling and layout purposes.
Git Flow was introduced to me by a colleague and is a work-flow process I’ve embraced whole-heartedly for releases of software projects. Git Flow is a set of tools wrapped around a theory of process for Git branching that works very well for organizing development, hotfix, and release branches.
HTML5, jQuery, Modernizr.js
Kinsa Environment fetches the frontend tools necessary to create an interactive application and make it play nice in a variety of sandboxes. By using Kinsa Environment to fetch these frontend tools, the HTML templates in Django Newproj Template can expect them to be in a certain location and named a certain thing so they don’t have to be re-downloaded and placed every time. Django Newproj Template also knows a thing or two about SEO and sets up the frontend to follow technical best practices for building a findable, speedy, validating website while also including placeholders for the necessary metadata and content bits to enable easy the process of finding and sharing the resulting product.
Installation and Usage
See the Readme file for installation instructions.