Web Development brief for "Really Simple Contacts"

Really Simple Contacts is a web based contact management system. As the name implies, it is very simple, it is not a CRM it is simply a place where people can store contact details with custom fields (and then export them later on for mailing lists etc).

The system should be written in PHP using the Symfony Framework Version 1.4 (and all forms on the site should utilize the Symfony forms framework). The Doctrine ORM should be used. 

The sfDoctrineGuardPlugin should be used to manage user permissions, access etc

Where additional required components are not present in the Symfony framework, PEAR
Libraries and/or Zend Framework components should be used to add additional
functionality if needed.

The Project:

Look and feel: The design should be professional and neat but does not need to becomplex and overly done. Simple is the name of the game. Web 2.0 style (eg big reflective fonts, gloosy backgrounds etc) would be nice.


  1. The homepage should outline what the site offers:
    • Simple contact management
    • Import contacts from CSV or Microsoft Excel Files
    • Output contacts to CSV or Microsoft Excel Files
    • Granular permissions for multiple user access
    • Create unlimited groups based on user-provided rules
    • Create umlimited custom fields for each contact record
  2. The homepage should have a sign up box and a login box prominently featured above the fold
  3. A user signs up by providing their name, email address and password (with confirm password option)
  4. When they successfully sign up, they are immediately and automatically logged in and taken directly to the "import contacts" screen
  5. The "import contacts screen" offers a simple "Wizard" style screen for allowing a user to import contacts into the system from CSV or Excel files. (There should be a "skip this step" link that lets the user jump straight into the admin, where they can manually add contacts).
  6. The default fields for a contact are:
    • Title (Mr, Mrs, Miss, Ms etc)
    • First Name
    • Surname
    • Address Line 1
    • Address Line 2
    • City/Suburb
    • State/Region
    • Postal Code
    • Country
    • Phone
    • Fax
  7. Additionally, users should be able to add an unlimited amount of custom fields that they can add to this list. Custom fields can either be a normal text field, a list of predefined options or a checkbox for boolean values.
  8. Users should be able to create named "groups", that they can assign users to. users can belong to one or more groups.

Import Contacts:

  • The first step in importing contacts is a user uploads a CSV or Excel file
  • The site should then show a table with two columns allowing a user to define which of the columns from their import file match with the fields in the system. Campaign Monitor do a nice job of this:

  • There should be a "create new field" option where the user can specify that an imported column should be imported into a custom field.
  • When they hit the submit button, the contacts shoud be loaded in.
  • If the user has defined any groups, there should also be an option to assign the imported users to one or more groups

Management Console:

  • Apart from the first login when the user is taken straight to the import wizard, when a user logs in, they should be taken to the main user console.
  • The console should show a sortable, paged list of contacts in the user's account and they can click on a record to view, edit or delete a record. There should be a filter allowing users to be filterd by name, group or email address
  • Users can click on any record to edit it (editing should be done in a lightbox so the user doesn;t leave their page of results to edit a record.
  • There should be an export button that lets the user export the currently shown list to excel or CSV
  • There should be an import button somewhere whih launches the import wizard
  • The should be a 'Create new contact" button which lets them create a new contact

User Permissions:

  • Each account will have an administor login (this is the one that was used to create the account).
  • An administratrator should be be able to create two types of users:
    1. Managers who can see all contacts
    2. Users - who can be limited to only view/edit certain contact groups