SquadGoals: Achieve More Together
Abstract
Everyone knows that forming good habits takes lots of time and effort, and most people give up on their goals before they even get started. Well now think about how much easier it would be if your friends and family could help you stay on track, so you could crush your goals together.
Introducing SquadGoals, the gamified social media app which allows you and your friends to set goals and track your progress together by sharing photos and updates.
Author
Name: Ethan Pinto
Student number: 46422860
Functionality

A completed version of the application will have the following features:
- Account Creation and Management:
- Users must be able to create and edit their account.
- Information including name, email, password, profile picture, and bio.
- Users must be able to add friends and create groups/squads.
- Goals:
- Users will be able to set goals/habits (either personal or with a group).
- Goals must include a name, description, frequency (i.e. daily, 3x a week), type of evidence (selfies, screenshots, videos, text etc.).
- Users can invite their friends to join a goal.
- When a member of the group makes progress towards a habit (i.e. completes a gym session, does a daily Duolingo Spanish lesson), they must share proof to show they have completed it. The other members of the group can approve or reject their proof of completion.
- REMEMBER: everyone in the group must complete the habit within the specified timeframe for it to count towards the group’s streak.
- Home Feed:
- A scrollable, social media style feed with progress updates from friends.
- Users will be able to like and comment on different progress updates.
- Automatically generated suggestions for new habits to work towards based on your background and interests.
- Progress View:
- A calendar view will show the group’s progress on their goals.
- A streak counter will show how many days/weeks in a row the group has completed their goals.
- Reminders:
- To keep them on track, users will receive notifications for reminders to complete a habit, as well as progress updates from friends.
- Settings:
- Users can adjust their profile information, notification settings, and link other accounts to automatically track progress on goals:
- Exercise: Strava, FitBit
- Reading: Kindle, Goodreads
- Finance/Budgeting: YNAB, PocketGuard
- Skill Building: LeetCode, Duolingo
Scope
An MVP of SquadGoals will require the following functionality:
- Account Creation: Users must be able to create an account with a name and password.
- Group Creation: Users must be able to add friends and create groups.
- Goal Creation: Users must be able to set habits that are shared with groups. For the MVP, habit frequency will be set to daily as default and require a photo as proof of completion.
- Notifications: A simple notification system (Firebase Cloud Messaging, or OneSignal) will be used to send notification reminders to complete a habit, and to notify users about progress updates from friends.
- Verification: Users will be able to approve or reject the evidence shared by friends to show they have completed a habit.
- Progress View: A streak counter and progress view will show how many days in a row the group has completed their goals.
Quality Attributes
Below are some of the main quality attributes that the application will focus on. In addition to these, implementing strong privacy and security measures is crucial since users will be uploading personal data including photos.
Extensibility
- To ensure the application is setup well for future growth, it should prioritise extensibility. This means that the application should be able to easily add new features and functionality without having to rewrite large portions of the codebase.
- The MVP will form the foundation of the application, and extensibility will allow for features like notifications, habit suggestions and rewards/gamification to be easily implemented.
- Extensibility will allow new features to be added quickly, which is important for a social media application that needs to keep up with the latest trends and user demands.
Scalability
- The application should be able to accommodate growing user demand without impacting its performance. This will ensure a seamless user experience, regardless of the number of concurrent users.
- The application will be designed to dynamically scale resources as needed, ensuring that the application can handle increased traffic and usage.
- Scalability is important for a social media application, as it needs to be able to handle a large number of users and their data. This can be achieved using load balancers, AWS auto-scaling and dockerised microservices.
Availability
- Availability is important to the application because it should always be accessible and function correctly. The application should be available to users at all times since users will log their progress throughout the day.
- A failure in availability could lead to users losing motivation and breaking their streaks, which could lead to user disengagement and a subsequent decrease in users.
Evaluation
Functionality Evaluation
To evaluate the core functionality of SquadGoals, we can conduct the following tests:
- Create a new account and verify that the user can log in.
- Create another account on different phone and add the first user as a friend.
- Create a new goal and invite the friend/s to join the group.
- Log progress on the goal and verify that the friend can see the update.
- Check if you can approve or reject the evidence shared by the friend.
- Verify that notifications are sent to remind users to complete a habit.
- Check the progress view to see the streak counter and calendar view.
Quality Attributes Evaluation
Extensibility Evaluation
- Extensibility can be evaluated adding a new feature like a home feed and measuring the time and effort required to implement it.
- Static analysis tools (e.g. SonarQube) can be used to detect code complexity and maintainability issues.
- Evaluate whether the backend API follows RESTful principles or GraphQL queries that allow flexible data fetching with minimal API changes.
Scalability Evaluation
- The scalability of the application can be evaluated by simulating thousands of users creating accounts, adding friends, uploading photos, and verifying habits.
- Tools that can be used to verify the scalability of the SquadGoals application include Apache JMeter and k6.
- We can also evaluate API response times under high traffic and ensure they remain within acceptable thresholds (e.g., <200ms for key interactions).
Availability Evaluation
- Availability could be measured in uptime percentage.
- The application can be tested to make sure it remains available under failures or outages by using tools like Chaos Monkey to simulate server failures.
- We can also implement database replication and test whether the system automatically switches to a backup database if the primary instance fails.
Security Evaluation
- Security can be measured by testing for vulnerabilities in authentication, data handling, and file uploads.
- Authentication should enforce strong passwords and securely store them using bcrypt.
- File uploads should only allow images, have a size limit, and be scanned for potential risks.
- All communication should use HTTPS (TLS encryption) to protect user data.