Title: Intelligent Book
Vision Statement
To create a simple, convenient web application that allows you to receive contact information maintained by your contacts, to access your contact information from just about anywhere, and to automatically notify friends when your contact information changes. We aim to make it such that you create your contact information once and share easily with others. You simply create your contact information, and the web application distributes it to whomever you want. It also means there's no need for you to keep adding or updating every one of your friends' contact information. If your friends are also using the web application, they'll update their contact information and the changes are universally reflected.Feature List
- Maintain one's own contact info (including per-item visibility to other people)
- Request to friend other people, thereby allowing the users to view the information that their friends allow them to see.
- Search for and browse friends. (Search will correct for any mistyping of friends' names or search criteria)
- Import and export from/to vCard and CSV format
- View changes to friends' contact info via an RSS feed
- Send emails to contacts (integrate with user's SMTP)
- "Friend Finder" - search for matches based on shared interests or common friends (if time permits)
- Get reminders of upcoming birthdays (if time permits)
Key Features (for initial iteration)
- Create a user
- Edit contact information
- Add other users as "Friends"
- Browse friends' contact information
Domain
The visibility of each item in a user's profile can be modified. This allows fine grained control over who can see the information (such as only showing your street address to friends and family but showing your city to everyone). The visibility is represented as a list of groups who can see that information. These groups are unique to each user. When adding another contact, the user specifies a group to place them in. The other contact can later be put in another group in addition. Some groups (such as a list of friends and of family) are enumerated by the user; others (such as friends of friends) are generated automatically. Another user can see the item if he is in any of the groups which is allowed to see it.
GUI Sketches
User updating own information
Browse a user's group of contacts
General Search
Friend Search
Invite a friend to join
Use-cases
Actors (for all use cases)- User - the person using the address book
- Friend - another user (or potential user) who is a friend (or family, colleague, etc.) of User
- User enters the search criteria into the search form.
- User clicks on the "Search" button.
- The query returns a list of matches.
- The query returns no results.
- The user refines his query and clicks on "Search" again.
- User selects a group to place Friend in.
- User clicks on the button labeled "Request to friend".
- User is notified that the request has been sent.
- Friend can confirm the request
- User enters a the name and email address of a friend who might not already be a member
- Users enters a custom message and sends the invitation
- The friend gets an email which lets them register and become friends with the user
- User clicks on "Import".
- User selects the file to import.
- The file format is invalid for import.
- The user selects a different file to import.
- The user's address book is updated.
- User clicks on "Export".
- User selects which contacts to export and the format to export as.
- A "Save As..." dialogue is displayed.
- The file is saved to disk.
- User enters the search criteria into the search form.
- User clicks on the "Search" button.
- The query returns a list of matches.
- User clicks on "View Contacts".
- User's contacts are displayed with basic informaton.
- User clicks Friend's entry to bring up all visible information belonging to Friend.
- User clicks on "Update Contact Info".
- The contact information edit form is displayed.
- User enters the desired information.
- User clicks on "Save".
- User's contact info is updated.
- The info entered in the form is invalid.
- Invalid fields are shown to the user.
- User reenters contact info.
- A package containing classes representing the model
- Hibernate with MySQL for data storage
- A package for utility and controller methods
- Java Server Faces for the frontend
- JBoss application server
- Google Maps to show location of friends' addresses
Request to friend | |
Primary Actor | User |
Secondary Actor | Friend |
Goal | User requests to be linked with Friend |
Main path |
|
Invitation to join | |
Primary Actor | User |
Secondary Actor | Friend |
Goal | User sends a request to Friend to join the site and become friends with User |
Main path |
|
Import | |
Primary Actor | User |
Goal | User can import their information from an existing vcard |
Main path |
|
Export | |
Primary Actor | User |
Goal | User can export a single contact or a list of contacts to a file (in order to import the contacts into other applications) |
Main path |
|
Search | |
Primary Actor | User |
Secondary Actor | Friend |
Goal | User searches through all people visible to them. |
Main path |
|
Browse Address Book | |
Primary Actor | User |
Goal | User can view a list of all their contacts (and their information) |
Main path |
|
Add/Update Contact Information | |
Primary Actor | User |
Goal | User can view a list of all their contacts (and their information) |
Main path |
![]() |
Sequence Diagram
![](images/UpdateContactSequenceDiagram.png)
This figure shows the sequence diagram for a user updating their information and setting its visibility.
Class Diagram
![](images/classdiagram.png)
Class Structure
Javadoc documenting the class structure