PHP, MySQL, and Contact Management: Contacts 0.1

I’ve always been a bit obsessed with keeping an up-to-date list of contacts. I think it goes hand in hand with the OCD I’ve diagnosed myself with when it comes to computers and my using them. One thing that seems to constantly come up in the office is a lack of client contact information. Different people have different ways of storing such information. Some have a physical address book, some keep everything on their computers, and others are able to remember everything they need.

I thought this little problem of mine would be a good reason to whip up a really simple address book we could run on our in-house server. The idea would be to keep an up to date listing of basic contact information for any clients we’ve ever done business with. It wouldn’t be anything spectacular, just an easy way to enter in basic contact information for people, and group them by their company. This past weekend, I fired up Coda and got to work.

Contacts. FOSS contact management.

Screenshot of Contacts 0.1

Contacts is a really simple application modeled after many desktop address books. When you bring it up, you’re given a list of entered contacts, as well as a list of companies that have been entered. Clicking a company name will limit the contacts list to only those contacts which are part of the selected company. Clicking a contact name will take you to a details page which contains information about the selected contact. This details page is (partially) equipped with hCard. At the bottom of the details page, you’re able to edit or delete the active contact.

I told you it was basic.

Contacts uses some icons from the famous Silk icon set, as well as an icon from the Tango icon set.

Getting on to the demonstration

The demonstration is the best part. You can check out the Contacts 0.1 Demo and see what it’s all about. The demo does have some restrictions you should know about. First and foremost, when you hit the demo, you’ll be asked for your name. This is used to ensure that any data you add/remove/edit will be seen only by you. Obviously this is a very simple solution, and there is a chance that two people could enter the same name. Please keep this in mind before entering any sensitive data. Also, the database will be purged on a regular basis to control table size. If your data goes missing while you’re checking out the demonstration, (hopefully) it’s just the clean-up process.

The live demo has been temporarily disabled due to a recent server change.

I can’t stress enough that this version is very early in development, so if you do happen to come across any bugs or awkward behavior, please take a few minutes to send me an email.

Contacts is definitely a work in progress

The 0.1 release of Contacts is definitely a work in progress. As Colin Devroe reminded me; “FOSS is always release early, release often”. I’m going to keep this in mind and mark this project as ‘live development’. In much of the same style as a live redesign, this project will [ideally] be updated often, and I’m going to chronicle the changes as I go along.

Download Contacts 0.1

To install Contacts 0.1, you’ll need a server running PHP and MySQL. You can then follow these steps:

  1. Create a MySQL database and user with appropriate privileges
  2. Extract the archive and copy the contents into an empty folder
  3. Edit config.php and enter the correct DB_NAME, DB_USER, and DB_PASSWORD
  4. Hit install.php in your browser (sets up table)
  5. Delete install.php

Feature Requests

As I was working on Contacts, there were a number of things that came to mind that I’d like to include as features go. My main goal with this project was to end up with a simple and lightweight contact management Web app, so I don’t want to bloat things with completely superfluous features. Some of the things I plan on adding:

  • Better hCard support
  • Multiple phone numbers
  • Phone number types (i.e. work, home, mobile, etc)
  • Multiple email addresses
  • Mobile version
  • Better search functionality (currently only works with single words)
  • Progressive enhancement via JavaScript
  • Optimized database structure

My list goes on, and I hope to implement these features as soon as possible. What other features would you like to see in Contacts? Is it something that’s of any use to anyone besides me?