Code Monkey home page Code Monkey logo

phrase-it's Introduction

phrase-it

Build Status

phrase-it's People

Contributors

abhilashkasula avatar kannananil avatar photongupta avatar

Watchers

 avatar  avatar

phrase-it's Issues

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

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

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
  • 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

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

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

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

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

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

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.