Professional Documents
Culture Documents
TeamAssist
By: Beenish Syed & William Baker
California State University Monterey Bay
CST 499 Computer Science Capstone
Advisor: Dr Eric Tao
13th October 2019
2
Executive Summary:
TeamAssist was inspired by our observation of the need to consolidate not only team
stats but also individual player stats for soccer youth soccer clubs. Currently the apps that are
majorly used for youth clubs are not focused on one sport. Apps like teamsnap are used by
varying youth sports like baseball, swim teams, football etc. If you want consolidated
information about local soccer clubs there is no such thing out there. Now why do we feel that
there is a need for that.
Let's say scouts are looking for the best players among all the soccer clubs to recruit for the elite
teams. They have to arrange scouting events and pick their players from those events. Those one
or two events are not exactly the true picture or the entire picture of a certain player’s
performance. If there is a website that lets you track player statistics of each and every
game/tournament that player has played. If we have those statistics for multiple teams and
multiple soccer clubs imagine how helpful that will be! Therefore we wanted a website that
focuses on just soccer. Existing apps or websites keep track of team stats that too at a premium
membership price and still do not offer individual player stats. This website would help parents
and coaches alike. Coaches can manage their teams. Coaches can update a child’s performance
e.g. which position the player plays in, how many assists the player got, how many goals he/she
scored etc. This way scouts can also go on the website and look at the best performer or the top
performers of teams of each participating club.
Another thing we observed is that while there is a great need for a way to manage
carpooling among the players in a team but there is nothing to manage that. We have built a
carpool service on our website. There are always last minute frantic messages on the team app
asking for carpool or players missing practices and games just because they couldn’t find a ride.
So offering a feature that helps parents either offer carpool space to others or asking for a ride for
their child, would make everyone’s life easier. This way players will not have to miss an
important game just because of their parents busy schedule.
The population affected by the project is parents of children who play soccer, the players
themselves, team managers, coaches and scouts. We have an easy to use website that will make
the lives of all the stakeholders easy. The data on the website is very organized. Providing a
service that solves multiple issues in one place is what we have tried to accomplish.
3
Table of contents:
TeamAssist
Executive Summary:
Introduction/Background
Project name and description:
Problem/ Issue in technology
Solution to the problem
Evidence that the proposed project is needed
Project Goals and Objectives
Stakeholders and Community
Environmental Scan
Final Deliverables
Approach/Methodology
Legal Considerations
Ethical Considerations
Timeline/Budget
Usability Testing/Evaluation
Final Implementation
Coach Functionality
Parent Functionality
Guest User Functionality
Problems during design and implementation phases
Conclusion
References
Appendix A
Team member names
Division of labor
Appendix B
Link to our survey
Link to survey results
Link to TeamAssist code on github
4
Introduction/Background
After school sports require keeping track of various stats, statistics, and events. It would
be convenient to have access to all of these on one platform. Youth Soccer clubs are very
prominent in our region and we felt that it would be an excellent candidate to build our platform
for. More than 24 million people play soccer in the United States and that soccer is the fourth
most played sport in the country (Johnson, 2015). There are several youth soccer clubs just in the
Bay Area. A quick search for a youth soccer club on the Cal North Soccer website shows several
results and each club in turn has several teams. Each team needs to manage its own performance
as a whole and that of its individual several players. Information such as what tournaments the
team has played, the wins and losses, individual player performance, the positions a player plays
in, contact information of the players etc. Besides that, Youth Soccer Clubs require the
management of various logistics. A platform where all this information can be organized easily
will make everyone’s life more convenient. Such a platform would need to be usable for an
audience with varying technology literacy such as coaches, parents and students.
The problem is that there is no such platform where everything mentioned above is
combined together. While there are various apps that help organize the teams, the players
information and updates of upcoming events, there is no option for parents or players to organize
carpooling for the team. Mostly emails or texts are being sent and information becomes muddled
5
or lost in long threads. Not everyone gets those emails and sometimes misses the opportunity to
request or offer a carpool. During the season you can see busy parents struggling to find pick up
and drop off solution for their child. Older kids are also always looking for a ride, for someone to
either take them to their practice or drop them off after practice. The issue of making field
assignment while keeping coach availability in mind is still there. As the season approaches the
leagues send frantic last minute emails that they are still trying to figure out the coach and field
availability.
If we combine these problems and come up with one solution it will make the lives easier
of parents, coaches and team managers alike. Also, our project is currently only focused on one
sport - soccer! This gives a custom tailored product meant for this one sport and not a one size
fits all kind of solution. We made a website that allows parents to enter their information. We
have added an option of carpooling where parents can request carpooling or a ride and you can
offer a ride in return if you want. A parent can offer carpool to existing requests. The requesting
parent has the choice to accept or decline the offer. Everyone on the team is notified via email if
a request for a carpool has been made. The requests are also listed on the event page itself. We
had initially mentioned that if resources allow we would like to add a calendar manager that can
automatically generate practice schedules keeping in mind the field and coach availability. We
If you search around you will not find any app or website that gives solution to all the
problems described above. Neither is any app/website focused on one sport. As a parent, player,
6
coach or a team manager you can easily see that this will be a very useful tool. In addition, the
sheer number of people involved with youth soccer teams is yet further evidence of the necessity
of our project.
We feel that the carpooling feature in our project sets apart our project even further. With
more individuals becoming conscious of protecting the environment by reducing the amount of
fossil fuels released into the atmosphere, the idea of carpooling becomes much more attractive.
Additionally with the rise of gas prices, people may want to make fewer trips in their cars in an
effort to save money, another problem which carpooling solves. Of course, there are also parents
who may have something urgent that they need to attend to, and they would greatly benefit from
their child carpooling with another parent. Our application will make it easy to setup and
● Main goal:
Our goal was to create a platform that can be used by youth soccer teams to
manage the many logistical aspects involved. This is done by incorporating features that
assist the various parties involved with youth soccer teams: coaches, parents and players.
One major logistics involved in youth soccer leagues are player and team
statistics. Player statistics (goals, assists, games played, etc.) and team statistics (wins,
losses, ties, etc.) are maintained in a database and accessible to all three of the primary
user groups.
7
● Carpool feature
games. We have created a carpool manager that allows parents to communicate with
other parents within the same soccer team so that they can easily request and offer rides
to players.
Because of the variety of computer literacy found in our main user groups, it was
important to create an intuitive and welcoming user interface. This was done by keeping
the user interface simple and make it clear how a user can interact within a given
● Focus group
audience in order to get feedback if our user interface is intuitive and what improvements
Each member of the user group has different services available to them. For
example, a coach has the ability to add and remove players on the team. Parents are able
to add and edit their contact information and have access to the carpool manager service.
Players, have their information stored in the player database as well. By having separate
user classes, we have kept the user interface less cluttered by irrelevant services and also
Another goal was to create a project that will showcase the skills that we learned
in this program and that are desirable in today’s job market. Skills such as Agile
mentioned in job listings for Software Engineer positions. We believe we have achieved
This primarily affected those involved in youth soccer leagues. This includes parents,
coaches and to some extent the players themselves. Because our application is focussing on
tackling many of the logistical concerns involved in Youth Soccer Leagues, parents and coaches
will especially be affected. Having trouble finding a carpool can be a major source of stress for
parents. With the carpooling feature, parents are now able to gain a large amount of convenience.
They have an easy way to be able to coordinate carpool rides with other parents in the same
team.
Coaches also have a difficult job of communicating team announcements to all of the
parents involved. It can be difficult to keep track of emails and phone numbers. Also it can be
hard to give updates on changes in scheduling, especially last minute ones. With our platform,
coaches have a convenient way to notify parents of upcoming events, and also give updates to
the schedule. Without this service, coaches will have to devote more time to keeping track of
contact information and scheduling. Additionally, it can be difficult to coordinate scheduling the
use of facilities for practices and games. There are times when locations can be double booked,
thus causing a problem for both parties expecting to use the location. This was something that we
9
had left to do if time and resources permitted. So for a future iteration, our application will notify
when there are scheduling conflicts. This will help prevent such situations from occurring.
Environmental Scan
the country (“US Youth Soccer”, 2018). These teams require a great deal of effort to manage all
of the logistics involved within the team. Of course a natural solution to logistical problems often
is to use software. With the growing use of technology, essentially all of these teams use some
sort of platform to store information for the team. Unfortunately there are not as many software
options for managing these leagues. Of the options that are available, they do not offer the same
features that we offer in order to consolidate these features to make a more convenient
experience. For example, Teamsnap is the leading app used by many different leagues, but they
do not have the features that we hope to offer (“20 Million People use Teamsnap”, n.d.)
For example, they lack the ability to manage the other logistics, especially when it comes
to setting up carpools. Additionally, while ridesharing services such as Uber and Lyft are gaining
prominence, they require an adult to be present in order to use the rides. This makes using these
services to get children to youth soccer practices not an option. Plus, even if they did, many
parents would simply not trust a stranger to transport their children. However, parents often
allow their children to carpool to practices with other children on the team. By creating a
platform that assists in coordinating these carpools, we are providing parents a real option to get
The organization and the facilitation of youth soccer teams is an important function of
our application. It serves as a platform available to all individuals involved with these teams, and
centralize them to allow for convenient accessibility. Our application will keep track of the
organization. While most applications with similar services as ours provide this feature, it is
What we are most excited about is providing an easy to use interface for updating player
stats. Currently, even if some applications have this capability it is not very easy to use,
especially considering that in soccer there are a lot of stats to update. We have provided a very
easy way to update player stats by using asynchronous calls to the server to give the user a
smooth and interruption free experience. Keeping track of each player’s data is very important.
Although, TeamAssist is meant for youth soccer, one shouldn’t underestimate the competitive
nature of sport in youth leagues as well. These are the players who in the future will be
professional soccer players playing for their colleges, at national and international level. Opta is
a website that keeps track of data on every player from every World Cup since 1966. According
“Not only does the advanced metrics movement reveal the intricacies and subtle nature of
the beautiful game, it also empirically brings to light the genius behind players that do not
necessarily score lots of goals but are critical to the success of their club or country” (Brownell,
2013).
11
Apart from providing the feature to add individual player stats, our application is a useful
tool to keep track of the entire team’s performance and statistics. Users are able to not only view
individual player’s performance but also the entire team’s in each game/event.
Furthermore, it allows the creation and building of teams. Coaches can create teams, signup
players, and add these players to their teams. In this modern age, it is important for most entities
to have an online presence, and our platform provides this to youth soccer teams. It shows the
relevant information for members of the teams, and those interested in tracking the performance
of a team. While other services offer this functionality, we feel that the additional features utilize
For example, we provide the ability of creating and managing events for the team. This
includes events such as games and practices, which are essential to the performance of a youth
soccer team. One of the major problems when organizing events, is the inevitable change in the
schedule. This of course becomes a problem especially when these changes are not
communicated with to those within the team. We feel that this is a problem that can be addressed
with software. Whenever an event is created or updated, parents within the team are notified by
email. This way they will always be kept in the loop of what is happening for the team, which we
Of course, for every event, players need to be transported to and from the event. This
typically is the responsibility of the parent of that player. However there are instances where a
parent simply cannot fulfill this responsibility. This then leads to the parent frantically seeking a
carpool for their child, or simply have their child miss the event. However, by including a
12
carpool functionality within our app, we are providing parents the opportunity to easily organize
carpools between each other. Each carpool is associated with an event, and parents can either
Functional Decomposition:
Our program is broken up into 3 major microservices along with a main application that
The PlayerAndParentService, as the name would imply, stores and manipulates the
player and parent information. The models contained in this service are Parent, Player and
PlayerStats. This subsystem manages the CRUD functionality for each of these models. A parent
object is created whenever there is a new devise parent user created for an email address. The
player and parent objects are connected through the parent email.
The CoachAndTeamService stores the information for the Coaches and their Teams. The
two models in this subsystem are the Coach and Team models. Again this subsystem manages
the CRUD functionality for these models. Also like the parent model, a Coach model is created
whenever a devise parent user is created for an email address. Coach and Player are connected
by CoachId, and therefore Parent is connected to the coach through the CoachId stored in the
player object.
The EventAndCarpoolService stores the information for the Events and Carpools
associated with the events. The three models in this subsystem are Events, Offercarpool, and
Carpool request. Events are tied to the Teams model and Players model (and Parents model
14
through their players) using the teamId. The Carpoolrequest model is connected to the event and
the requesting parents player. The Offercarpool is connected to the Capoolrequest through the
Carpoolrequest id and is connected to the offering parent through the offering parents Id.
The TeamAssist service is connected to each of the microservices through helper classes.
This is where the TeamAssist service can make HTTP requests to the microservices.
We wanted to design this project without any monetary obligations. This is done by
utilizing free resources such as Heroku, GitHub and MailGun. However, this of course provides
some limitations as these free solutions are generally not as robust. However for the goal of our
project, this is perfectly acceptable. We have designed with the intent that our application could
be ported to a more robust solution in the future as resources allow. At the present time, we have
We want our website to perform as a functional website that can respond to and handle
possible exceptions as they may arise. For that we will have thoroughly tested different scenarios
that may occur in the use of our application. This includes scenarios that may not be the intended
use of our service, but still the application must be able to handle these.
Final Deliverables
Approach/Methodology
To turn our project into a reality, first and foremost, we needed to decide what coding
tools to use and what database to use. We had recently learned Ruby on Rails so that is what we
decided to use for our project. We built a website in our internet programming class and we have
We divided the project into smaller modules. Having recently learned about agile
methodology and that seemed to be a good fit for what we were trying to accomplish. We tested
each module as we go and made sure that the functionality of each step is what we expect it to be
Our first step was to design a database schema. It was a good starting point so that we
knew what information we are storing, how we are storing it and then we moved on to the next
step of information retrieval and processing. We also needed to design our website. For website
design we needed to decide the number of webpages required to meet the actionable items of our
project.
We worked on this project with the Agile approach. In doing so, we focused on creating
working prototypes and get feedback from our focus group to drive improvements and new
16
features which was in line with the Agile approach. Our project consists largely of a database
that contains the various statistics of the players and teams involved in the Youth Soccer League.
We have designed a database schema that organizes and stores all of this data and fulfills the
requirements to be considered “normalized”. The stats for players and teams can be updated and
accessed regularly. For that we have used Ruby on Rails equivalent of SQL statements to access
data from and make changes to the database. This has allowed us to demonstrate our skills in
working with databases and SQL. Our platform required a user frontend that is easy to use and
displays the information received from the database. This of course requires the working
backend that takes the input from the user and accesses the appropriate information from the
database.
Legal Considerations
The carpool feature required us to take several precautions as it involves children and
drivers. Many ride sharing companies today prohibit minors from using their services without an
adult accompanying them. For example, Uber and Lyft both instruct their drivers to deny service
to anyone that they suspect to be under the age of 18. Of course, the difference between ride
sharing services and our own carpooling service, is that our carpooling service will be used by
individuals in the same youth soccer team not a random Uber driver. The assumption and
expectation is that parents would be able to meet and know each other before any carpools are
ever arranged, so they are not entirely strangers. Additionally, parents are able to choose whether
or not to accept a carpool offer. This allows them to reject a carpool offer from anyone on the
team that they have not met yet and do not know or feel comfortable sending their child with.
17
Ethical Considerations
While creating this platform it was very important that we take into account several
ethical considerations, especially since a large portion of the users of this platform indirectly
This application handles personal information for the players and their parents such as
home addresses, phone numbers and email addresses. It is important that this information is not
displayed and is restricted to only certain user groups. We allow parents to only share address
Player statistics is also a major feature of this platform. This can help boost the
competitive nature of youth sports. However we were concerned that it can also have a negative
effect on some of the players leaving them feeling self conscious of their performance statistics
in relation to their peers. Worse, lower performers could be bullied by higher performers. Some
players may not like their team position and actually want to play another position. However, we
realized since this is a team sport and we are tracking team statistics, it is necessary to include
the statistics of all players. Additionally it is important that players understand that it is
acceptable if they may not perform at the same level as their peers.
As mentioned earlier, the safety of children when using the carpool functionality is of
great importance. However, since these carpools will only be organized by the parents, and not
the players, it is largely the parents responsibility to confirm and choose a safe carpool for their
child. Our platform merely helps to facilitate communication for carpool requests and offers. The
Timeline/Budget
Design the web pages 9/1/2019 This was done throughout the
(Aesthetics, storyboards) project. We completed
storyboards as we progressed
in our project. Each webpage
was designed as we entered
the phase for the portion of
the project.
Usability Testing/Evaluation
Our plan was to prescribe to the test driven development approach. This meant that we
would be writing test cases that follow certain user stories and then develop the software to pass
these user cases. This would have assisted us in developing to ensure that our application
behaves in the way that we expect and the present the experience we want to give to our
audience.
Instead of using the RSPEC tool of Ruby on Rails we stuck to a method which was more
like test as you go. As explained earlier our web pages were developed as we worked on the
backend. It was a lot easier to see the whole thing in action as we developed.
functionality first. Basic functionality included the CRUD functions which is create, read, update
and delete. So when a model was implemented we ensure that these functions could be
implemented on it successfully. Since we were building a website, we created views for these
functions. Through our views we tested if all of the CRUD functionality was working as
expected.
The majority of the time we were testing as we went forward in creating the product. As
our project built on top of the basic functionality we kept adding views (web pages) for all of the
functionality that our website would provide. Every time the developer would extensively check
all the features, trying expected inputs, trying unexpected behaviour and making sure to catch all
20
the bugs. Both the developers fixed bugs for the portion that they were working on. Both would
test and check each other's work once it was pushed to git.
Once our project was in an almost complete state, we began our testing with our focus
group that consisted of individuals belonging to our target audience. Our target audience is
soccer team coaches/managers and parents. Age can vary from older kids to adults. It is mostly
for adults i.e. parents of kids who play in youth soccer leagues and coaches and team managers
of those teams. But kids who are about 16-18 years of age might manage their own soccer
schedules. So we picked our focus group accordingly. Our focus group included people from
various backgrounds. We had a mother of four with children involved in after school activities
that has limited computer literacy, who has offered many carpools to friends of her children to
and from after school events. As a parent they perfectly fit our target demographic. We also had
a software engineer who had extensive experience in product testing and design. He also has
experience as a soccer coach of a local youth soccer league and is a parent whose kids play
soccer. So he fit our user demographics very nicely. We had another person who is a father with
children actively involved in extracurricular activities. He has high computer literacy and
generally comfortable interacting with different applications. As a parent they perfectly fit our
target demographic. We also had a teenager in our focus group who plays soccer for a local
youth soccer league and often needs to carpool to his games and practices.
With our very well formed focus group we performed our user testing of our project. It
was very interesting to see people test our product. We came across a few bugs that we were
either not aware of or were not expecting them as we had not come across them in our own
testing. We got lots of valuable feedback from each member of the focus group varying from
21
how to improve the user friendliness of our website, how to improve navigation to how the user
Final Implementation
TeamAssist provides you with three different types of users. On the main page you are
If you want to sign-in/sign-up as a coach you go to Coach Login. If you are a parent of a
player on a soccer team, you click on Parent Login. To view the teams under different clubs and
the performance of players on each team you don’t need to sign in or sign up you can click on
Guest User and you will be able to navigate through different clubs and their teams.
TeamAssist is built as a website that relies on three other microservices. The three microservices
1. EventsAndCarpoolService:
- This service lets the coaches create events like practices and games for their
teams.
- Through this service parents can utilize the carpool feature of TeamAssist.
- Team stats are also stored in this service as scores are related to an event.
22
2. ParentsAndPlayerService
- This service stores the player’s information such as name, date of birth, gender
- Parents’ information such as their names, email, address and phone number are
3. CoachAndTeamService
- Coach’s information such as their name, contact information (email and phone
number)
- This service stores information about teams. Team name, what club they belong
to, who is the coach for the team, the age group are all stored here.
Coach Functionality
Once you click on the coach login you can either sign up, if it is your first time or sign in
using a previously entered email and password. We used the Devise gem, a library in Ruby, to
implement the authentication. Once the coach enters his email and password, if it is their first
This is where our CoachAndTeamService is contacted. Once the coach enters his/her
Coach’s information is sent to that service and a new coach is created there and the information
Once that is done the coach is taken to the coach home page.
On the coach home page there is a personalized message for the coach who is signed is
welcoming the coach with their full name.There is a button to create team. If that button is
clicked a dynamic form appears on the same page without the page being refreshed.
24
Here the coach can enter the team name, choose a club that the team and the coach belongs to
from the dropdown menu, enter the gender for team and the age group. Once save is clicked
CoachAndTeamService is contacted again and the information for team is stored there.
All the teams that belong to this coach are listed on the coach’s home page. When clicked on a
The team page lists the team roster, displaying each team player’s first and last name,
their gender (if updated by the parent) the parent’s email and an option to remove the player
There is also an option to add a new player to the team. By clicking on the Add Player
In this form the player’s parent’s email their first and last name is required to enter. After
clicking Save Player, a call is made to the PlayerAndParentService. This call is made to check if
the player already exists in its database. If not the coach is prompted that the player he/she is
trying to add does not exist in the database and if they would like to create a new player. After
using a secure and encrypted method and through an HTTP call. Once the PlayerAndParent
service receives the information, this information is stored in the player database on that service.
On the team page is another button to create events for the specific team. If that button is
clicked another dynamic form appears where the coach can enter the event information.
26
Here the coach is required to enter the date of the event, time location the type of event
from a dropdown menu (either game or practice) and description which is optional.
A datepicker gem was used to pick the date of the event. Once clicked it displays a small
The team page lists all the events for the team as well. There is a link in front of each
event that takes you that specific event’s page. There is a button to edit the event which displays
27
a dynamic form. The event page also displays a chart showing team stats for that event. The stats
If the user clicks on update stats a pop up window opens up on top of the page.
Here the coach can easily update the team stats. Every time the ‘Save Stats’ button is
clicked for a player, an AJAX call is made to the controller, which means the page is not
refreshed and the stats window stays there, but the data is sent behind the scenes. Data is sent to
the EventAndCarpoolService through our secure and encrypted method using HTTP. It is then
saved there and also updated on the event page without refreshing the page or taking away the
Parent Functionality
Parent login is very similar to coach login. Once the parent signs up they are directed to a
page prompting them to enter their information such as first and last name, phone number and
stored.
On the parent's home page is a button to let the user update their information. All the
players of that parent are listed on the left. Player names are links which lead to that players
personalized page. On the left side all the teams for the players of this parent are listed. Team
names are also links that take the user to that team’s page.
All the upcoming events for all the players are also listed on the parent’s home page.
Each event is listed as a link that will take the user to that event’s page. There are two other
29
columns in the events table. Carpool Requested displays the requests made by this parent for a
ride for that specific event. Carpool Offered displays all the offers that have been made in
Once the user clicks on the player name they are directed to that player’s personalized
page containing player’s information such as Name, Team, Birthday, Age and Gender. Clicking
on the Update Player button displays a dynamic form in which the user can edit player’s
information. When the player’s information is edited, PlayerAndParentService is called and the
Upcoming events such as practice or game are also displayed on the player’s page.
Events are compartmentalized into boxes to make readability easier for the user. Each box
contains information about the event and a link that will take the user to the event page.
30
On the event page besides listing the event details, there is an option to request carpool
for that particular event. Once all the information is entered a call is made to the
EventAndCarpoolService and this request is stored there. All the team parents are notified of the
request made via email. Other parents have the option of responding to each request by offering
carpool. The requesting parent has the option to accept the offer or reject it.
The guest user does not need to create an account for sign in. When a user clicks on
Guest User they are taken to the guest user home page.
31
On the home page are listed all the soccer clubs that have been entered in the system.
When the user clicks on one of the links of a soccer club, they are taken to the soccer
club’s page. Over there all the teams that belong to that soccer club are listed with their basic
The user can click on each team’s name and would be directed to the team page then.
32
Once on the team page the user will see all the players listed in a table format with their
aggregate scores for that season. This gives a guest user, especially if it is a scout
During the design phase we had to go back and forth a few times before we finally
decided on our microservices design. We invested a lot of time deciding which database tables
belong in which service. Also, we had to change the fields that belonged to each a few times.
When the major functionalities of our project were completed we deployed it to Heroku.
When we tested it we got unexpected errors. After spending some time on debugging we realized
one of the domain address was incorrect and that is why we were not able to access that service.
That is the beauty of using microservices. While some functionality was affected, the portion that
Another major problem we faced was when somehow an older version was pushed to git
by mistake. This happened towards the end almost. We did not realize the issue until some of our
features starting failing. It took us a lot of time to get the project back to its perfect state.
33
Another thing that took some time to figure out was integrating Javascript into our
application. We needed to use JS in making AJAX calls, implementing input masks, using the
Conclusion
Soccer is a very popular sport in youth. There are many youth soccer clubs with multiple
teams. While there are many platforms out there that are meant for team management in general
there was no technology meant distinctly for soccer. Organizing teams, storing all the players
information, having the roster at a click of a button etc., while all these features are available
through other apps we felt something was amiss. Statistics in soccer doesn't only mean goals and
assists, there is a lot more to that. Keeping track of the entire team’s statistics is no easy job.
TeamAssist brought an easy solution where a coach can update the entire team’s statistics on the
field! Our website’s friendly user interface makes updating the team statistics a breeze. Not only
the stats are easy to update they can be easily retrieved and viewed later. Additionally these stats
can be viewed by others outside of the team, such as scouts that may be looking for promising
soccer prospects. Our implementation of a carpool feature is something that is very novel
amongst the current services on the market. We feel that features such as these provide a solution
that other current applications simply do not. By following the Agile Programming methodology
of creating prototypes throughout development, we were able to make great strides through each
programming sprint.
We learned a lot throughout this project. Working as a team, it was vital that we had
consistent, clear and regular communication throughout the life of the project. This of course is
34
an essential skill in the workforce, especially when companies use the Agile Programming
approach. We learned a lot about how to work with service oriented applications that utilize a
variety of microservices to provide functionality. It was clear that this approach has pros and
cons. One of the major benefits is that our microservices can fairly easily be added to other
programs, and we can add other microservices to our application. However, we also how quickly
applications can get complicated as more microservices are added. Troubleshooting became
much more complex as the various microservices are intertwined. This experience helped us to
realize why it is important to think carefully when deciding on using microservices, or a more
integrated application, because there are times when the benefits do not outweigh the additional
complexity.
35
References
20 Million People Use Teamsnap and Can Tell You Why They Do. (n.d.). Retrieved from
https://www.teamsnap.com/why
Brownell, P. (2013, April 9) The Most Important New Advanced Soccer Statistics and Why
https://bleacherreport.com/articles/1597790-the-most-important-new-advanced-soccer-sta
tistics-and-why-they-matter
Johnson, A. (2015, May 27) Soccer by the Numbers: A Look at the Game in the U.S. NBC News
Retrieved from
https://www.nbcnews.com/storyline/fifa-corruption-scandal/soccer-numbers-look-game-u
-s-n365601
US Youth Soccer Announces New Leagues Structure - The US Youth Soccer National Leagues.
(2018, April 18). Retrieved from
https://www.usyouthsoccer.org/us-youth-soccer-announces-new-leagues-structure---the-u
s-youth-soccer-national-leagues/
36
Appendix A
2. William Baker
Division of labor
- Create/update/delete players
- Create/update/delete events.
Admin/coaches (Beenish)
- Create a team
Parents (William)
- Request Carpool
- Offer Carpool
Appendix B
https://docs.google.com/forms/d/e/1FAIpQLSetqCH6wo2UBY21yYOaFw7k31LlWwWhJ9XTJ
mtO-RXdzfsOwg/viewform?usp=sf_link
https://docs.google.com/spreadsheets/d/1V6tC65Z3fBW9PQj4xmklK--lX8Zurd9N2L2lN32idLk
/edit?usp=sharing
https://github.com/Beenish-Syed/Capstone