phrase-it's Introduction
phrase-it's People
phrase-it's Issues
Create and estimate stories
My profile
As a user
I want to look at my profile
So that
I can get to know about my followers and following details
Business Context
Problem: User wants to see his followers and followings
Solution: Providing an ability to view user's profile
Acceptance Criteria
-
Update Avatar interaction
- Given the user is on home page
- When the user selects avatar
- Then the user should get an option for profile
-
Profile page
- Given the user gets an option for profile
- When the user selects the option
- Then the user should be directed to profile page
-
Followers and Followings
- Given the user selects the option for profile
- When the user lands on profile page
- Then the user should see followers and followings
Deciding features of app
- Decide the features to implement
- Prioritise the features
Dashboard with most recent stories
As a user
I want to have a dashboard
so that
I can view a list of recently published stories
Business Context
Problem: User should get a list of recent stories to pick one among them to read
Solution: Providing a dashboard with recent stories
In Scope
Dashboard with recent stories
Stories with Title, Author, Published time, Intro
Acceptance Criteria
-
Dashboard
- Given the user singed in
- When the user lands on home page
- Then the user should get a list of most recent stories
-
Reading a story
- Given the user got a list of stories
- When the user selects a story to read
- Then the user should directed to story page to read that story
Follow an author
As a user
I want to follow other users
So that
I can get their latest stories in my feed
Business Context
Problem: User wants to get other users' stories in his/her feed
Solution: Providing the user the ability to follow other users
Acceptance Criteria
-
Follow
- Given the authorised user is on story page
- When the user is not following the author
- Then the user should get an option to follow
-
Dashboard update for follow
- Given the authorised user is on story page
- When the user selects an option to follow author
- Then the user's feed should be populated with the author's recent stories
-
Unfollow
- Given the authorised user is on story page
- When the user is already following the author
- Then the user should get an option to unfollow
-
Dashboard update for unfollow
- Given the authorised user is already following the author
- When the user selects an option to unfollow author
- Then the user's feed shouldn't be populated with the author's stories
Search stories
As a user
I want to search stories
So that
I can read stories of my interest
Business Context
Problem: User want to search stories related to tags, author or content
Solution: Providing an ability to search the stories
In Scope
Searching stories by author
Searching stories by tags
Searching stories by content
Acceptance Criteria
-
Search option
- Given the user logins into app
- When the user lands on home page
- Then the user should see an option to search
-
Search page
- Given the user is on home page
- When the user selects an option to search
- Then the user should be directed to search page with a search bar
-
Search
- Given the user is on search page
- When the user search
- Then the user should get matching stories categorised by tags, author and content
-
Story
- Given the user gets search results
- When the user selects any of the story
- Then the user should be directed to story page of the selected story
Setup Wiki
As a visitor
I want to have a documentation
So that I can get a better experience of the app
Pages
- Home
- User Journey
- Mockups
- Contributors
Validate image types
- Allow only .png, .jgp, .jpeg, .gif, .svg
Add a tag on a story
As an author
I want to add tags to my story
So that
users can find my story based on my tag
Business Context
Problem: Author wants to add tags to story
Solution: Providing an ability to add tags to story
In Scope
Maximum tags: 5
Acceptance Criteria
-
Tag popup
- Given the author is on editor page
- When the author selects the option to publish the story
- Then the author should get a popup to add tags
-
Adding a tag
- Given the author selected the option to publish the story
- When the author gets a popup
- Then the author should be able to add tags
-
Publish
- Given the author added tags
- When the author selects publish
- Then the story should get published with added tags
Authentication using GitHub
As a user
I want to be authenticated
so that
I can use the app
Business Context
Problem: User should be able to authenticate one self
Solution: Providing the user the ability to authenticate using GitHub
Acceptance Criteria
-
Welcome page
- Unauthorised user
- Given the user lands on welcome page
- When the user not signed in
- Then the user should see option to SignIn using GitHub
- Authorised user
- Given the user lands on welcome page
- When the user is already signed in
- Then the user should be redirected to home page
- Unauthorised user
-
Home page
- Given the user lands on welcome page
- When the user authenticated using GitHub
- Then the user should be directed to home page
Setup CI
- Add repo to travis dashboard
- Add .travis.yml file to the repo
- Add slack integration with travis
Remove duplication in CSS files
- Remove the duplications in same file
- Extract css classes which can be reused in separate files
Creating Mockups
Draft a post
As an author
I want to draft a story
so that
I can review and publish the story later
Business Context
Problem: User should be able to draft stories
Solution: Providing the author the ability to write and save a story
In Scope
Writing a story
Saving the story
Out Of Scope
Publishing a draft
Editing a draft
Deleting a draft
Acceptance Criteria
-
New story
- Given the author on home page
- When the author selects the option to add a story
- Then the author should get a new story page where author can enter title and content
-
Formatting story
- Given the author on the new story page
- When the author tries to enter content
- Then the author should get formatting options for the content
-
Saving a story
- Given the author on the new story page
- When the author changes any of the content
- Then the story should get saved to drafts
-
Drafts
- Given the author saves a story
- When the author opens stories page
- Then the author should get a list of saved stories under drafts
Refactor frontend JS files
- Create tags using DOM instead of innerHTML in addTags function
- Move showCoverImage function from preview.js to publish.js and remove preview.js file
- Move showTab function into a separate file and reuse it in search, profile and stories pages
- Move setTime function into a separate file and reuse it in story, profile, home, response and stories pages
- Extract post fetch requests into a common function and reuse for all post fetch requests
Respond to a story
As a user
I want to respond to a story
So that
I can express my thoughts on the story
Business Context
Problem: User should be able to respond to a story
Solution: Providing the user an ability to respond to a story
Acceptance Criteria
-
Responses count
- Given the story page
- When the user lands on the story page
- Then the user should be able to see the responses count
-
Responses page
- Given the user lands on story page
- When the user selects an option to view responses
- Then the user should be directed to responses page with a list of responses
-
Writing a response
- Given the authorised user lands on responses page
- When the user selects an option to write response
- Then the user should be able to add response to the story
User profile
As a user
I want to see other user's profile
So that
I can get all the user's stories
Business Context
Problem: User want to see other user's profile
Solution: Providing an ability to look at other's profile
Acceptance Criteria
-
Updation in dashboard
- Given the user is on home page
- When the user selects the author on story card
- Then the user should get directed to author's profile
-
Author's profile
- Given the user selects the author on story card
- When the user is on author's profile
- Then the user should get all the stories of that author
-
Updation in my profile
- Given the user in his profile page
- When user selects any user from following or followers list
- Then the user should get directed to that user's profile
-
Updation in story page
- Given the user in story page
- When the user selects the author name
- Then the user should get directed to author's profile
-
Updation in search results
- Given the user searched stories
- When the user selects author name on searched stories
- Then the user should directed to author's profile
-
Story
- Given the user is in other user's profile
- When the user selects any of the story
- Then the user should directed to that story page
Preplan
Before the planning, we decided to have a discussion on these
- Explore Medium
- Look at other stories
- Explore OAuth
- Setup timings
- Standup
- Working hours
- Regular discussion
- Team name
- App name
Add Milestones and Labels
-
Labels
- Small
- Medium
- Large
-
Milestones
- Iteration 0
- Iteration 1
- Iteration 2
- Iteration 3
- Iteration 4
Setup Environment
- Directory Structure
- Git Hooks
- Git commit template
- Linter
- Install basic dependencies
- Mocha
- Chai
- Express
- SQLite3
- Supertest
Remove duplication in Pug files
- Avathar drop down block can be pulled out to a separate pug file and can be reused in navbar.pug and editor.pug
- Use mixins for follower and following cards in profile.pug
- Use mixins for placeholders and containers in searchPage.pug
- Use mixins for drafts and published stories cards in stories.pug
- Link css files instead of including them in home and index files
Use pug for rendering dashboard stories
Code Review
Scripts that can reset db and populate db
Logout
As a user
I want to logout
So that
I can stop accessing the app
Business Context
Problem: User wants to logout
Solution: Providing an ability to logout
Acceptance Criteria
-
Update Avatar interaction
- Given the user is on homepage
- When the user selects the avatar
- Then the user should get an option to logout
-
Logout Confirmation
- Given the user gets option to logout
- When the user selects the logout option
- Then the user should get a confirmation popup
-
Logout
- Given the user get a logout confirmation popup
- When the user confirms to logout
- Then the user should get logged out
-
Cancel
- Given the user get a logout confirmation popup
- When the user denies to logout
- Then the user should come back to same page
Migrate DB from sqlite to postgres
- Setup postgresql and install npm package
- Modify the knex config from sqlite3 to postgresql config
spike on editor
Publish a draft/story
As an author
I want to publish a story/draft
so that
Users can read my story
Business Context
Problem: Author wants to share his story and users want to read the story
Solution: Providing the author the ability to publish the story
In Scope
Publishing the story
User can view the story
Out Of Scope
Previewing a story
Tagging
Clapping
Responding
Acceptance Criteria
-
Publish a story directly
- Given the author written a story
- When the author selects the option to publish
- Then the story should get published and author should be redirected to story page
-
Share a story link
- Given the user on the story page
- When the user selects the share link option
- Then the link should be copied to user's clipboard
-
Accessing the shared link
- Given the user with link
- When the user opens the link
- Then the user should view the story
-
Publish a draft
- Given the author saved a draft
- When the author selects the option to publish
- Then the story should get published and author should be redirected to story page
Separate router for authenticated user
- Update /user route to /callback in app and github OAuth app
- Add a /user router for all user related operations
- Update all the links in frontend to respective updated routes
- Remove privateRoutes
- Add a separate file userHandlers.js for all user related handlers
- Move all the userHandlers tests from testHandlers.js to testUserHandlers.js
Edit a saved draft
As a user
I want to edit a saved draft
So that
I can make changes to my saved story
Business Context
Problem: User wants to make necessary changes to his draft
Solution: Providing user the ability to edit the saved draft
Acceptance Criteria
- Edit
- Given the user is on stories page
- When user selects any draft
- Then the user should be directed to editor with existing content
- Update the draft
- Given the user on editor
- When user updates the draft
- Then the story with updated content should be saved
Clap on a story
As a user
I want to clap on a story
So that
I can tell that I liked the story
Business Context
Problem: User should be able to show interest on others' stories
Solution: Providing an ability to clap on a story
Acceptance Criteria
-
Clap count
- Given the story page
- When the user lands on a story page to read
- Then the user should be able to see the clap count
-
Clap
- Given the authorised user is on a story page
- When the user claps
- Then the user's clap should be added to story claps
-
Undo a clap
- Given the authorised user already clapped on a story
- When the user claps again
- Then the user's clap should be removed from the story claps
-
Author can't clap
- Given the author is on story page
- When the author claps
- Then the author clap shouldn't be added
Add a cover image to story
As an author
I want to add a cover image to my story
So that
I can make my story expressive
Business Context
Problem: Author wants to add a cover image to his/her story
Solution: Providing an ability to upload an image for story cover
Acceptance Criteria
-
New story
- Given the author is in new story page
- When the author selects the option to publish
- Then the user should get 'add cover image' option
-
Upload image
- Given the author gets the option 'add cover image'
- When the author selects the option 'add cover image'
- Then the author should be able to upload an image from his device
-
Show image
- Given the author selected the option 'add cover image'
- When the author uploaded image
- Then the author should preview of the image in the new story page
-
Publish
- Given the author uploaded image
- When the author published the story
- Then the story should get publish with the cover image author uploaded
-
Story
- Given the author published the story with cover image
- When the user lands on the story page
- Then the user should get the story with cover image
Modify handlers tests
- Mock the db in handlers tests
Design Database Schema
UI updation (Iteration-1 feedback)
- Update error message in newStory and stories pages for publish
- Fix the margin inconsistency between pages
- Update the font size and line height in story page
- Move list of stories in dashboad to cards
- Visual separation between author and content in dashboard story cards
- Interaction on hovering a story card in dashboard and stories page
- Update logo
- Visual separation between navbar and page
- Remove the boxes and update the editor with new view in newStory page
Migrate queries to knex js
- Install knex and config it for sqlite3
- Move database model to knexDatabase model
- Add tests for knexDatabase model
- Remove tests for database
- Rename knexDatabase to database
Setup the wall
As a team member
I should have a wall
So that I can track work of the team
Needed Columns:
- Ready For Analysis
- In Analysis
- Ready for Dev
- In Dev
- Ready For QA
- In QA
- Ready For Showcase
- In Showcase
- Done
Delete a draft
As an author
I want to delete a draft
So that
I can clear my unwanted drafts
Business Context
Problem: Author wants to clear his unwanted drafts
Solution: Providing an ability to delete drafts
Acceptance Criteria
-
Stories
- Given the author logged in
- When the author lands on stories page
- Then the author should a delete option on the drafts
-
Delete Confirmation
- Given the author is in stories page
- When the author selects the delete option on a draft
- Then the author should get a confirmation
-
Delete draft
- Given the author gets delete confirmation
- When the author agrees to delete
- Then the draft should be removed from the author's drafts
-
Cancel delete
- Given the author gets delete confirmation
- When the author denies to delete
- Then the draft shouldn't be removed and author should be back to same page
Story views
As a user
I want to know the view count on stories
So that
I can get to know what stories are most read
Business Context
Problem: User want to know how many users read the stories
Solution: Providing view count on the stories
Acceptance Criteria
-
Views
- Given the user selects a story to read
- When the user lands on a story page
- Then the views should increase and user should get latest views
-
Views for author
- Given the author selects his/her story
- When the author lands on the story page
- Then the view count shouldn't get increased
Fix inconsistency in tests
Corrections in code
- handlers.js
- Move options out of handlers
- Update the error message in requestUserDetails and getUserDetails
- Move all functions using funtion keywords to arrow functions
- Rename handleHomePage
- Rename storyPage
- database.js
- throw in updateStory
- Use exec instead of run in addUser
- Remove async in getUserDetails
- Update all the error messages
- Schema
- Rename field response_on to responded_on in responses table
- rename story_id to clapped_on in claps table
- Remove unique constraint on username
Storing images in cloud
- Install cloudinary package
- Store images to cloudinary using cloudinary module
- Store the image url in database
- Remove /coverImage route from app.js
Spike on story page
GitHub based authentication
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.