Sprint 1 Planning Document Team 2 (Lounge) Spencer Brown, Roy Fu, Smita Samanta, Evan Walsh, Miranda Mott, Ben Alderfer Table of Contents Sprint Overview 1 Current Sprint Detail 2-7 User Story #1 2 User Story #2 3 User Story #3 4 User Story #4 5 User Story #5 6 User Story #6 7 Remaining Backlog 8-9 Functional Requirements 8 Non-Functional Requirements 9
Sprint Overview For our initial sprint, we are going to focus solely on the web-based part of the product. By the end of this sprint, a user will be able to access our product on web and create an account. He or she will be able to pay for access to a certain membership tier and create a profile. If desired, the user should also be able to reset his or her password or update his or her profile or membership. In addition, the user will have the ability to create and view posts in their feed, create and view calendar events, and view the profiles of other users. Scrum Master: Ben Alderfer Meeting Schedule: Mondays, Wednesdays, and Fridays at 12:00pm Risks/Challenges: Some team members are not yet familiar with the languages, frameworks or technologies we are using such as JavaScript, React, Node.js, Heroku, and MongoDB. For this first sprint, a lot of work will have to be done to get certain team members up to speed so that they can contribute effectively. Additionally, this is the first time that some of the team members have worked together so work will have to be done to ensure we are working efficiently. 1
Current Sprint Detail User Story #1 As a user, I would like to create and update a profile on web. 1. Set up back end server 5 hrs Spencer 2. Set up database 3 hrs Spencer 3. Set up production server 6 hrs Evan 4. Set up staging server 6 hrs Smita 5. Implement functionality for account and profile creation on back end 6 hrs Evan 6. Set up web client and routes 4 hrs Ben 7. Set up web client templating 6 hrs Roy 8. Implement ability to set up membership payments on backend 6 hrs Smita 9. Implement ability to create accounts on web client 6 hrs Miranda 10. Implement payments on web client 6 hrs Roy 11. Implement ability to log in and maintain a session on web client 4 hrs Ben 12. Implement ability to update profile on back end 6 hrs Evan 13. Implement ability to update profile on web client 6 hrs Miranda Acceptance Criteria : Given that the backend to create users is created successfully, when a request to create an account is made then the user s account will be added to the database given that the email has not been taken and the password is strong. Given that an account has been successfully created, when the user advances to the next screen then he or she should be prompted to select a membership tier and provide payment details. Given that the user has been authorized to enter a membership tier, then he or she should be prompted to initialize their profile information. 2
User Story #2 As a user, I would like to be able to reset my password on web. 1. Set up mailer to send emails to users 6 hrs Evan 2. Implement functionality for password reset on back end (update to random password and send the user an email) 3. Implement functionality for users to update their password after following reset link on web client 6 hrs Evan 5 hrs Miranda 4. Implement forgot password? button and reset flow on web client 5 hrs Miranda Acceptance Criteria: Given that the password reset functionality has been correctly implemented, when a user requests a password reset then he or she should receive an email at the email associated with their account that contains a link to reset their password. Given that the user has requested a password reset, when the user clicks the link to reset their password then the web page should display a form to enter a new password. Given that the user has filled out the password reset form, when the user submits the form to change their password then the database should immediately update to reflect the change. 3
User Story #3 As a user, I would like to view, cancel, or update my membership tier(s) on web. 1. Implement functionality for viewing and updating membership on back end 6 hrs Smita 2. Implement ability to view and update membership on web client 6 hrs Ben Acceptance Criteria: Given that the membership tier system has been implemented correctly, when a user creates an account then he or she will be forced to select a membership tier before account creation can be completed. Given that a user has an existing account and is viewing their profile page, when a user clicks the link to update or cancel their membership tier then the web page should display a form to select a new membership or terminate the existing membership. Given that a user is viewing the form to update or cancel their membership, when the user upgrades or downgrades to a different tier, their account will be flagged to be billed a different amount at the time of the next renewal. When the user chooses to cancel their account, then their account will be flagged to be deactivated at the end of their current membership period. 4
User Story #4 As a user, I would like to create and discover events on web. 1. Implement functionality for creating events on back end 6 hrs Spencer 2. Implement ability to create events on web client 6 hrs Roy 3. Implement ability to view all events on back end 7 hrs Smita 4. Implement ability to view events on web client 6 hrs Roy 5. Implement ability to view single event on back end 5 hrs Smita 6. Implement ability to view single event on web client 6 hrs Roy Acceptance Criteria: Given that the calendar functionality has been implemented correctly, when a user clicks the link to view their calendar then they will see upcoming events that have been created by other members of their tier. Given that a user is currently viewing the events page, when he or she clicks to create an event then the web page will load a form to enter all of the information for the event and the database will store the event when the user clicks to save it. Given that a user is currently viewing the events page, when he or she clicks to view an event then the web page will load a new page with a more detailed version of that event. 5
User Story #5 As a user, I would like to view a feed with posts by all other members of the currently viewed membership tier on web. 1. Implement functionality for creating posts on back end 6 hrs Spencer 2. Implement ability to create posts on web client 6 hrs Ben 3. Implement functionality for getting post data for multiple posts on back end 5 hrs Spencer 4. Implement UI for feed on web client 8 hrs Ben Acceptance Criteria: Given that the functionality to view the feed has been implemented correctly, when a user views their feed then they will only be able to view posts by other members of the same tier. Given that the functionality to create and view posts has been implemented correctly, when a user views their feed then they will see a text box to create a post and submit it. Given that a user has written a post, then when he or she clicks submit it will be added to the database so that it is viewable by other users of the same tier. Given that a user is currently viewing their feed, when he or she scrolls down close enough to the bottom, then the feed will automatically be populated with new posts so that the feed always scrolls continuously. 6
User Story #6 As a user, I would like to see profiles of different users with information such as occupation, location, range of net worth, and pictures on web. 1. Implement ability to access another user s profile by clicking on his/her name in the feed on web client 2 hrs Miranda 2. Implement profile view on web client 6 hrs Miranda 3. Implement ability to get data for single profile on back end 3 hrs Spencer Acceptance Criteria: Given that the ability to see profiles of different users has been implemented correctly, when a user clicks on the name of another user, then he or she can view the other user s profile. Given that the ability to see profiles of different users has been implemented correctly, when a user is viewing another user s profile then all of their profile information will be displayed on the page. Given that the ability to view profile pictures has been implemented correctly, when a user is viewing another user s profile then he or she will be able to see the current profile picture of that user. 7
Remaining Backlog Functional Requirements 1. As a user, I would like to create and update a profile on ios. a. Implement ability to create accounts on ios front end b. Implement ability to log in and maintain a session on ios client c. Implement ability to update profile on ios client 2. As a user, I would like to be able to reset my password on ios. 3. As a user, I would like to view, cancel, or upgrade my membership tier(s) on ios. 4. As a user, I would like to create and discover events on ios. 5. As a user, I would like to view a feed with posts by all other members of the currently viewed membership tier on ios. 6. As a user, I would like to see profiles of different users with information such as occupation, location, range of net worth, and pictures on ios. 7. As a user, I would like to be able to switch between feeds for each membership tier to which I have access. 8. As a user, I would like to view, share, like and comment on posts by all members in the currently viewed membership tier. 9. As a user, I would like to view, share, like and comment on the photos. 10. As a user, I would like to be able to discover other users based on advanced search terms such as income level, occupation, and location 11. As a user, I would like to sync my account across different devices/platforms. 12. As a user, I would like to be able to communicate with other users in my membership tier(s) with one-on-one messages. 13. As a user, I would like to be receive push notifications to my phone when users interact with my content. 14. As a user, I would like to see a list of my unseen notifications. 15. As an administrator, I would like to be able to create and delete users. 16. As a user, I would like to be able to create, discover, and join groups within my membership tier(s) that will each have their own feeds. 17. As a user, I would like to see the post of the day with the highest number of interactions pinned to the top of my feed. 18. As a user, I would like to see who in my membership tier(s) has a birthday today. 19. As a user, I would like to be able to store payment information for my subscription. 20. As a user, I would like to be able to RSVP to an event. 8
Non-Functional Requirements 1. As a user, I would like to access this product on the web and iphone. 2. As a user, I would like to have fast response times. 3. As a user, I would like to have an efficient use of bandwidth. 4. As a user, I would like the app to use as little device memory as possible. 5. As a sysadmin, I would like to the site be able to handle at least 10,000 users at once. 6. As a developer, I would like to easily run a local development backend. 7. As a developer, I would like to have a staging API server and a production API server. 8. As a developer, I would like to be able to run the backend server on a linux VM. 9. As a developer, I would like to have both a test database and a production database. 10. As a developer, I would like to be able to run the entire stack on OS X. 11. As a developer, I would like to be able to easily connect the ios app with each API server. 12. As a developer, I would like to be able to easily connect the web app with each API server. 13. As a developer, I would like to have step by step documentation for setting up a local development environment. 14. As a developer, I would like to have step by step documentation for publishing the API to staging and production instances. 15. As a developer, I would like to have step by step documentation for building and testing the ios app on personal devices. 9