"Hey, let's start a company," you say.
"Ok. Let's do it. What should our company do?"
"Well..." you begin, "what do people need? What will they find valuable?"
"I know I always need help keeping things organized."
"Yeah," you say, pondering the idea. "Organization. That's good. What should we organize? ...I know: Blog Posts!"
"Great idea!"
"We'll make millions!"
Our new business will create a software product to allow people save info about favorite blog posts, authors and blogs.
In order to test the new business idea, we'll create a Proof of Concept (POC). This POC will be a simplified implementation of the idea that will be used to test the business idea to ensure that customers would find it valuable, and also to allow the team to get a handle on the concept. After we complete the POC we will use it to evaluate our business idea and determine if we need to pivot (change direction) toward another idea.
For our POC, we will build a command line app in C# and save our data in SQL Server.
As the application user, I would like to see a pleasant greeting when I start the application because I like pleasant greetings.
Given a user starts the program from the command line When the program starts Then a pleasant greeting should appear above the main menu
As an application user, I would like to see a list of my options when I start the application.
Given the user has started the program Or the user has returned to the main menu from a child menu When the main menu appears Then the following options should be displayed
As an introspective person I would like to record my thoughts so that I may revisit the later.
A Journal Entry should have: A title Text content A creation date
Given the user is viewing the Journal Management menu When they select the option to add a journal entry Then they should be prompted to enter the new entry's title and content Then the new journal entry should be saved to the database with the current date and time saved as the creation date
As an introspective person, I would like to see a list of my previous journal entires so that I can revisit my thoughts over time.
Given the user is viewing the Journal Management menu When they select the option to list journal entries Then they should be presented with a list of journal entries including title, creation date and text content
As an introspective person, I would like the ability to remove a journal entry so that I can get something I regret writing out of my life.
Given the user is viewing the Journal Management menu When they select the option to remove a journal entry Then they should be presented with a list of entries to choose from Given the user chooses an entry When they enter the selection and hit enter Then the journal entry should be removed from the database
As an introspective person, I would like the ability to edit my journal entries so that I can clarify my thoughts and/or fix spelling and grammatical errors.
Given the user is viewing the Journal Management menu When they select the option to edit a journal entry Then they should be presented with a list of entries to choose from Given the user chooses an entry When they enter the selection and hit enter Then the user should be given the ability to enter new information for the entry's title and content Given the user has been prompted to enter a new value for a property When the user hits enter without typing anything Or When the user only enters spaces Then the property's value should NOT be changed NOTE: the user should NOT be able to change the creation date
As a blog connoisseur I would like to save blog authors so that I can keep track of my favorites.
An Author should have: A first name A last name A short bio
Given the user is viewing the Author Management menu When they select the option to add an author Then they should be prompted to enter the new author's first name, last name and bio Then the new author should be saved to the database
As a blog connoisseur I would like to view a list of my blog authors so that I can refresh my memory as to my favorites.
Given the user is viewing the Author Management menu When they select the option to list authors Then they should see each Author's first and last name
As a blog connoisseur I would like to remove a blog author from my list so that I can keep the list limited to my current favorites.
Given the user is viewing the Author Management menu When they select the option to remove an author Then they should be presented with a list of authors to choose from Given the user chooses an author When they enter the selection and hit enter Then the author should be removed from the database
As a blog connoisseur I would like to edit a blog author’s details so that I can ensure their information is up to date.
Given the user is viewing the Author Management menu When they select the option to edit an author Then they should be presented with a list of authors to choose from Given the user chooses an author When they enter the selection and hit enter Then the user should be given the ability to enter new information for the author's first name, last name and bio Given the user has been prompted to enter a new value for a property When the user hits enter without typing anything Or When the user only enters spaces Then the property's value should NOT be changed
As a blog connoisseur I would like to add a blog to my list of favorites, so that I can keep track of new blogs I encounter.
An Blog should have: A Title A URL
Given the user is viewing the Blog Management menu When they select the option to add a blog Then they should be prompted to enter the new blog's title and url Then the new blog should be saved to the database
As a blog connoisseur I would like to view a list of my blogs so that I can pick a blog to read.
Given the user is viewing the Blog Management menu When they select the option to list blogs Then they should see each blog's title and url
As a blog connoisseur I would like to be able to remove a blog from my list so that I can keep the list limited to my current favorites.
Given the user is viewing the Blog Management menu When they select the option to remove a blog Then they should be presented with a list of blogs to choose from Given the user chooses an blog When they enter the selection and hit enter Then the blog should be removed from the database
As a blog connoisseur I would like to be able to edit blog’s details so that I can keep the information up to date.
Given the user is viewing the Blog Management menu When they select the option to edit a blog Then they should be presented with a list of blogs to choose from Given the user chooses a blog When they enter the selection and hit enter Then the user should be given the ability to enter new information for the blog's title and url Given the user has been prompted to enter a new value for a property When the user hits enter without typing anything Or When the user only enters spaces Then the property's value should NOT be changed
As a post connoisseur I would like to add a post to my list of favorites, so that I can keep track of new posts I encounter.
A Post should have: A title A URL A publication date An Author object A Blog object
Given the user is viewing the Post Management menu When they select the option to add a post Then they should be prompted to enter the new post's title, url and publish date Then they should be presented with a list of Authors to choose from (This should behave as other selection list do throughout the app) Then they should be presented with a list of Blogs to choose from (This should behave as other selection list do throughout the app) Then the new post should be saved to the database
As a post connoisseur I would like to view a list of my posts so that I can pick a post to read.
Given the user is viewing the Post Management menu When they select the option to list posts Then they should see each post's title and url
As a post connoisseur I would like to be able to remove a post from my list so that I can keep the list limited to my current favorites.
Given the user is viewing the Post Management menu When they select the option to remove a post Then they should be presented with a list of posts to choose from Given the user chooses a post When they enter the selection and hit enter Then the post should be removed from the database
As a post connoisseur I would like to be able to edit post’s details so that I can keep the information up to date.
Given the user is viewing the Post Management menu When they select the option to edit a post Then they should be presented with a list of posts to choose from Given the user chooses a post When they enter the selection and hit enter Then the user should be given the ability to enter new information for the post's title, url, publication date, author and blog Given the user has been prompted to enter a new value for a property When the user hits enter without typing anything Or When the user only enters spaces Then the property's value should NOT be changed
As the application user, I get tired of boring black backgrounds, so I would like to have a more enjoyable background color.
As a non-technical person, however, I don't know what my options are. I would appreciate the team giving me some choices.
FOLLOW UP: In a follow up meeting, the Product Owner refined this specification to require that the font color, represented as a foreground color in the terminal, should be able to be altered. The solution agreed upon was that the app will feature a menu choice of six colors from which an end user may select a new color at will.
As an application user I would like to be able to add a new keyword that I can use to tag a blog, author or post throughout the application so that I can have access to the keywords I think are appropriate.
Given the user is viewing the Tag Management menu When they select the option to add a tag Then they should be prompted to enter the new tag's name
As an application user I would like to be able to view a list of keywords that I might use to tag blogs, authors and posts so that I can determine if there are any missing or any that I no longer want.
Given the user is viewing the Tag Management menu When they select the option to list tags Then they should see each tag's name
As a post connoisseur I would like to be able to edit tag so that I can use a more appropriate value.
Given the user is viewing the Tag Management menu When they select the option to edit a tag Then they should be presented with a list of tags to choose from Given the user chooses a tag When they enter the selection and hit enter Then the user should be given the ability to enter new information for the tag's name Given the user has been prompted to enter a new value for a property When the user hits enter without typing anything Or When the user only enters spaces Then the property's value should NOT be changed
As a post connoisseur I would like to be able to remove a tag when I feel it is no longer needed.
Given the user is viewing the Tag Management menu When they select the option to remove a tag Then they should be presented with a list of tags to choose from Given the user chooses a post When they enter the selection and hit enter Then the tag should be removed from the database
FOLLOW UP: In a follow up meeting, the Product Owner clarified that deleting a tag should disassociate that tag from the Author, Blog, and Post tables.
As a blog connoisseur I would like to view details of a blog author so that I can refresh my memory as to who they are.
Given the user is viewing the Author Management menu When they select the option to view author details Then they should be presented with a list of authors to choose from Given the user chooses an author When they enter the selection and hit enter Then the Author Details menu should be displayed
For Example: Felienne Hermans Details
- View
- Add Tag
- Remove Tag
- View Posts
- Return Given the user wishes to view the author details When they select "View" Then the author's first name, last name and bio should be displayed.
NOTE: The other menu options will be outlined in future stories.
As a blog connoisseur I would like to view details of a blog so that I can focus on a particular blog and not the entire list of blogs.
Given the user is viewing the Blog Management menu When they select the option to view blog details Then they should be presented with a list of blogs to choose from Given the user chooses an blog When they enter the selection and hit enter Then the Blog Details menu should be displayed Given the user wishes to view the blog details When they select "View" Then the blog's title and url should be displayed
The Blog Detail menu should have the following options: View Add Tag Remove Tag View Posts Return NOTE: The other menu options will be outlined in future stories.
As a post connoisseur I would like to view details of a post so that I can focus on a particular post and not the entire list of posts.
Given the user is viewing the Post Management menu When they select the option to view post details Then they should be presented with a list of posts to choose from Given the user chooses a post When they enter the selection and hit enter Then the Post Details menu should be displayed Given the user wishes to view the post details When they select "View" Then the post's title, url and publication date should be displayed
The Post Detail menu should have the following options: View Add Tag Remove Tag Note Management Return NOTE: The other menu options will be outlined in future stories.
As a blog connoisseur I would like to tag a blog author with a keyword to make searching easier.
Given the user is viewing the Author Details menu When they select the option to add a tag Then they should be presented with a list of available tags to choose from Given the user chooses a tag When they enter the selection and hit enter Then the relationship between the tag and the author should be saved to the database
As a blog connoisseur I would like to see the tags for a particular blog author when viewing the author’s details, so I can quickly see keywords about the author.
Given the user is viewing the Author Details menu When they select the option to view details Then they should be presented with the list of the author's tags in addition to the author's other information
As a blog connoisseur I would like to be able to remove a tag/keyword from an author in the event that it no longer applies.
Given the user is viewing the Author Details menu When they select the option to remove a tag Then they should be presented with the list of the author's tags in order to choose the tag to remove Given the user chooses a tag to remove When they type in the selection and hit enter Then the relationship between the author and the tag should be removed from the database
As a blog connoisseur I would like to tag a blog with a keyword to make searching easier.
Given the user is viewing the Blog Details menu When they select the option to add a tag Then they should be presented with a list of available tags to choose from Given the user chooses a tag When they enter the selection and hit enter Then the relationship between the tag and the blog should be saved to the database
As a blog connoisseur I would like to see the tags for a particular blog when viewing the blog’s details, so I can quickly see keywords about the blog.
Given the user is viewing the Blog Details menu When they select the option to view details Then they should be presented with the list of the blog's tags in addition to the blog's other information
As a blog connoisseur I would like to be able to remove a tag/keyword from a blog in the event that it no longer applies.
Given the user is viewing the Blog Details menu When they select the option to remove a tag Then they should be presented with the list of the blog's tags in order to choose the tag to remove Given the user chooses a tag to remove When they type in the selection and hit enter Then the relationship between the blog and the tag should be removed from the database
As a post connoisseur I would like to tag a post with a keyword to make searching easier.
Given the user is viewing the Post Details menu When they select the option to add a tag Then they should be presented with a list of available tags to choose from Given the user chooses a tag When they enter the selection and hit enter Then the relationship between the tag and the post should be saved to the database
As a post connoisseur I would like to see the tags for a particular post when viewing the post’s details, so I can quickly see keywords about the post.
Given the user is viewing the Post Details menu When they select the option to view details Then they should be presented with the list of the post's tags in addition to the post's other information
As a post connoisseur I would like to be able to remove a tag/keyword from a post in the event that it no longer applies.
Given the user is viewing the Post Details menu When they select the option to remove a tag Then they should be presented with the list of the post's tags in order to choose the tag to remove Given the user chooses a tag to remove When they type in the selection and hit enter Then the relationship between the post and the tag should be removed from the database
As a blog connoisseur I would like to see all blog posts written by a particular author so that I can more easily find a blog post I am searching for.
Given the user is viewing the Author Detail menu When they select the option to view blog posts Then they should be presented with a list of the author's blog posts
As a blog connoisseur I would like to see all blog posts written by a particular author so that I can more easily find a blog post I am searching for.
Given the user is viewing the Author Detail menu When they select the option to view blog posts Then they should be presented with a list of the author's blog posts
As a blog connoisseur I would like the ability to search for blogs, authors anb posts by tagged keyword so that I can find wat I'm looking for more easily.
The search menu should have the following options: Search Blogs Search Authors Search Posts Search All Return to Main Menu Given the user has is on the Main menu When they select the search by tag option Then they should be presented with the search menu
Given the user is on the search menu When they select the search blogs option Then they should be prompted to enter a tag name Given the suer enters a tag name When there is no blog that matches the tag name Then the user should be informed that no search results were found Given the user enters a tag name When there is one or more blogs that match the tag name Then the blogs should be displayed
Given the user is on the search menu When they select the search authrs option Then they should be prompted to enter a tag name Given the suer enters a tag name When there is no author that matches the tag name Then the user should be informed that no search results were found Given the user enters a tag name When there is one or more authors that match the tag name Then the authors should be displayed
Given the user is on the search menu When they select the search posts option Then they should be prompted to enter a tag name Given the suer enters a tag name When there is no post that matches the tag name Then the user should be informed that no search results were found Given the user enters a tag name When there is one or more posts that match the tag name Then the posts should be displayed
Given the user is on the search menu When they select the search all option Then they should be prompted to enter a tag name Given the suer enters a tag name When there is no blog, author or post that matches the tag name Then the user should be informed that no search results were found Given the user enters a tag name When there is one or more blogs that match the tag name Then the blogs should be displayed When there is one or more authors that match the tag name Then the authors should be displayed When there is one or more posts that match the tag name Then the posts should be displayed
As a blog connoisseur I would like to be able to manage my personal notes about a particular blog post so that I can keep track of my thoughts about the post.
Given the user is viewing the Post Detail menu When they select the option to manage notes Then they should be presented with the Note Management menu
The menu should contain the following options: List Notes Add Note Remove Note Return
As a post connoisseur I would like to add a note to a blog post so that I can record my thoughts about the post.
A Note should have: A title Text content A creation date and time A related Post Given the user is viewing the Note Management menu for a particular Post When they select the option to add a note Then they should be prompted to enter the new post's title and text content Then the new post should be saved to the database with the Note's Post set to the current Post and the Note's creation date set to Now
As a post connoisseur I would like to view a list of my notes about a post so I can reread what I've written about the post.
Given the user is viewing the Note Management menu When they select the option to list notes Then they should see each note's title, creation date and text content
As a post connoisseur I would like to be able to remove a Note associated with a Post so that I can sweep away any ridiculous thoughts I may have had in the past.
Given the user is viewing the Note Management menu When they select the option to remove a note Then they should be presented with a list of notes to choose from Given the user chooses a note When they enter the selection and hit enter Then the note should be removed from the database