PHP, MySQL, and Contact Management: Contacts 0.1
Published 6 years 4 months ago on October 22, 2007 — 4 min read
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.
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.
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.
To install Contacts 0.1, you’ll need a server running PHP and MySQL. You can then follow these steps:
- Create a MySQL database and user with appropriate privileges
- Extract the archive and copy the contents into an empty folder
config.phpand enter the correct
install.phpin your browser (sets up table)
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)
- 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?