Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
# Customer Relationship Manager
Your task is to design and build a simple Customer Relationship Manager (CRM) tool that can be used by organisations to keep track of their customers and partners and the interactions between them.
## Feature 1
When a user is logged in, the home screen should show a button labelled "**New contact**" which should take the user to a new screen where they can add new contacts. They should be asked to enter the following information:
1. The name of the contact.
2. The name of the company (optional).
3. A photo/image (optional).
3. Their address in a multi-line textbox (optional).
4. A contact phone number.
5. A contact email.
The system should also store the following without asking the user:
1. The user who added the contact.
2. The date and time the contact was added.
The fields marked (optional) mean they can be left blank when the user adds a new contact.
> To demonstrate this feature and to prove that the form works correctly you will need to show that the data is being persisted correctly, either by running a database query or an API call depending on the platform and technology you are using.
## Feature 2
The home screen should show a summary of all the contacts added by the logged-in user (but not those added by other users). The screen should display for each contact:
1. A photo (if supplied). If there is no available photo there should be a placeholder image.
2. Their name (first and last).
3. The name of the company (if apropriate).
4. The date the contact was added (but not the time).
## Feature 3
There should be a **View** link or button next to each summary on the home screen. This should take the user to the **Contact** page which should display all the information added in **Part 1**, including the user who added the contact and the date added (but not the time).
There should also be a form on the page where the user can make notes about any conversations they have had with that contact. The form should include:
1. A dropdown list containing the contact's phone number and email address so the user can indicate whether the conversation was by phone or email.
2. A multiline textbox where the user can write their notes.
In addition, the system should also store:
1. The user who added the note.
2. The date and time the note was added.
After adding the note it should be displayed on the screen alongside the contact details and the form. The displayed note should include the phone or email address selected, the date the note was added, the user who added the note and the contents of the note itself. If there are multiple notes they should all be displayed in reverse chronological order with the most recent at the top.
## Feature 4
You are now expected to add the following additional features:
1. When you create a new contact you should have the option to specify the frequency you want to get in touch with them, choices should be: weekly, fornightly, monthly, bi-monthly, quartly or half-yearly. Each time you leave a note this should reset the clock.
2. There should be a clear indication in the list of customers which ones are overdue for a chat. This should also be clearly shown when you open the details page.
3. There should be a way to edit the contact details or delete a contact (with a confirmation message that this is what you want to do.
## Feature 5
Now its time for the advanced features:
1. Add a map that has pins for each of your contacts showing where they are based. Clicking on a pin should show the summary information (name, company) and there should be a way to get from the map to the details screen.
2. It should be possible to add unlimited phone numbers and email addresses with each being given a label (such as "work phone". When adding a note the dropdown list should include options for all modes of communication.