Description
Personal web project for managing my tango classes and rehearsals with different dance partners while using statistics and positive reinforcement strategies for preventing cancels and delays.
Screenshot
Skills
- Python with web2py for backend programming
- HTML5 (with javascript and jQuery for frontend programming)
- database designing with Cloud Datastore
Environment
- Wing IDE
- Mac OSX
- Google App Engine
- Chrome/Firefox (for testing and debugging the front-end)
Development Period
May to June, 2014
Project Status
The website is alive at http://samueltangocalendar.appspot.com/ . It was applied with success in terms of managing efficiently my tango classes and rehearsals until March, 2015, when I paused my dancing studies to dedicate myself fully to my indie game dev project.
The Problem To Solve
Tango dancer students in Buenos Aires have a pretty crazy life, having to conciliate several classes and professional actuations with different partners and, eventually, they may also have a non dancing career such as myself. In middle to all that, it is hard to conciliate people schedules efficiently and also it is very often the need to cancel, reschedule or being delayed to existing appointments for classes and rehearsals.
As I am very strict in managing my time and tasks efficiently I was constantly upset, while being afraid to push my partners too hard regarding that, damaging our relationship.
The Solution
While it is normal and acceptable someone eventually needs to be delayed or cancel an appointment, being hard to contest that, it is easy to agree that having these issues more than, let’s say, 30% of the times is not acceptable. However, only a crazy guy would be constantly making calculus and enforcing restrictions based on them.
Fortunately, automated systems can do all that for us, so I have created a tango studying system, combining statistics with a “financial compensation system” that would reimburse the value spent by them when sharing the costs of private classes, but only if they reach goals in terms of number of rehearsals, keeping cancel and delay averages below a previously agreed rate. The complete system proposal to partners can be found here (http://tinyurl.com/TangoSystem) (in Spanish).
Main Features Implemented
Personalized User Views: After login in, a partner is able to manage her own appointments and view just the time occupied by my other week commitments. Her stats for the last 4 weeks are shown at the top and, based on them, appointment time restrictions are enforced by the system and also the financial compensation due for each week would be calculated. Myself as system administrator am able to view and manage any appointment, create individual and weekly (auto-populating) commitments and also press the rehearsal “begin” and “end” buttons, that are the base for collecting the stats regarding delays and rehearsal duration average.
HTML5 and jQuery based front-end: Adapted from the open source jQuery Week Calendar from Rob Monie, the front end populates and updates the we calendar, performs the basic form filling verification and performs AJAX calls to communicate to the web2py backend, providing clear notifications to the user regarding incorrect usage or regarding the system rules.
Web2Py and Google App Engine Backend: Based on the web2py user login and registration system, the backend manages the Cloud Datastore database and pre-process the appointments information, keeping them stored on the Google App Engine memcache system, in such way accessing the database for reading operations was never needed after the first time, unless the cache gets erased by Google. When a user connects to the system only the relevant information for that specific user is picked and sent to the front end. The backend also perform the system statics and enforce the rules for new appointments.