Addressbook is a convenient web application that can be used to manage your personal address book. Since it is a web application, you can set it up to be accessed from anywhere you choose, by anyone you wish.


  • Create, update, delete, or display information specific to each contact, including name, birth date, email address, website, work phone number, cell phone number, and more.
  • Create, update, delete, or display information specific to each address, including two lines for the street address, city, state, zip, and home phone number.
  • Create, update, delete, or display groups of addresses, which can be used to generate a PDF document of mailing labels suitable for printing.
  • Addresses can be assigned a primary and secondary contact, so that the Addressbook knows who to list as the addressee when generating mailing labels.
  • Addresses can be linked to one or more contacts, saving you from having to enter common information, like address and home phone number, over and over.
  • Label addressees can be configured based on “address types” such as “individual” (Mr. X), “family” (The X Family), “married couple” (Mr. and Mrs. John and Beth X), “unmarried couple” (Mr. John X and Ms. Beth Y).
  • Search for contacts by full or partial last name.
  • Database backed, and supports any database that the Rails web framework supports.
  • Snappy Ajax interface.
  • Mobile optimized contact list and contact details, for viewing your address book on the go.

Screen shots




The Addressbook application was born out of my need to occasionally access my personal address book at work. At the time, I was using an Access database to hold all of the information. I had a couple queries, like find by last name, and reports that generated mailing labels that made this a convenient option. However, I was unable to access any of this information when not sitting at my home PC. So, I carried around the printout of a report containing all of the phone numbers for a while, but simply put, that sucked. It was huge, giving me the Costanza wallet effect. It was hard to read, with ink smudges and folding creases. And, most importantly, it was out of date the minute I printed it.

Enter Addressbook 1.0. The first version of this application was a Java applet. The applet was backed by an XML file created by Access, which contained all of the necessary contact information. It parsed the XML file at init, and displayed a tree of everybody’s name on the left side, and their contact information (when the contact was clicked) on the right side. This slimmed down my wallet, and addressed the readability issues listed above. However, it did not address the fact that the list was out of date the minute it was generated. This also introduced a few new problems. First, I didn’t know anything about HTTP authorization at the time, so at init the applet popped up a window asking the user for a password. It wouldn’t parse the XML file until the correct password had been entered. The password itself was hard coded into the applet. In addition, the XML file was WIDE OPEN on the server. If you knew where it was, you could simply pull it up using a web browser. It’s not like this file contained anybody’s credit card information, but I still didn’t want my friends’ and family’s information out there on the web for anybody to see.

It wasn’t long before I grew unsatisfied with the first version. This was right around the time I started reading about the Ruby on Rails web framework, Ajax, Javascript, and some other web technologies I had wanted to try out. I figured this would be a good first project.


The first thing that pops into my head when thinking about Addressbook is its heavy use of Ajax, largely because one of the goals of the project was for me to learn about Ajax. I have since come to realize that Ajax is like garlic. Good when sprinkled in here and there, but bad when over used. Over using it breaks that browser’s back button. There are also browser compatibility hurdles that need to be leaped when writing any kind of Javascript based web application (not saying this can’t be done, I just don’t care to do it). Otherwise, I really like Addressbook. It works well, and I use it frequently.