Sunday, May 10, 2009

Final Post

Results

The SalonBook project has continued to progress to the point where it is currently a functional prototype and proof of concept of a low cost, online scheduling system using PHP, MySQL, and HTML. Users can log in and access a variety of useful information all from their personal dashboard portal. Some of these features include peer reviews of salon and stylists, ability to make, view, and cancel appointments instantly on demand, review salons from past visits, accumulate and view points, search salons and contact information, and search salon promotions. The salon side of SalonBook has the same look and feel, but provides a different set of functions. In addition to many important features like making promotions, adding, removing, or editing stylists or beauty services, and viewing user ratings of their salon, salons have full online scheduling functionality. This was accomplished by integrating WebCalendar, a PHP-driven calendaring web application. The integration of WebCalendar was key to SalonBook because it offered important benefits that Google Calendars could not provide. For example, WebCalendar is open source, so all of the source code exists within my SalonBook directory. This makes my application completely stable, whereas outsourcing to Google left my application vulnerable to Google API changes or updates. WebCalendar also uses a MySQL database to store events, users, etc. This allows me to keep the WebCal meta data right next to my database tables for the rest of SalonBook. This gave me easy access to the data for retrieval, editing, and display; all necessary tasks for me to build the user appointment scheduling functionality. Also, I tweaked WebCalendar's HTML in order to give it the SalonBook look and feel. I incorporated the SalonBook banner logo, footer, and "Return to Dashboard" link into the WebCalendar interface to make it look and feel like part of the SalonBook application. For Salons, WebCalendar allows salons to easily visualize the schedule and make appointments manually. This feature of manually inserting appointments was identified from the outset as being critical because there would inevitably be a large percentage of clients that still call the salon directly to make appointments.

Overall, all major goals were accomplished for SalonBook. Below is a series of screenshots taken of the user and salon interfaces that better display the final results of this project.

User Interface:







Salon Interface:








Contributions

The contributions of this project to my knowledge base are extensive. Before starting, I had no previous experience with web development or any of the tools used for this application.

Database Design is an invaluable aspect of the process that I mastered in the early stages of the project. Building many-to-one relationships and robust databases were required in developing SalonBook. Familiarizing myself with SQL and database languages is also very useful going forward.

I also take away the combined understanding of PHP, MYSQL, and HTML, and how they come together to create a rich, database-backed web application.

Finally, web applications can become more than the sum of their parts with the successful integration of open source tools. Under limited time and resources, there is only so much one person can develop. However, by identifying appropriate open source projects and integrating them seamlessly, an application can become much more extensive and functional. Integrating WebCalendar, and widgets like the JavaScript date picker are perfect examples of this. If integrated poorly, these tools are obvious and detract from the user experience. Fortunately, I was able to integrate these tools well and package SalonBook as more than the sum of its parts.

In terms of contributions to the field, this prototype stands as a proof of concept for the idea of web-based appointment scheduling of any kind. Doctors’ offices, dentist offices, salons, and many other industries are in great need of online, on demand scheduling. This project proves that it is very possible to build this functionality with the above-mentioned tools at very low cost. All tools used were open source, except Dreamweaver.


Future Direction

Full integration of open source tools is critical in creating a seamless overall application. There are some ways in which WebCalendar was not integrated which I would like to pursue given more time.

The first is to automate WebCalendar account creation and login when those tasks are completed for the SalonBook application. This would require inserting a new Salon user into the appropriate WebCalendar database tables when a salon creates a SalonBook account. Of course, this would also ensure that the WebCalendar account information matches their SalonBook information. The same for login would be an important improvement. As it exists now, salons have to log in to the WebCalendar application additionally within the SalonBook system when they navigate to it via the Dashboard. Separate sign in is only required once per session though, as the login is stored throughout a session even as they go back and forth from WebCalendar to SalonBook. Even so, automated account creation and login are important integration features that would be next in line, given more time.

Also, a constraint of WebCalendar was that it only allowed a user to have one calendar. Ideally, a salon would have one calendar for each stylist. This could be achieved using an automated WebCalendar account creation script with a well-defined prefix naming system. Salons would be oblivious to what is actually going on behind the scenes, and simply be able to navigate to calendars that are tied to each stylist. When a salon would add a stylist, another WebCalendar account (and corresponding calendar) would be created, using a prefix of the stylist name and salon name. This would dramatically increase the power of the application as a schedule visualization and distribution tool. Availability would be more apparent, and schedules could be printed for each stylist at the start of the day.

Additionally, I would like to host the prototype online and run usability tests with surveys to gauge the effectiveness of the interface and functionality. This is a key step to perfecting the front-end interface and the functionality of the tools.

Finally, I would like to explore more dynamic, Web 2.0 tools like JavaScript, jQuery, and OpenLaszlo in more depth with the hope of making the interface richer for the user. Over the course of this project, I was able to get a small taste of these web development tools and their capabilities. They would allow me to give my application a more desktop software-feel on the web, with features like animation and drag-and drop. Unfortunately, I did not have enough time to fully explore them, and so that would be an addition improvement to consider going forward.