Professional Documents
Culture Documents
Teamassist: CST 499 Computer Science Capstone
Teamassist: CST 499 Computer Science Capstone
Teamassist: CST 499 Computer Science Capstone
Beenish Syed
William Baker
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 leagues. Currently the apps that are majorly
used for youth leagues are not focused on one sport. Apps like teamsnap are used by varying
youth leagues like baseball, swim teams, football etc. If you want consolidated information about
local soccer leagues 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 leagues 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 leagues 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. Both parents or 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 league.
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 plan to build 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 anticipate to have an easy to use website
that will make the lives of all the stakeholders easy. The data on the website will be very
organized. Providing a service that solves multiple issues in one place is what we plan to
accomplish.
2
Table of contents:
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
Environmental Scan
Stakeholders and Community
Approach/Methodology
Ethical Considerations
Legal Considerations
Project Scope
Timeline/Budget
Resources needed
Milestones
Risks and Dependencies
Final Deliverables
Usability Testing/Evaluation
Team Members
Team member names
Division of labor
References
Appendix
3
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 leagues are very
prominent in our region and we feel 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 leagues just in
the Bay Area. A quick search for a youth league on the Cal North Soccer website shows several
results of leagues and each league 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
Leagues require the management of various logistics. With several teams in an area competing
for field availability, it becomes very unwieldy for the organizer to assign fields to coaches for
practices without causing a conflict. 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.
4
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
or lost in long threads. Not everyone gets those emails and sometimes misses the opportunity to
avail carpool or offer 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 will give a product meant for this one sport and not one size fits all kind of
solution. We plan on making a website that will allow parents or players to enter their
information. We will add an option of carpooling where you can either offer carpooling or you
can state that you need carpooling for a certain event. If resources allow we would like to add a
calendar manager that can automatically generate practice schedules keeping in mind the field
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,
coach or a team manager you can easily see that this will be a very useful tool.
● Main goal:
Our goal is to create a platform that can be used by youth soccer teams to manage
the many logistical aspects involved. This will be done by incorporating features that
assist the various parties involved with youth soccer teams: coaches, parents and players.
One major logistic involved in youth soccer leagues are player and team statistics.
Player statistics (goals, assists, games played, etc.) and team statistics (wins, losses, ties,
etc.) will be maintained in a database and accessible to all three of the primary user
groups.
● Carpool feature
games. We will create 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 is
important to create an intuitive and welcoming user interface. This will be done by
keeping the user interface simple and make it clear how a user can interact within a given
● Focus group
targeted audience in order to get feedback if our user interface is intuitive and what
Also each of the user groups will have different services available to them. For
example, a coach will have the ability to add and remove players on the team. Parents
will be able to add and edit their contact information and have access to the carpool
manager service. Players, would of course have access to none of those services, but will
be largely limited to just viewing the statistics of their team and other players. By having
separate user classes, we can keep the user interface less cluttered by irrelevant services
Another goal is to create a project that showcases the skills that we learned in this
program and that are desirable in today’s job market. Skills such as Agile Programming,
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 the 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 hope to 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.)
We see several good options for programs that keep track of player and team statistics.
However they lack the ability to manage the other logistics, especially when it comes to setting
up carpools. 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, it provides parents a real option to get their children to practices that
This will primarily affect those involved in youth soccer leagues. This included parents,
coaches and to some extent the players themselves. Because our application will be 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 would be able to gain a large amount of
convenience. They would have an easy way to be able to coordinate carpool rides with other
Coaches also have the 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 would 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
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. Our
application will notify when there are scheduling conflicts. This will help prevent such situations
from occurring.
9
Approach/Methodology
To turn our project into a reality first and foremost we will need to decide what coding
tools to use, what database we will be using. We recently learned Ruby on Rails so that is one
contender. But we built a website in our internet programming class and we might use the same
tools as we did in that class. That is something we need to discuss and decide.
We plan on breaking the project into smaller modules. We recently learned about agile
methodology and that seems to be a good fit for what we are trying to do. We will test each
module as we go and make sure that the functionality of each step is what we expect it to be
Our first step would be to design a database schema. It will be a good starting point so
that we know what information we are storing, how we are storing it and then we can move on to
the next step of information retrieval and processing. We will also need to design our website.
For website design we need to decide the number of webpages required to meet the actionable
We will work on this project with the Agile approach. In doing so, we will focus on
creating working prototypes and get feedback from our focus group to drive improvements and
new features which is in line with the Agile approach. Our project will consist largely of a
database that contains the various statistics of the players and teams involved in the Youth
Soccer League. We will design 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 will have
to be able to be updated and accessed regularly. This means that we will use MySQL statements
10
to access data from and make changes to the database. This will allow us to demonstrate our
skills in working with databases and MySQL. Our platform will require 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
Ethical Considerations
While creating this platform it is very important that we take into account several ethical
considerations, especially since a large portion of the users of this platform will be composed of
This application will handle 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 will allow users to decide who they
want to share the information with and how much information they want to share. Of course
certain user groups, such as coaches, will have access to all of the contact information regardless
Player statistics will also be a major feature of this platform. This can help boost the
competitive nature of youth sports. However 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. For these reasons, players
and their parents will have the option to make their statistics private or public. This way, a player
11
can still track their own stats without having to worry about being compared to others in the
team. Also they can be listed as multiple positions and have the option of displaying the position
Apart from breach of privacy another issue that can arise is of the safety of minors. Our
carpool feature will require children to ride with other adults who are not their legal guardians.
While this is a very useful feature for parents and also will help with player’s attendance, it
might pose a risk to them. Even if the parents know each other through the league, it is the
website’s responsibility to ensure that any service being offered through them does not put the
players at any risk. The safest way to do this is asking the parents to get a background check
before they can participate in the carpooling option. All public schools require parent volunteers
to go through a background check and fingerprinting before letting them volunteer in the
classrooms. This step is taken to ensure the safety of young children. Similarly, only people who
have submitted their background check and fingerprinting documents will be able to take
Another ethical concern is that people might abuse the carpooling option by always
taking advantage of it while never offering to provide the service themselves. For that we plan on
keeping a check that for every two times you use the carpooling service you have to offer it at
least once, otherwise you won’t be allowed to signup for carpool the third time.
12
Legal Considerations
As previously mentioned in our ethical considerations, the carpool feature will require 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 will be able to choose whether or not to send their child with any
particular carpool. This will allow them to reject a carpool offer from anyone on the that they
have not met yet and do not know. Whenever a parent is about to accept a carpool offer, they
will be displayed a disclaimer to not accept a carpool offer from anyone that they do not know.
The players themselves will not be able to create carpools for themselves, every carpool requires
parental permission. This way no carpool will be organized without the knowledge and approval
of the parent. All of this will be done to prevent putting children in dangerous situations with
complete strangers.
13
Project Scope
Timeline/Budget
requirements.
storyboards)
Resources needed
4. Github
5. AWS Cloud9
6. MySQL Workbench
7. Ruby on Rails
Our project requires the use of a variety of tools and resources, many of which we have
gained experience with throughout our other courses in this program. We will use MySQL
workbench to design the schema and the UML diagrams for our database. We have used this tool
in the past during our Introduction to Databases course, so it will be nice to revisit this tool. We
will use AWS Cloud9 as our development environment. We have used this tool in several
courses before and it is extremely useful to collaborate or projects with. This is largely due to its
ability to integrate with GitHub, which we will use to store our files and integrate into our web
hosting service Heroku. We have used Heroku previously in our Internet Programming Course,
and it is a nice free tool that we can use to deploy our project and allow users to try it.
Milestones
The first and basic step for us is to design our database schema. Once that is done we will
know the structure of our project and we can move to the next step.
Once we have the schema ready we will implement it and make sure our tables are in
We would really like to have a very nice, user-friendly and professional looking website.
The website should not only look great but easy to use for people who are not very tech
savvy as well.
We will test each page and make sure it is fully functional. Each functionality will be
- Choosing the wrong tools that are not suitable for our project.
It is very important to start with the right tools. First of all deciding what language to
code with, which database (e.g. MYSql or SQLite) to use and whether to design the
website ourselves using HTML and CSS or to use a web designing website.
It is hard to find out about such things but we can run into some issue where someone
else has already thought of an idea the same as ours or similar to ours and hence we can
Although both of us have worked on several projects together and can rely on each other
to complete our work responsibly, this project we are on our own with self described
Final Deliverables
Usability Testing/Evaluation
We will be prescribing to the test driven development approach. This means that we will
be writing test cases that follow certain user stories and then develop the software to pass these
user cases. This will assist 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.
This will involve us writing test specs in RSPEC which is a tool in Ruby on Rails that
allows us to create fast, independent, repeatable, self-checking and timely (FIRST) test cases.
The goal of this is to be able to continually run the cases throughout the entirety of the
17
development process without necessarily having all of the application’s microservices finished.
This is important since some of the services that rely on each other may be developed
concurrently. We will be making use of RSPEC’s class doubles and method stubs, which create a
“dummy class” that simulates the expected functionality of another, yet to be created, class. We
will write test cases individually for each of the different microservices. We will then create a
client program that will allow us to test the functionality of the different microservices between
each other. Our unit testing should limit the amount of bugs that we find by the time that we test
We will then implement a front-end user experience that will allow us to further test our
user experience. Once we have a functional front end, at this point we will begin our testing with
our focus group that will consist of individuals belonging to our target audience. We will ask our
focus group to do a variety of different tasks in the application and then request feedback on their
experience completing such tasks. Such tasks will consist of creating a carpool, joining a
carpool, looking up a certain players statistics, updating contact information, etc. The feedback
that we will request from them will include asking them to rate the difficulty of completing the
task they were asked to do. We will then request feedback on what they liked about the
experience and what they would change about the experience. We will then ask for overall
feedback, including which features did they enjoy, what ones did they not enjoy, anything that
they would change or add to the application. These questions should allow us to get valuable
insight on how users feel about their experience with our application. Additionally, we should
get feedback on anything that does not work as expected, which hopefully will not happen after
We will use the feedback that we receive to determine adjustments that might need to be
made to our application as well as additional features that we may try to implement in this
iteration or save for future iterations. The feedback from those with a limited technological
literacy will be especially important, because one of our major goals is to have an application
that is usable by those of a variety of backgrounds, especially those with limited computer
literacy. Additionally, issues of ease of use will largely be dependent on the user interface, or
frontend, which should be relatively simple to adjust, as long as it does not require changes to the
By using these two series of testing, we hope to create an application that is largely free
from any major bugs. Additionally, we hope to have an application that is usable by all and
works as expected.
Team Members
2. William Baker
Division of labor
- Create/update/delete players
- Create/update/delete events.
Admin/coaches (Beenish)
Parents (William)
References
20 Million People Use Teamsnap and Can Tell You Why They Do. (n.d.). Retrieved from
https://www.teamsnap.com/why
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/
21
Appendix