Photo Album Hosting Application
Java web-based photo hosting application by Steve Kuo
Hosted at www.kuophotos.com
Photo Album is a complete web-based picture hosting application. Using this application, one can upload, organize and present their pictures to the public via the Internet. Album and picture descriptions can be added, picture display order specified, and detail viewing statistics tracked. Individual user accounts allow for concurrent multi-user hosting and access control. All functionality is accessible via a standard web browser.
I initially started development of this application to host my 2001 Taiwan and Australia trip pictures. I found that many of the public hosting services (Photopoint (now defunct) and Yahoo Photos) didn't meet my requirements. So as a solution to my own hosting needs as well as a software development exercise, I started work on Photo Album.
A brief feature list of Photo Album:
- All user interaction done via a standard web browser.
- Image formats includes JPEG and GIF. Images can be zipped together for convenient uploading.
- Transparent dynamic resizing of images (this relieves the user from having to pre-resize images before upload).
- Choice of image sizes when viewing.
- Images can be organized into albums.
- Albums and their images can have associated descriptions.
- Album and image view counts are kept track of.
- Exif metadata displayed while viewing a picture.
- Access control is provided for private albums.
- Multi-user support with password protected user accounts.
- Browser cookies are encrypted using DES.
- Login page is protected against brute force hacking by time limiting login attempts.
- Internal memory caching of commonly used objects for greater performance.
The application is implemented using the Java 2 Enterprise Edition (J2EE) framework and MySQL database. I chose Java for the following reasons:
Most suitable framework for web application development (at the time I start the project).
Recent experience using Java while at Insweb Corporation.
Ability to develop under Window and deploy on Linux.
The application is written in Java using the Servlet/JSP framework. MySQL relational database provides storage for all persistent objects (albums, images, view count, etc). HTML is used for the user interface. JavaScript for the UI is still being considered. For now, the application needs to support all browsers including those without JavsScript. The application is currently hosted on Linux using Apache web server, Tomcat application server, and MySQL releational database. In the past I have used Resin to host the application.
My development platform is using Sun's JDK on Windows with Tomcat. All source code, database scripts, and design documents are under source control using Microsoft Visual SourceSafe.
While not immediately apparent from the visitor's point of view, the application is quite complex. This is not your simple store-to/read-from database application. Rather it's very class/object centric with little processing done in the UI classes (your classic tiered architecture). The database acts as persistent storage for selected objects. There are currently about 80 java source code files and 12 database tables. I intend to make public on this website the architecture and design of the application including the object diagrams, database schema, and selected source code.
Future enhancements might include wireless device support, international language support, email notification of new pictures, and EJB on the backend. I may also make the application available via open source.
Thank you for taking interest in this application. Feel free to email me with any comments or questions.
Steve Kuo

www.stevekuo.com
Photo Album hosted at www.kuophotos.com
All content Copyright © 2003 Steve Kuo. All rights reserved.