Ankit Ahuja

ProxyCal, a Webapp Built Out of Personal Needs

My college wanted us to do a project as part of a ”Bridge Course” this semester. In a way, I liked the concept as it was at least trying to convince some people to do something besides curriculum. Personally, it’s always good when you are working towards some objective like completing a project you have to submit. An example is last summer, when I had to create a project for the summer and I ended up doing a lot of fun stuff.

So, I thought, why not build a solution for a problem I have been facing for quite some time now. Those of you who know me personally or follow me on twitter, know that I am particularly unhappy about my college’s attendance criteria. It’s always been a headache for me trying to keep track of when I went to college and when I didn’t. I tried using Google Calendar but I thought it was pretty cumbersome to use for this particular purpose.

So, I thought, why not create a simple, easy-to-use and nice-looking webapp for exactly this purpose. That’s when ProxyCal was born. Even at the beginning, I had the idea in my mind of a calendar which used colors like green, red and yellow to denote the status for the day i.e. whether you went to college, took a leave or college was off. One more thing I wanted to do was to avoid anyone from creating a new account for using ProxyCal. So, I decided that I was going to store all the data regarding the attendance in a separate calendar ‘ProxyCal’ in the user’s Google Calendars.

So, all you need to use ProxyCal is to have a Google Account. This simplified things to quite an extent form the development point of view as it avoided me from maintaining a separate database for tracking a user’s attendance. I wanted my app to be ajaxy so I used the Google Calendar JavaScript API which meant I didn’t have to go through the tedious process of making XMLHTTPRequests to a proxy on my server which in turn used the Google Calendar Data API.

The entire app is almost completely developed using JavaScript. There is a bit of PHP to store some settings related data.

Some of the fun and useful features of ProxyCal are:

  1. By default, it assumes you went to college on weekdays and college was off on weekends i.e Sat and Sun. This means, when you visit the app after some time, it automatically assigns the default statuses to the previous days in the month.

  2. It uses the following color scheme:

    • Green - You went to college
    • Red - You took a leave
    • Yellow - College was Off
  3. It allows you to set the cutoff percentage i.e. what percentage of attendance you are supposed to meet on a monthly basis.

  4.  It also gives you an estimate of the no. of days you can take a leave in the current month.

  5. You can edit the status for any day by simply clicking on it. It display’s a popup where you can simply set the new status.

For those of you wondering where the name came from, it does have some logic behind it. This app, in essence, assumes that once you went to college you either attended all the lectures or atleast had someone call a proxy for you :) You cannot set attendance for all lectures separately. That would have made the app a little too complicated which was exactly the opposite of what I was striving to achieve.

ProxyCal is currently in beta. That means I am still working on it. Here are some features I would be adding soon:

  • Ability to store your weekly timetable so that it can give you an estimation of your attendance in each subject.

  • A screencast demonstrating use of ProxyCal. Even though it is very simple to use.

  • Ability to download a PDF of the attendance log for any selected time period.

  • ProxyCal does not work on Internet Explorer.

I have developed ProxyCal in an agile manner. I wanted to get it done quickly for two reasons. One, I couldn’t wait to start using it :). Also, I have to look up things for the coming summer so I don’t want to be stuck up on what I already know how to do.

And so, Proxycal is another example of an app I have built as a result of my personal needs. Maybe in future, I may think about creating something (similar to ProxyCal) which will be useful for a wider audience, like highlighting deadline for events.

You can start using ProxyCal by going here : http://ankitahuja.com/apps/proxycal

And as the footer of this app so prominently says,

“Thou shall not run short on attendance ever again!”

Here is a screenshot:

Feel free to suggest any features or report back any bugs or just comment. You can use the feedback tab on the left on the app page for this purpose.