Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

EsportOS Logo

EsportsOS is an organisation tool designed to help small Esports events get up and running. The application includes everything you could need to plan and manage your own event from start to finish. Developed using modern technologies, the application can be hosted locally, or in the cloud - allowing you to decide who can access the system. EsportsOS is designed to be upgradable. You can easily modify the system and implement your own functionality - even completely bypass the front end by using its own built-in API with token-auth!


  • User*
  • Player
  • Team
  • Match
  • Dispute Message

*Auto generated by Laravel.


  • Users
  • Players
  • Teams
  • Matchups
  • Assets
  • Dispute Messages

External API

Most data stored in the database tables will be accessible through an external API, meaning other processes/applications can request data. The "EOS-API" will accept GET requests for matches, teams and players – but not return any personal data such as full names or passwords etc. For all API endpoints, and API Token must be generated via the API Menu, this is a unique token that is used to verify API Requests.

All GET Requests can be accessed using the following endpoints:

Endpoint Request Type Description
/api/teams GET Returns an array of all teams and their data.
/api/teams/{{team_id}} GET Returns details for a specific team.
/api/matchups GET Returns an array of all matches and their data.
/api/matchups/{{matchup_id}} GET Returns details for a specific match.
/api/players GET Returns an array of all players and their data – but not their personal data.
/api/players/{{player_id}} GET Returns details for a specific player – but not their personal data.

Reusable Components

I have created a variety of reusable Laravel Components that can be used across the entire application. See the list below for more details:

  • ALERT, Usage: <x-alert message="<<Your Alert Message>>" type="<<Bootstrap alert type e.g. danger>>" dismiss="<<If the alert can be dismissed e.g. 1 or 0>>"></x-alert>
  • TEAM-CARD, Usage: <x-team-card :team="<<team model>>"></x-team-card>
  • MATCH-CARD, Usage: <x-match-card :matchup="<<matchup model>>" verbose="<<Show Team Logs e.g. true or false>>"></x-match-card>
  • PLAYER-DONUT, Usage: <x-player-donut :player="$player" chartID="test1"></x-player-donut>

Matchup State Types:

Value Meaning
AWAITING RESULT The match is either awaiting results, or hasn't started yet
VERIFYING RESULT The result has been submitted and is waiting for an admin to verify them
RESULT DISPUTED The result has been disputed by another player/team
RESULT CONFIRMED Submitted results have been verified by an admin
MATCH CANCELLED Match has been abandoned/cancelled by an admin

Match Evidence File Format:

"MATCH_X_EVIDENCE.PNG" (other extensions are allowed.)


To log actions in EsportOS, you can make use of the Laravel Logging system. There is currently a single logging file found here "storage/logs/eos.log". To log text to the file, simply use the following code:

Log::channel('general')->info('<<YOUR LOG TEXT HERE>>');

It's also required that you use the following Laravel package for the logging to work correctly:

use Illuminate\Support\Facades\Log;

In the future, EsportOS will have multiple logging channels, separated out for all database entities as well as general logging.

Unit Testing:

Testing for EsportsOS is done using PHPUnit. To run a test, simply type:

vendor/bin/phpunit --filter <<test_function_name>>

It is advised that you run tests individually, rather than all in a single command. Please ensure that you create a copy of the development database and rename it to 'fyp-testing' to ensure that your regular data is not overwritten/destroyed whilst running the unit tests.


Repository for my Final Year Project Esports Event Planning Application






No releases published


No packages published