#summary Tracks progress for the GSoC 2011 project, GUI Overhaul (Fronted and Administration Interfaces)

<wiki:toc max_depth="3" />


= Introduction =

This page will track progress of the GSoC 2011 project, GUI Overhaul (Fronted and Administration Interfaces).
----

= Details =

These details will contain all tasks needed to done for this project, design / mockup for the tasks, etc.
----

= Proposed timeline =

My proposed timline
----

= Meetings and Agendas =

== May 10, 2011 ==

=== My result reported in this meeting: ===
 * I've set a live instance at http://akeda-melange.appspot.com
 * Started writing wiki page to track my project's progress

=== Meeting notes, copying from Leo's note: ===
 * Set up and run an online GAE instance before Thursday with your "View" from the first week.
 * Write a blog post about it (and other work you've done) before next Monday so it can be reviewed before our conference call.
 * Create a wiki page on Melange wiki for recording the progress of your project.
 * Plan a meeting with your mentor and add notes to your OWN project wiki page.

=== My plan for next week: ===

 * I'm planning to refactor melange.map.js to be more generic. As Mario has said the current status of melange.map.js functionalities is not supposed to be. It only provides map to organization home page. Other pages, such as profile and read only profile, have their own js files which, basically, have common usage of Google Maps API. The refactored melange.map.js should handle all maps functionalities, including my proposed function for MarkerClusterer.
 * Upload and crop features for org logo.
----

== May 16, 2011 ==

=== My result reported in this meeting: ===
Not yet

=== Meeting notes: ===
Not yet

=== My plan for next week: ===
Not yet
----