Senior Programmer Needed for Energy Efficiency Web App

Details

Blue Planet Foundation is a nonprofit organization focused on promoting renewable energy and energy efficiency. This app is designed to educate users on how the devices in their home cost money, and provide tips on how to save energy and lower their utility bill, as well as offer rebates on new purchases.

We are in need of a programmer to provide the complete application logic, server-side functionality, and database management for our consumer energy web application. You will be organizing users, user's appliances, and developing algorithms to calculate energy usage. Additionally, the application requires administrative functionality to modify the database of appliances, tips, users, as well as provide reporting on aggregate user data.

This is a modern, responsive web application that must be fully functional on a variety of browsers, resolutions, and operating systems including: desktop, tablet, mobile, iOS, Android, Chrome, Firefox, Internet Explorer, Safari. This is not a native app, but should run well on mobile browsers.

You must be available to communicate and integrate with other developers working on design and client-side code using the Twitter BootStrap and jQuery frameworks, and the Flot charting library. We currently use Skype for communicaion, but are open to other means as well. You must be familiar with GitHub version control.

You must be able to provide recommendations for maintaining and deploying to separate development and production hosting environments. We have no preference of languages or frameworks, but you must be able to communicate the reasoning for your choice of technology (such as MySQL, PostgreSQL, Ruby/RoR, PHP, JSON, XML, Zend, etc.).

Requirements Include:
* Database creation and maintenance. Includes user data, home appliances and devices, categories, energy consumption patterns, device usage patterns, purchase rebates, and more.
* System emails, reminders, and app notifications.
* Game-like achievements and pop-ups.
* Simple interactive 'complete-the-picture' puzzle mechanic.
* New user walkthrough/tutorial and account initialization.
* Security audit including proactive prevention of SQL injection and input validation, lockdown of server settings to prevent unauthorized access.
* Social integration (sharing and inviting friends on Facebook and Twitter) - custom of via ShareThis.
* User log in and new account sign up.
* Integrate Flot charting library to render data graphs.
* HTTPS security.
* Secure administrative features providing easy-to-use tools to update the database of users, appliances, tips, rebates, etc. Also tabular and graphical reports on aggregate user data - such as most expensive device categores and more.
* Friendly catches for user and system errors and 404.
* Maintain bugs in GitHub issues tracker.
* Future support for additional functionality at a later time (details provided when hired).
* Future support for porting to native mobile applications using PhoneGap.
* Support for a maintenance mode toggle that allows streamlined updating of data and code to the production server, while locking users out with a friendly message.

Additional details provided when project begins and are available on the project GitHub wiki.

Deliverables:
* Final bug-free (as can be) application functionality, working on modern desktop and tablet browsers (see list above). This means a complete user and administrative experience. Example: A user will be able to create an account, customize his/her profile, evaluate reports and find trends, select money-saving tips, leave with a to-do list, return and mark off "done" items, and see a report of the money they can or did save.
* Working and final code files (e.g. HTML, JavaScript, CSS, PHP, Ruby, SQL) maintained and delivered to the organization account on GitHub.
* Working and final code deployment to development and live production servers.

We will only respond to proposals that reiterate an understanding of the design requirements. Previous experience with energy industry a bonus.