Title
EPL Weekly Pool (EPL English Premier League)
Purpose and the scope of the application
The main goal of the application is to have a community of people that try to predict the results of games in the English Premier League (EPL).
The application will allow users to join via a web interface.
Once joined a user will have to select 3 teams they think will win from the 10 games played each week in the EPL.
If a user does not select 3 teams they will be deducted 5 points.
When a user logs into the application the upcoming games will be displayed. There will be numbers assigned to each team like this…
Everton (9) v. Man Utd (4)
Portsmouth (9.5) v. Liverpool (3.5)
Tottenham (7.5) v. Arsenal (5.5)
Birningham (6) v. Bolton (7)
West Ham (4.5) v. Middlesbrough (8.5)
Sunderland (5) v. Reading (8)
Wigan (5) v. Fulham (8)
Chelsea (2) v. Blackburn (9)
Man City (5) v. Aston Villa (8)
Derby (9) v. Newcastle (4)
The sum of the numbers for each game will add to 13 (9+4, 9.5+3.5, etc.)
The numbers are generated form betting odds given by PaddyPower.com (A betting website). i.e. if Sunderland is expected to beat Reading then Sunderland will have a smaller number beside its name and Reading a larger one. The difference in the numbers depends on the odds.
A user once logged in will select 3 teams (e.g. Sunderland, Derby and Chelsea). There will be a deadline as to when the users selection must be in. Once the deadline is reached the system will display every users selection and not allow more selections.
Once the weekend games are over the system will calculate the users score.
Let us assume that Chelsea tied, Sunderland won and Derby lost. Then the user would get a score of 0 + 5 – 4 = 1
0 for a tie
5 for a win because that was the number beside the winning team
-4 for a loss because that was the number beside the winning team.
The competition will be divided up into quarters. So there will be a winner each quarter (Who ever has the most points) and an over all winner.
There will also be a need for bonus rounds. These are sets of games that users can try to predict but will not loose 5 points if they do not enter.
These bonus rounds arise because there are often games in mid-week that are separate to the 10 weekend games.
The system will have to scaleable. Initially a user will be able to set up an account, create a league and invite other users. Then all users in that league will be playing against each other. There may also be a need to have an overall leader board from all the leagues.
Initially the information will be inputted manually by the league administrator. This admin will enter the games with the numbers beside the teams and the deadline. The admin will then also have to enter the results of the games.
When the system is updated by the admin an email will be generated and sent to the users. Also if a user has not entered the picks with one day left on the deadline then another email will be sent to that user.
Motivation
My motivation is that I currently play this game with some friends but it is all done by email. And it would be nice to automate it. I also believe that it could be sold to a sports website to attract users to it (for advertising) or a betting site. Users may be more likely to gamble if they come to the same site each week.
Languages I will use
I will write it in Java. I might do the GUI in JSP or PHP. More likely JSP because it will integrate easier with Java. The back end will be Java. And I will need a DB also. I might be able to do the math (adding the scores from the 3 games) in the DB also but not sure. I will write an administration GUI in JSP also. This GUI may be later replaced by an automated application that gets the information from the paddypower.com site.
Technologies I will use
I will need to use TomCat for JSP and maybe some communication technology like JMI to interface between the JSP front end and the JAVA back end. I will need some sort of DB to store the user data and another for the games info. (Or maybe just one – I am thinking two because a sports company may already have one for the games. and this may help integration later)
I will need a server to host the back end and TomCat and JMI.
Design constraints
Some constraints are-
The system must have users to operate
The users must be enrolled before the season starts
The users must select 3 teams per round (except bonus rounds)
The system will only be able to calculate the results after admin info is entered (winning tea,s etc.)
The system will store the results in a DB
The system will store the user selection is a DB
The system will calculate the score for each user based on what is in the DB. (This may be stored for increasing system speed)
Design Quality Conserns
That the data entered is validated before entry to DB.
That there is an edit option for the Admin.
That the if the Admin edits any weeks results the scores will update accordingly
That the system be scaleable (i.e. be able to be distributed later) – what if there are 1M users checking their scores on a Monday morning? Maybe the back end will span a new system that deals with just the league the user is in. That way it can cache relevant info in the app.
Another one is reliability and redundancy. If the system shuts down badly will it be able to recover its state or at least a previous state? How will the JSP front end look if the Back End is down? How will it handle invalid data.
Other possible issues
I have experience with Java/PHP/JSP/MySQL. My Java is strong PHP is good and JSP was 4 years ago. But if I remember it is pretty intuitive if I know Java and PHP. I am not so familiar with JMI. I have used it in applications but the infrastructure was already in place. And I am not even sure if I need it or can use it. Also setting up TomCat might be an issue. I will need a system to run it on. I think that one area that may slow me down is the DB design. How to design the tables and relationships in the DB. I have no real experience in this
*
