(1) Requirements:

Functional Requirements

Primary

  • Users will be able to sign up and log in
  • Users will be able to add friends
  • Users should be able to see pending friend requests and accept them
  • Users will be able to add their availability
  • Users will be able to view and change their availability
  • Users should be notified when there’s a match of availability with their friends
  • Users should receive suggestions of what to do
  • Users will not be able to see the friends list of their friends
  • Users will not be able to see their friends’ calendars

Secondary

  • Users should be able to see their current friends list (similar to BeReal’s interface)
  • Users should be given suggestions of things to do with their friends
  • Users should be put in a group chat with people they are matched with
  • Users should be able to set a max/min number of friends
  • Users should be able to set a maximum number of availability notifications

Technical Requirements

Primary

  • A home screen that allows users to create an account and/or sign in
  • A home screen with a search capability so a user can search for and add their friends
  • A screen that allows users to sync their calendars (google/apple) using the google calendar/apple calendar API in order to input their availability
  • Backend constructs friendship “graphs” and checks the availability of pairs/groups of people who are all friends
  • When a match is found of people available at the same time, the Twilio API is used to text all of the people available with the time/suggestions of what to do. We are aiming for the automated texts to create a group chat with all of the people but if that’s not possible it will text each user individually.
  • Database of activity suggestions, with different tables for different types of activities (hosted on AWS?)

    Secondary

  • Database populated with suggestions found by a web crawler, if we don’t have time for this we can just manually populate it

    Usability Requirements

    Primary

  • Flow is intuitive, users can easily create a profile and add their friends
  • The process to add/update availability is quick and easy for users
  • Consistent formatting throughout the platform

    Secondary

  • Accessible (closed captioning, high-contrast colors, etc)

(2) Storyboards:

Storyboard 1

Storyboard 1

Storyboard 2

Storyboard 2

(3) Architectural design:

Our system consists of Users, each of which can be friends with 0 or more other Users and each User has its own User Settings. Each user also has their own Calendar, which contains information about the User’s availability. This is stored in different Dates and each Date will be designated as “Staying In” or “Going Out.” This is the general setup for the system and hold the information of what a user would need when they get started. Then, as Users have overlapping availability with the friends that they have added, a Plan will be created with certain Users on a specific Date and each Plan will consist of 3 different Activities. Each Activity will have different attributes which are used to determine which Activities are appropriate for the time/day of the hangout.

Architectural design

A login system with users database allow users to log in and create a profile. A calendar class will allow users to add their availabilities. Users can search for other users by username and add friends and can accept them or not. In the backend, our system will identify times that users and their friends are free. This date and time information along with the number of users will be used as factors to select three activities that should work best. All this information will be part of the plan class. This will be used to send information to the people (using their contact information) informing them of when they are all free and suggestions of what to do.