From d2394e7c3e73cce1893232d3e3c4889f31a32079 Mon Sep 17 00:00:00 2001 From: Ricco Lim Date: Tue, 1 Oct 2024 22:05:17 +0800 Subject: [PATCH 1/3] Update User Stories and Glossary for DeveloperGuide.md --- docs/DeveloperGuide.md | 58 ++++++++++++++++++++++++++++++++---------- 1 file changed, 45 insertions(+), 13 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 9fe677d1e4c..44f17b80b6c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -4,7 +4,7 @@ pageNav: 3 --- -# AB-3 Developer Guide +# WedLinker Developer Guide @@ -13,7 +13,7 @@ ## **Acknowledgements** -_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_ +This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org). -------------------------------------------------------------------------------------------------------------------- @@ -287,16 +287,45 @@ _{Explain here how the data archiving feature will be implemented}_ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can…​ | -|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------| -| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App | -| `* * *` | user | add a new person | | -| `* * *` | user | delete a person | remove entries that I no longer need | -| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list | -| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident | -| `*` | user with many persons in the address book | sort persons by name | locate a person easily | - -*{More to be added}* +| Priority | As a …​ | I want to …​ | So that I can…​ | +|:--------:|-----------------|----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `* * *` | user | add tag each contact based on created tags such as florist, musician etc | I can easily understand the group this person belongs to | +| `* * *` | user | add the address associated with each contact | I can easily find the address of each contact. | +| `* * *` | user | filter contacts by tag | I can quickly see all the groups under the same tag, and find the right vendor based on the type of services provided | +| `* * *` | user | add new contacts into WedLinker | I can store the contact details of new contacts | +| `* * *` | user | delete contacts that are no longer needed | I can remove unnecessary contacts and have a more organised address book | +| `* * *` | user | search for contact by name | I can find specific contacts that I am looking for | +| `* * *` | user | create tags | I can have special categories for non traditional vendors | +| `* *` | user | edit information such as the contact number and address of each contact | all contacts have the most updated information | +| `* *` | careless user | receive a prompt that requires me to key in a confirmation that I want to delete a contact or clear the address book | I will not lose all my contacts when i accidentally type delete/ clear | +| `* *` | user | assign each guest contact its dietary requirements status | I can track the dietary requirement of each guest. | +| `* *` | user | sort contacts by alphabetical order | I can easily find the contacts required in a large addressbook. | +| `* *` | user | assign additional information for each contact | I can include important notes that may not fit into other categories, such as reminders for what the contact might need | +| `* *` | user | assign dates to a wedding | I can keep track of when different weddings are scheduled | +| `* *` | first-time user | see some sample contacts already available in the app | I can try out the different features without needing to add my own data (e.g allocating people to wedding, allocating task to contacts) | +| `* *` | first-time user | see a help message showing all the commands/feature I can use | I can try out all the different features by referring to the message | +| `*` | user | assign tasks to contacts | I can track which tasks have been assigned to each contact. | +| `*` | user | update the status of tasks of contacts | I can track the status of completion of the tasks assigned to contacts | +| `*` | user | add a tag to each guest indicating their table number | track the table each guest is seated at | +| `*` | user | key in the table number and get the list of guests seated at that table | I can quickly identify all the groups seated at one table | +| `*` | user | assign a rating out of 5 to each vendor | I can track the experience with this vendor for future reference | +| `*` | busy user | add multiple wedding events | I can track contacts for multiple weddings at once | +| `*` | busy user | tag each contact to a wedding | I can easily see which contacts are relevant to which wedding | +| `*` | user | send out (standardised formatted) information (text/email) from the application | I can efficiently send out information without any mistakes | +| `*` | user | share the contact details to relevant third-parties for bookings (eg: venue bookings, suit/dress rental, etc.) | I can easily send out all relevant information (including dietary restriction, and other tags) to all the third-parties | +| `*` | user | exclude tags from search and filter | I can focus on contacts that are relevant to certain events or requirements without being overwhelmed by unnecessary information | +| `*` | busy user | autocomplete existing tags when user is inputting tag information | I can quickly assign roles for people that might be working with others I have already input into the system and not have to type the same roles in multiple times | +| `*` | user | assign availability to vendors | I can check who will be available for a particular wedding | +| `*` | user | filter availability of vendors | I can easily find vendors that can cater to a wedding | +| `*` | user | store multiple contact methods | I can contact the vendors through different means | +| `*` | user | re-assign tasks to another contact | I can account for vendors suddenly being unavailable | +| `*` | user | set reminders for tasks to different contacts | I can easily track and follow up with clients and vendors for deliverables | +| `*` | user | see a list of all tasks and reminders I have assigned to contacts in its own window | I can quickly and easily see what my earliest priorities are and act on them quickly | +| `*` | user | see a calendar view of tasks, reminders, and weddings I have assigned | I can see the whole timelines of my planned weddings and see how much time there is between tasks | +| `*` | user | set privacy setting for different contacts | I can keep personal and sensitive information private when sharing address book | +| `*` | forgetful user | create links between different contacts, such as assigning a vendor to a bride or groom in a wedding | I can easily navigate from key stakeholders in the wedding that I remember better to vendors who I might not remember as well | +| `*` | user | add certain vendors as favorites | I can remember which vendors performed well and see if they are favorites | +| `*` | user | access a list of all my favorite vendors | I can easily check who the best vendors were that I previously engaged with | ### Use cases @@ -338,7 +367,10 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli ### Glossary * **Mainstream OS**: Windows, Linux, Unix, MacOS -* **Private contact detail**: A contact detail that is not meant to be shared with others +* **Contact**: Contact details of an entry which includes minimally a name. Phone number, address, email address and tags are optional. +* **Tag**: An custom-made field that can be associated to contacts for ease of grouping/filtering +* **Vendor**: Businesses or persons who offer wedding services, like florists, musicians, venue in-charge, etc. +* **User**: The wedding planner who is using WedLinker -------------------------------------------------------------------------------------------------------------------- From 5d288edf329978491a7f73ec3b613024700fb0d8 Mon Sep 17 00:00:00 2001 From: riccoljy Date: Thu, 3 Oct 2024 10:51:48 +0800 Subject: [PATCH 2/3] Update User Stories according to Google Sheets --- docs/DeveloperGuide.md | 83 ++++++++++++++++++++++-------------------- 1 file changed, 44 insertions(+), 39 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 44f17b80b6c..bcbedd946cf 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -287,45 +287,50 @@ _{Explain here how the data archiving feature will be implemented}_ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` -| Priority | As a …​ | I want to …​ | So that I can…​ | -|:--------:|-----------------|----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `* * *` | user | add tag each contact based on created tags such as florist, musician etc | I can easily understand the group this person belongs to | -| `* * *` | user | add the address associated with each contact | I can easily find the address of each contact. | -| `* * *` | user | filter contacts by tag | I can quickly see all the groups under the same tag, and find the right vendor based on the type of services provided | -| `* * *` | user | add new contacts into WedLinker | I can store the contact details of new contacts | -| `* * *` | user | delete contacts that are no longer needed | I can remove unnecessary contacts and have a more organised address book | -| `* * *` | user | search for contact by name | I can find specific contacts that I am looking for | -| `* * *` | user | create tags | I can have special categories for non traditional vendors | -| `* *` | user | edit information such as the contact number and address of each contact | all contacts have the most updated information | -| `* *` | careless user | receive a prompt that requires me to key in a confirmation that I want to delete a contact or clear the address book | I will not lose all my contacts when i accidentally type delete/ clear | -| `* *` | user | assign each guest contact its dietary requirements status | I can track the dietary requirement of each guest. | -| `* *` | user | sort contacts by alphabetical order | I can easily find the contacts required in a large addressbook. | -| `* *` | user | assign additional information for each contact | I can include important notes that may not fit into other categories, such as reminders for what the contact might need | -| `* *` | user | assign dates to a wedding | I can keep track of when different weddings are scheduled | -| `* *` | first-time user | see some sample contacts already available in the app | I can try out the different features without needing to add my own data (e.g allocating people to wedding, allocating task to contacts) | -| `* *` | first-time user | see a help message showing all the commands/feature I can use | I can try out all the different features by referring to the message | -| `*` | user | assign tasks to contacts | I can track which tasks have been assigned to each contact. | -| `*` | user | update the status of tasks of contacts | I can track the status of completion of the tasks assigned to contacts | -| `*` | user | add a tag to each guest indicating their table number | track the table each guest is seated at | -| `*` | user | key in the table number and get the list of guests seated at that table | I can quickly identify all the groups seated at one table | -| `*` | user | assign a rating out of 5 to each vendor | I can track the experience with this vendor for future reference | -| `*` | busy user | add multiple wedding events | I can track contacts for multiple weddings at once | -| `*` | busy user | tag each contact to a wedding | I can easily see which contacts are relevant to which wedding | -| `*` | user | send out (standardised formatted) information (text/email) from the application | I can efficiently send out information without any mistakes | -| `*` | user | share the contact details to relevant third-parties for bookings (eg: venue bookings, suit/dress rental, etc.) | I can easily send out all relevant information (including dietary restriction, and other tags) to all the third-parties | -| `*` | user | exclude tags from search and filter | I can focus on contacts that are relevant to certain events or requirements without being overwhelmed by unnecessary information | -| `*` | busy user | autocomplete existing tags when user is inputting tag information | I can quickly assign roles for people that might be working with others I have already input into the system and not have to type the same roles in multiple times | -| `*` | user | assign availability to vendors | I can check who will be available for a particular wedding | -| `*` | user | filter availability of vendors | I can easily find vendors that can cater to a wedding | -| `*` | user | store multiple contact methods | I can contact the vendors through different means | -| `*` | user | re-assign tasks to another contact | I can account for vendors suddenly being unavailable | -| `*` | user | set reminders for tasks to different contacts | I can easily track and follow up with clients and vendors for deliverables | -| `*` | user | see a list of all tasks and reminders I have assigned to contacts in its own window | I can quickly and easily see what my earliest priorities are and act on them quickly | -| `*` | user | see a calendar view of tasks, reminders, and weddings I have assigned | I can see the whole timelines of my planned weddings and see how much time there is between tasks | -| `*` | user | set privacy setting for different contacts | I can keep personal and sensitive information private when sharing address book | -| `*` | forgetful user | create links between different contacts, such as assigning a vendor to a bride or groom in a wedding | I can easily navigate from key stakeholders in the wedding that I remember better to vendors who I might not remember as well | -| `*` | user | add certain vendors as favorites | I can remember which vendors performed well and see if they are favorites | -| `*` | user | access a list of all my favorite vendors | I can easily check who the best vendors were that I previously engaged with | +| Priority | As a …​ | I want to …​ | So that…​ | +|:--------:|---------------------------|----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `* * *` | user | add tag(s) to each contact based on created tags such as florist, musician etc. | I can easily understand the group this person belongs to | +| `* * *` | user | add a phone number associated with each contact | I can easily find the contact information for each contact. | +| `* * *` | user | add the address associated with each contact | I can easily find the address of each contact. | +| `* * *` | user | filter contacts by tag | I can quickly see all the groups under the same tag, and find the right vendor based on the type of services provided | +| `* * *` | user | add new contacts into WedLinker | I can store the contact details of new contacts | +| `* * *` | user | delete contacts that are no longer needed | I can remove unnecessary contacts and have a more organised address book | +| `* * *` | user | search for contact by name | I can find specific contacts that I am looking for | +| `* * *` | user | create tags | I can have special categories for non traditional vendors | +| `* *` | user | edit information such as the contact number and address of each contact | all contacts have the most updated information | +| `* *` | user | clear all the contacts in the system | I can clear all my contacts quickly without having to individually delete them if I want to add in a completely new set of contacts | +| `* *` | careless user | receive a prompt that requires me to key in a confirmation that I want to delete a contact or clear the address book | I will not lose all my contacts when I accidentally type delete/ clear | +| `* *` | user | assign each guest contact its dietary requirements status | I can track the dietary requirement of each guest. | +| `* *` | user | sort contacts by alphabetical order | I can easily find the contacts required in a large address book. | +| `* *` | user | assign additional information for each contact | I can include important notes that may not fit into other categories, such as reminders for what the contact might need | +| `* *` | first-time user | see some sample contacts already available in the app | I can try out the different features without needing to add my own data (e.g allocating people to wedding, allocating task to contacts) | +| `* *` | careless, first-time user | reload the sample contacts into the app | I can continue trying out different features without needing to add my own data in case I accidentally cleared the contacts | +| `* *` | first-time user | see a help message showing all the commands/feature I can use | I can try out all the different features by referring to the message | +| `*` | user | assign tasks to contacts | I can track which tasks have been assigned to each contact. | +| `*` | user | update the status of tasks of contacts | I can track the status of completion of the tasks assigned to contacts | +| `*` | user | add a tag to each guest indicating their table number | track the table each guest is seated at | +| `*` | user | key in the table number and get the list of guests seated at that table | I can quickly identify all the groups seated at one table | +| `*` | user | assign a rating out of 5 to each vendor | I can track the experience with this vendor for future reference | +| `*` | busy user | add multiple wedding events | I can track contacts for multiple weddings at once | +| `*` | busy user | tag each contact to a wedding | I can easily see which contacts are relevant to which wedding | +| `*` | user | assign dates to a wedding | I can keep track of when different weddings are scheduled | +| `*` | user | assign dates to a wedding | I can keep track of when different weddings are scheduled | +| `*` | user | filter contacts by wedding | I can keep track of which contacts are relevant for each wedding | +| `*` | user | send out (standardised formatted) information (text/email) from the application | I can efficiently send out information without any mistakes | +| `*` | user | share the contact details to relevant third-parties for bookings (eg: venue bookings, suit/dress rental, etc.) | I can easily send out all relevant information (including dietary restriction, and other tags) to all the third-parties | +| `*` | user | exclude tags from search and filter | I can focus on contacts that are relevant to certain events or requirements without being overwhelmed by unnecessary information | +| `*` | busy user | autocomplete existing tags when user is inputting tag information | I can quickly assign roles for people that might be working with others I have already input into the system and not have to type the same roles in multiple times | +| `*` | user | assign availability to vendors | I can check who will be available for a particular wedding | +| `*` | user | filter availability of vendors | I can easily find vendors that can cater to a wedding | +| `*` | user | store multiple contact methods | I can contact the vendors through different means | +| `*` | user | re-assign tasks to another contact | I can account for vendors suddenly being unavailable | +| `*` | user | set reminders for tasks to different contacts | I can easily track and follow up with clients and vendors for deliverables | +| `*` | user | see a list of all tasks and reminders I have assigned to contacts in its own window | I can quickly and easily see what my earliest priorities are and act on them quickly | +| `*` | user | see a calendar view of tasks, reminders, and weddings I have assigned | I can see the whole timelines of my planned weddings and see how much time there is between tasks | +| `*` | user | set privacy setting for different contacts | I can keep personal and sensitive information private when sharing address book | +| `*` | forgetful user | create links between different contacts, such as assigning a vendor to a bride or groom in a wedding | I can easily navigate from key stakeholders in the wedding that I remember better to vendors who I might not remember as well | +| `*` | user | add certain vendors as favorites | I can remember which vendors performed well and see if they are favorites | +| `*` | user | access a list of all my favorite vendors | I can easily check who the best vendors were that I previously engaged with | ### Use cases From fde302ee2646069ae50196749d0afcc76052b8a0 Mon Sep 17 00:00:00 2001 From: Ricco Lim Date: Thu, 3 Oct 2024 18:07:43 +0800 Subject: [PATCH 3/3] Add "Won't have"s to User Stories --- docs/DeveloperGuide.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e3ada856568..3c59d53a2f4 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -285,7 +285,10 @@ _{Explain here how the data archiving feature will be implemented}_ ### User stories -Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` +Priorities: +High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*` + +Those without any stars are user stories that were considered but will not be implemented at this time. | Priority | As a …​ | I want to …​ | So that…​ | |:--------:|---------------------------|----------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -331,6 +334,10 @@ Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unli | `*` | forgetful user | create links between different contacts, such as assigning a vendor to a bride or groom in a wedding | I can easily navigate from key stakeholders in the wedding that I remember better to vendors who I might not remember as well | | `*` | user | add certain vendors as favorites | I can remember which vendors performed well and see if they are favorites | | `*` | user | access a list of all my favorite vendors | I can easily check who the best vendors were that I previously engaged with | +| | user | generate a checklist of all the contacts for a particular wedding, grouped by roles | I can keep track of who is meant to be present at the wedding | +| | user | assign a time for each contact for when they are meant to arrive | I can easily keep track of which people are on time and check who to contact in case they have not arrived yet | +| | user | attach extra documents as a file to various contacts | I can store all the information in one place, eg. Invoices from a vendor | +| | user | categorize tasks based on its nature (e.g. procurement, arrangement) | I can view tasks in a more organised manner | ### Use cases