Activities
Requirements Gathering
The functional and non-functional requirements were gathered based on several factors, most notably the developers' experience of group projects and personal gatherings. This led to the foundational goal of Round, which is to provide a straightforward and effective solution. Research was done on alternatives, however most involved sharing all explicit details of each other's calendars, something which is not wanted in the majority of situations. This led to the realization of one of Round's defining features: a calendar that highlights availabilities, similar to those seen in Google Calendar and Microsoft Office Calendar, but without sharing any of those explicit details. The storage of this information, as well as the individual users, quickly created the need to research a backend resource, to which Firebase was found to be a great option.
Another item of focus is the ability for Round to determine the best platform to facilitate group communication. The research done for this is the review of all popular social media outlets to determine ways to effectively store accounts the users may have. Additional research was done with each of the platforms to determine whether groups can be created on the user's behalf. These features allow Round to determine the best platform for the users to continue their discussion, ensuring the group can communicate in an environment they are already comfortable with.
User experience requirements will be gathered off of prototypes of the application that allows for feedback through testing and hands-on testing, directing the future iterations of the application's appearance and experience in a natural and fluid manner. These changes will be recorded through Jira ticketing and other resources, such as Google Forms, as needed, to ensure ease for the user is a top priority throughout development.
Top-level Design
- Establish Google Firebase for a cloud-hosted database that can host the app
- Generate foundational app features such as welcome, account creation and login pages
- Group creation and code/link sharing feature development
- Create group finalization algorithm(s) and develop procedures performed at this stage
- Establish calendar sync integration with Google Calendar
- Develop miscellaneous features to fulfill scenarios that could occur in user flows
- Notification integration at certain stages of user flow
Detailed Design
- Establish Google Firebase for a cloud-hosted database that can host the app app
1.1 Hosting our application on Google Firebase for login authentication and overall uptime
- Generate foundational app features such as welcome, account creation and login pages
2.1 Making sure that foundational features are established and connecting pages for the user flow so that user experience is kept as a top priority throughout development.
2.2 Users will be able to link their social media profiles and/or contact informations to be shared later
2.3 Users will be able to create static profiles where they can preemptively sync their calendars or chart out their availabilities
- Group creation and code/link sharing feature development
3.1 Seeking to include unique code/QR code/link share integrations for ease of use
3.2 Establishing user-to-user interaction and group generation so that users can sync their calendars and share contact information
- Create group finalization algorithm(s) including static calendar generation
4.1 Upon group finalization, a joined calendar is generated by Round to display all available times
4.2 If no overlaps exist, then suggest next best options, such as two separate times or times where only one person is unavailable
- Establish calendar sync integration with Google Calendar
5.1 Allow users to easily sync their Round scheduling with Google Calendar
5.2 Round will automatically adjust for times with privacy in mind
- Develop miscellaneous features to fulfill scenarios that could occur in user flows
6.1 Account for situation where a user has to cancel the meeting due to unforseen unavailability
6.2 In this case, suggest the next best time
6.3 Account for situation where a user did not provide any availability
6.4 In this case, give that user a list of the available times to choose from based on the availability of the other members of the group
- Notification integration at certain stages of user flow
7.1 Send notifications to users at specific times of user flow
7.2 For example, send notifications to users 1 day before meeting time asking for their RSVP
7.3 For example, send notifications to users 15 minutes before meeting time
Test
- All tests will be done with the Flutter framework testing suite using the flutter_test package.
- Unit testing will be created to test foundational features of the application to measure for basic functionality
- After all major development sessions conclude, functionality tests will be performed to avoid app-breaking contributions
- Widget testing will ensure each widget will work as intended in a medium-scale overview
- Integration testing will check the application on a large scale, making sure multiple widgets interact with each other as expected in given conditions.
- The team will perform tests on all calendar syncing/calendar creation features and implementations with a variety of different calendar inputs and sample groups