Soccer Website Generator is a Jekyll-based static site generator for amateur soccer league websites that turns JSON match and team data into standings tables, tournament brackets, and match report pages.
What is the Soccer Website Generator?
The Soccer Website Generator is a Jekyll-based static site generator built for amateur soccer leagues, such as campus tournaments and community leagues. It takes structured JSON files describing teams, games, and season configuration from the _data directory and outputs a static website with league tables, knockout brackets, match pages, and player statistics. The project is maintained by shrekshao狄学长 and has a live example site at super-unprofessional-league.github.io.
Key Features
- Multiple season types — Supports league (traditional standings), cup (group stage plus knockout bracket), division (multiple divisions like D1 and D2), and region (fully sorted ranking) modes, all configured via a season
config.jsonfile. - Automated standings — League table points and goal differences are calculated automatically from match results, and the top scorer list updates based on goals entered in match events.
- match pages with events — Each game records score, date, penalty shootout, forfeit, plus event types including goals, own goals, penalties, red and yellow cards, substitutions, photos, and embedded video links.
- Team pages — Teams list players, starting lineups with a visual field locator (position abbreviations mapped via
custom-football-squad.css), substitutes, and photos. - Language translation support — The template supports multilingual display, as shown by the English and Chinese documentation links in the repository.
- Articles and news — Supports publishing match reports, news, and notices through Jekyll's post system.
- Custom Jekyll plugin — Because it uses a custom plugin, the site cannot be auto-built by GitHub Pages; users must build with
bundle exec jekyll buildand deploy the generated_sitedirectory. - JSON data driven — All match-related data lives in
_data/with a documented schema for teams, games, and season config, including a sample team structure with player numbers, names, and positions.
Who is it for?
- Student organizations — Campus soccer tournaments can publish a professional-looking league site with group stages and knockout brackets without writing code.
- Community soccer leagues — Leagues with multiple divisions can auto-generate standings for each division and publish match reports.
- Casual tournament organizers — Anyone running a small tournament can use the JSON data format to quickly add teams, results, and events to get a static site that is cheap to host.
What can you do with the Soccer Website Generator?
- League organizers: Create a season config with type
league_tableand add team and game JSON files to get a live standings table and match pages. - Cup tournament hosts: Set type
group + knockoutand provide groups and knockout brackets to generate both group standings and a tree view. - Team managers: Add player rosters with positions and starting lineups so each team page shows a field diagram with player locators.
How does the Soccer Website Generator work?
Install Jekyll, run bundle install, then use bundle exec jekyll serve for development or bundle exec jekyll build to generate the static site into _site. Push that directory to GitHub Pages or any static host; note that GitHub's built-in Jekyll builder cannot be used because the project relies on a custom plugin.
FAQ
Is the Soccer Website Generator free?
The project is hosted publicly on GitHub with 12 stars, and the README does not mention any licensing fee, so it is effectively free to use and modify for your own league.
Can I use GitHub Pages to auto-build the site?
No. The generator uses a custom Jekyll plugin, so GitHub Pages' automatic build process will not work. You must run bundle exec jekyll build locally and push the resulting _site folder to your hosting provider.
What data format does the template use?
All data is stored as JSON files under _data/seasons, _data/teams, and _data/games. The README documents the team structure (with player details) and the game structure (with scores, events, and squads).
What match events can I record?
You can record goals, own goals, penalties, red and yellow cards, substitutions, photos, and embedded video links for each game, each with a timestamp and associated player.
Does the site support multiple languages?
Yes. The README includes both English and Chinese documentation, and the template has language translation support, allowing you to display the site in more than one language.








