live-soccer-tables
Projects

Live Soccer Tables WordPress Plugin

Live Soccer Tables is a WordPress plugin that I developed to get a good idea of how to take a WordPress plugin from concept to production. The plugin allows users to add a shortcode to their WordPress website and instantly get the current standings of the most popular soccer leagues around the globe. The plugin fetches data from many sources and compiles them together using NodeJS, this then creates an endpoint for the PHP code to grab the data based on the league name.

In the future Live Soccer Tables will allow you to specify a particular year so you can get historical data that can be inserted in to articles an pages.

Below are some examples of what the plugin has to offer, plus a lot more.

English Premier League Football Table

POS Club P W D L GF GA GD PTS
C Manchester City 38 32 4 2 106 27 79 100
2 Manchester United 38 25 6 7 68 28 40 81
3 Tottenham Hotspur 38 23 8 7 74 36 38 77
4 Liverpool 38 21 12 5 84 38 46 75
5 Chelsea 38 21 7 10 62 38 24 70
6 Arsenal 38 19 6 13 74 51 23 63
7 Burnley 38 14 12 12 36 39 -3 54
8 Everton 38 13 10 15 44 58 -14 49
9 Leicester City 38 12 11 15 56 60 -4 47
10 Newcastle United 38 12 8 18 39 47 -8 44
11 Crystal Palace 38 11 11 16 45 55 -10 44
12 Bournemouth 38 11 11 16 45 61 -16 44
13 West Ham United 38 10 12 16 48 68 -20 42
14 Watford 38 11 8 19 44 64 -20 41
15 Brighton & Hove Albion 38 9 13 16 34 54 -20 40
16 Huddersfield Town 38 9 10 19 28 58 -30 37
17 Southampton 38 7 15 16 37 56 -19 36
R Swansea City 38 8 9 21 28 56 -28 33
R Stoke City 38 7 12 19 35 68 -33 33
R West Bromwich Albion 38 6 13 19 31 56 -25 31
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}

Scottish Premiership Football Table

POS Club P W D L GF GA GD PTS
C Celtic 38 24 10 4 73 25 48 82
2 Aberdeen 38 22 7 9 56 37 19 73
3 Rangers 38 21 7 10 76 50 26 70
4 Hibernian 38 18 13 7 62 46 16 67
5 Kilmarnock 38 16 11 11 49 47 2 59
6 Hearts 38 12 13 13 39 39 0 49
7 Motherwell 38 13 9 16 43 49 -6 48
8 St Johnstone 38 12 10 16 42 53 -11 46
9 Dundee 38 11 6 21 36 57 -21 39
10 Hamilton Academical 38 9 6 23 47 68 -21 33
11 Partick Thistle 39 8 9 22 31 62 -31 33
12 Ross County 38 6 11 21 40 62 -22 29
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}

Spanish La Liga Football Table

POS Club P W D L GF GA GD PTS
C Barcelona 38 28 9 1 99 29 70 93
2 Atletico Madrid 38 23 10 5 58 22 36 79
3 Real Madrid 38 22 10 6 94 44 50 76
4 Valencia 38 22 7 9 65 38 27 73
5 Villarreal 38 18 7 13 57 50 7 61
6 Real Betis 38 18 6 14 60 61 -1 60
7 Sevilla 38 17 7 14 49 58 -9 58
8 Getafe 38 15 10 13 42 33 9 55
9 Eibar 38 14 9 15 44 50 -6 51
10 Girona 38 14 9 15 50 59 -9 51
11 Espanyol 38 12 13 13 36 42 -6 49
12 Real Sociedad 38 14 7 17 66 59 7 49
13 Celta Vigo 38 13 10 15 59 60 -1 49
14 Alaves 38 15 2 21 40 50 -10 47
15 Levante 38 11 13 14 44 58 -14 46
16 Athletic Bilbao 38 10 13 15 41 49 -8 43
17 Leganes 38 12 7 19 34 51 -17 43
R Deportivo La Coruna 38 6 11 21 38 76 -38 29
R Las Palmas 38 5 7 26 24 74 -50 22
R Malaga 38 5 5 28 24 61 -37 20
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}

German Bundesliga Football Table

POS Club P W D L GF GA GD PTS
C Bayern Munich 34 27 3 4 92 28 64 84
2 Schalke 04 34 18 9 7 53 37 16 63
3 Hoffenheim 34 15 10 9 66 48 18 55
4 Borussia Dortmund 34 15 10 9 64 47 17 55
5 Bayer Leverkusen 34 15 10 9 58 44 14 55
6 RB Leipzig 34 15 8 11 57 53 4 53
7 Stuttgart 34 15 6 13 36 36 0 51
8 Eintracht Frankfurt 34 14 7 13 45 45 0 49
9 Borussia Monchengladbach 34 13 8 13 47 52 -5 47
10 Hertha Berlin 34 10 13 11 43 46 -3 43
11 Werder Bremen 34 10 12 12 37 40 -3 42
12 Augsburg 34 10 11 13 43 46 -3 41
13 Hannover 34 10 9 15 44 54 -10 39
14 Wolfsburg 35 7 15 13 36 48 -12 36
15 Mainz 05 34 9 9 16 38 52 -14 36
16 Freiburg 34 8 12 14 32 56 -24 36
R Hamburger SV 34 8 7 19 29 53 -24 31
R FC Koln 34 5 7 22 35 70 -35 22
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}

French Ligae 1 Football Table

POS Club P W D L GF GA GD PTS
C Paris Saint-Germain 38 29 6 3 108 29 79 93
2 Monaco 38 24 8 6 85 45 40 80
3 Lyon 38 23 9 6 87 43 44 78
4 Marseille 38 22 11 5 80 47 33 77
5 Rennes 38 16 10 12 50 44 6 58
6 Bordeaux 38 16 7 15 53 48 5 55
7 Saint-Etienne 38 15 10 13 47 50 -3 55
8 Nice 38 15 9 14 53 52 1 54
9 Nantes 38 14 10 14 36 41 -5 52
10 Montpellier HSC 38 11 18 9 36 33 3 51
11 Dijon 38 13 9 16 55 73 -18 48
12 Guingamp 38 12 11 15 48 59 -11 47
13 Amiens 38 12 9 17 37 42 -5 45
14 Angers 38 9 14 15 42 52 -10 41
15 Strasbourg 38 9 11 18 44 67 -23 38
16 Caen 38 10 8 20 27 52 -25 38
17 Lille 38 10 8 20 41 67 -26 38
18 Toulouse 38 9 10 19 38 54 -16 37
19 Troyes 38 9 6 23 32 59 -27 33
R Metz 38 6 8 24 34 76 -42 26
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}

Australian League Football Table

POS Club P W D L GF GA GD PTS
1 Sydney FC 27 20 4 3 64 22 42 64
2 Newcastle Jets 28 15 5 8 57 38 19 50
3 Melbourne Victory 28 13 5 10 44 37 7 44
4 Melbourne City 27 13 4 10 41 33 8 43
5 Adelaide United 27 11 6 10 36 38 -2 39
6 Brisbane Roar 27 10 5 12 33 40 -7 35
7 Western Sydney Wanderers 27 8 9 10 38 47 -9 33
8 Perth Glory 27 10 2 15 37 50 -13 32
9 Wellington Phoenix 27 5 6 16 31 55 -24 21
10 Central Coast Mariners 27 4 8 15 28 49 -21 20
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
{{pos_1}} {{name_1}} {{play_1}} {{gd_1}} {{pts_1}}
{{pos_2}} {{name_2}} {{play_2}} {{gd_2}} {{pts_2}}
{{pos_3}} {{name_3}} {{play_3}} {{gd_3}} {{pts_3}}
{{pos_4}} {{name_4}} {{play_4}} {{gd_4}} {{pts_4}}
{{pos_5}} {{name_5}} {{play_5}} {{gd_5}} {{pts_5}}
{{pos_6}} {{name_6}} {{play_6}} {{gd_6}} {{pts_6}}
{{pos_7}} {{name_7}} {{play_7}} {{gd_7}} {{pts_7}}
{{pos_8}} {{name_8}} {{play_8}} {{gd_8}} {{pts_8}}
{{pos_9}} {{name_9}} {{play_9}} {{gd_9}} {{pts_9}}
{{pos_10}} {{name_10}} {{play_10}} {{gd_10}} {{pts_10}}
{{pos_11}} {{name_11}} {{play_11}} {{gd_11}} {{pts_11}}
{{pos_12}} {{name_12}} {{play_12}} {{gd_12}} {{pts_12}}
{{pos_13}} {{name_13}} {{play_13}} {{gd_13}} {{pts_13}}
{{pos_14}} {{name_14}} {{play_14}} {{gd_14}} {{pts_14}}
{{pos_15}} {{name_15}} {{play_15}} {{gd_15}} {{pts_15}}
{{pos_16}} {{name_16}} {{play_16}} {{gd_16}} {{pts_16}}
{{pos_17}} {{name_17}} {{play_17}} {{gd_17}} {{pts_17}}
{{pos_18}} {{name_18}} {{play_18}} {{gd_18}} {{pts_18}}
{{pos_19}} {{name_19}} {{play_19}} {{gd_19}} {{pts_19}}
{{pos_20}} {{name_20}} {{play_20}} {{gd_20}} {{pts_20}}
{{pos_21}} {{name_21}} {{play_21}} {{gd_21}} {{pts_21}}
{{pos_22}} {{name_22}} {{play_22}} {{gd_22}} {{pts_22}}
{{pos_23}} {{name_23}} {{play_23}} {{gd_23}} {{pts_23}}
{{pos_24}} {{name_24}} {{play_24}} {{gd_24}} {{pts_24}}
{{pos_25}} {{name_25}} {{play_25}} {{gd_25}} {{pts_25}}
{{pos_26}} {{name_26}} {{play_26}} {{gd_26}} {{pts_26}}
{{pos_27}} {{name_27}} {{play_27}} {{gd_27}} {{pts_27}}
{{pos_28}} {{name_28}} {{play_28}} {{gd_28}} {{pts_28}}
{{pos_29}} {{name_29}} {{play_29}} {{gd_29}} {{pts_29}}
{{pos_30}} {{name_30}} {{play_30}} {{gd_30}} {{pts_30}}
themeforest-enhancement-suite
Projects

Themeforest Enhancement Suite

Themeforest Enhancement Suite is a small script I wrote to help me understand how google chrome extensions work.

This extension allows you to see a preview of wordpress template images that are available on Themeforest.com. Initially this plugin loaded the webpage associated with the template and grabbed the available preview images, this was found to be slow and not very friendly to the Themeforest web servers, so now I have it set up to grab some hidden urls associated with the template itself and load only that one image.

There is some updates that have to be done to this extension but it was a good exercise in developing and releasing a google chrome extension.

Have a look at the extension here

Projects

Sportdec.com

Working on sportdec our team was tasked with creating an online sports statistics, news and betting application for Android and iOS.

This product was one of the most challenging projects I have worked on, we had to take everything that was learned on previous applications and condense that down to a mobile friendly platform.

Technologies and techniques used in this project where as follows:

Cordova

Cordova was essential to getting this product “on the shelves” as quick as possible, It allowed us to leverage our extensive javascript skills to get a project from concept to production in only a short few months and also allowed us to leverage some of the great features that are available to native mobile applications.

Ionic

Ionic was extremely helpful and meant we didn’t need to worry about spending too much time on layout and design from the get go. Ionic was also extremely helpful when it came to our designers conforming to a style guide when building for a mobile platform. This was one of our first major mobile applications and it couldn’t have gone smoother, going from design to concept was seamless.

AngularJS

We decided to move away from BackboneJS in this project as we felt AngularJS had gone through enough iterations to be extremely stable. A strong pull that Angular had on our team was its management of binding data between the factory, controller and the DOM. Using the binding that was available to us in AngularJS allowed us to worry more about the front end controller logic rather than hacking together binding logic.

We inevitably ran in to some walls with angular, one of which was the reason we started using it and that was the data binding functions. Due to the amount of data we had on some of the pages sometimes thousands of objects which pretty much ate up all the resources available to the mobile browser. In some cases we had over 3000 watchers on a single page which meant we spent a number of days refactoring our code to display just the necessities, this number was eventually brought down to the hundreds rather than the thousands. This lead to serious improvements in the applications performances both when idle and under heavy load.

Pubnub

Pubnub was used to make sure the data coming from our servers to the user was very low latency. With this kind of product during a live match we could see close to a thousand changes to the front end every minute, with match data, news and sportsbook market changes. Pubnub allowed us to keep a very high SLA compared to using our own implementation of open sockets, which would cost more time in development as it would need to be scaled for our quite complex tasks.

Ongoing Project

Sportdec have a lot of interesting ideas coming up in the future and I hope to be supporting them along the way.

beanbagsports.com
Projects

Beanbagsports.com

Working with the Beanbagsports.com team we were tasked with building an online sportsbook with an element of social media and social networking.

I cant get in to too much detail related to this product due to a signed NDA but I can give a brief outline of the technology used for this project

BackboneJS / MarionetteJS

Using the BackboneJS framework allowed us to create a large single page application that updated dynamically and at the time was the most responsive online sportsbook at the time, since then many other sportsbooks have started using javascript frameworks to create single page applications.

NodeJS

We used NodeJS to interact with third party API’s which allowed us to create extremely low latency between our front end and our Mongo databases. We found this to be the best option as we had to parse less data and could move services from server to client side.

MongoDB

MongoDB was used to track historical changes in the market parsing service, this was used due to data differences in markets and events. Within the gambling industry markets are dropped and created every second, having a database that could handle this with ease was imperitive.

PHP/Yii

PHP with the Yii framework was used to serve our customer facing API’s, we decided to use this technology as we had a strong skill level within the team and we didn’t feel node was mature enough to handle all the necessary requirements that was needed to provide the customer.

MySQL

MySQL was used for situations where low latency was not so much of an issue but tracking historical changes was a must. From tracking customers betting history to storing there account details. We felt this was more robust for this kind of data at the time and is still in use today.

crime.ie
Projects

Crime.ie

Crime.ie was a personal project that I worked on for over two years which had relatively good success as my first major web venture.

Crime.ie was a place for Irish citizens to get up to date information on criminal news in Ireland, we also covered such things as missing persons and Police alerts. At its peak Crime.ie had over 250k views per month and was ran out of a passion to keep users informed of news that was usually sensationalised. During the time I worked on Crime.ie I had alot of young journalists come through it’s doors that have gone on to do great things which include working for major Irish papers, getting front page articles and also an impressive “Virtual Nomad”.

I attribute a lot of my tech success to this project as is thought me some of the following skills

  • People Management
  • Dealing with sensitive issues
  • Dealing with people in a sensitive manor mainly victims of crime
  • Selling a product to potential advertisers
  • Creating a good relationship with many sources

 

Notable tech challenges that I overcame while working on this project

  • Working with Linux servers
  • Working with web traffic spikes
  • Working with Amazon EC2
  • MySQL Database maintenance
  • Rewriting poor wordpress plugin and theme code bases
  • Developing stable WordPress plugins

 

gallops-3
Projects

Gallops Live

Gallops Live was an online social network and gambling platform for people interested in all things horse racing.

GL was mainly targeted at the UK/Ireland market and worked closely with Boylesports to provide a betting platform to their customers.

Coming in quite late to GL I was tasked with creating an application within the website that allowed users to sign up to a subscription tipping service which ran weekly and was written by there tipsters.

The business requirements for this project were as follows:

  • Create an online subscription service
  • Allow users to to pay daily/weekly/monthly/yearly
  • Ensure registered users are tracked dynamically
  • Ensure users are alerted when there subscription was coming to an end
  • Ensure management was automatically alerted upon user subscriptions

 

Technologies that were required to be used in this project

  • Apache web server
  • PHP/Yii
  • MySQL
  • Mailchimp
  • Realex Payments API

 

This project took approximately 2 weeks to complete which included testing, feedback and retrofitting it to the clients current code base.