Skip to content

layoutd/live-by-bula

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 

Repository files navigation

Live! by BULA – Installation and Configuration Guide

This guide explains how to set up and configure the Live! by BULA application within an existing UltiOrganizer install.

📣 Please keep in mind that, before using Live! by BULA, you must sign the Terms of Use and send the signed copy to [email protected].

⚙️ Installation Steps

0. Download the latest release

The latest release is available on the Live! by BULA GitHub repository. Alternatively, you can download the latest release with this command:

curl -s https://api.github.com/repos/layoutd/live-by-bula/releases/latest \
  | jq -r '.assets[] | select(.name | endswith(".zip")) | .browser_download_url' \
  | xargs curl -LO

It will download the latest release to the current directory as a zip file named live-by-bula-<VERSION>.zip.

1. Extract Live! by BULA

Unzip the release package in the root directory of your UltiOrganizer install. It will create a live/ directory:

/
├── admin/
├── conf /
├── ...
├── images/
├── lib/
├── live/       <-- That's the one!
├── locale/
├── login/
├── ...

2. Configure the Application

  1. Navigate to your UltiOrganizer site and change the ?view=xx to ?view=live/index (e.g. http://your-site.org/?view=live/index)
  2. Complete the initial setup form:
    • Set the UO_URL_PREFIX to the correct value for your installation (e.g., / for root, or /scores/ for a subdirectory).
    • Choose the season you want to use with the Live! by BULA interface.
    • Create a secure admin password and make a note of it.
  3. Configure other settings as needed (URLs, section toggles, etc.). Each setting has a description of what it does.
  4. Configure visual assets: There are several placeholder image assets in /live/conf/logos/. Don't replace them, you should add similar images to the /live/conf/logos/ directory and update the HOME_LOGO_PATH, TV_SCREEN_LOGO_PATH and SOCIAL_SHARE_LOGO_PATH in your config to point to your logos in /live/conf/logos/. Or, point them to an external absolute URL (e.g. https://your-site.org/images/logo.png).

3. Make Live! by BULA the default page

  1. Include the enable-live.php file in the main /index.php file:

    // Include Live! by BULA
    include_once __DIR__ . '/live/enable-live.php';

    The correct placement is after the session has been started:

    session_name(UO_SESSION_NAME);      // <-- Line already exists
    session_start();                    // <-- Line already exists
    
    // Include Live! by BULA
    include_once __DIR__ . '/live/enable-live.php';   // <-- ADD THIS LINE
  2. Update the DEFAULT_TO_LIVE setting to true in the admin interface.

    • This will make Live! by BULA the default page when the user visits the site.
    • You can still see the UltiOrganizer login page by visiting http://your-site.org/?view=login.
    • With this setting disabled, you can still access the Live! by BULA interface by visiting http://your-site.org/?view=live/index.

4a. Configure .htaccess (Optional)

For proper URL routing, add these rules to your .htaccess file (UltiOrganizer should already have these rules). If the app is installed in a subdirectory, like /ultiorganizer/, uncomment the RewriteBase line.

# Enable mod_rewrite if not already enabled
RewriteEngine On

# If the app is installed in a subdirectory, like /ultiorganizer/, uncomment the following line
# RewriteBase /ultiorganizer/

# Check if the requested file or directory exists
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# If not, rewrite the request to index.php with the original query string
RewriteRule ^(.*)$ index.php?$1 [QSA,L]

4b. Configure nginx (Optional)

If you're using nginx, you can add the following to your nginx configuration:

location / {
   try_files $uri $uri/ /index.php?$query_string;
}

To route requests to Live! by BULA when UltiOrganizer is installed in an subdirectory, like ultiorganizer/, you may need to add something like the following to your nginx configuration:

location ^~ /ultiorganizer/ {
   try_files $uri $uri/ /ultiorganizer/index.php?$query_string;
}

5. Add team pictures

There's a setting in the admin interface to enable the display of team pictures on team pages.

The /live/teams/ directory is used to store team pictures. The pictures should be follow the naming convention <TEAMID>-{ANYTHING}.jpg. The team ID is the same as the team ID in the UltiOrganizer database, so 3-ESP-MIX.jpg would be a picture for team 3, regardless of the text after the first hyphen.

Updating Live! by BULA

Download and install the latest release

In the release package, there's a shell script that will download a recent release of Live! by BULA and install it in the correct location. To do so, run the following command from the root of your UltiOrganizer install:

./live/bin/update-from-github.sh

Select the number of the version to install and overwrite all files.

Notes

  • The script will not overwrite any configuration files.
  • The script will leave the .zip package in the UltiOrganizer root directory. In theory, you should be able to unzip older versions of Live! by BULA and install them in the same way if you encounter issues after upgrading.

đź”§ Troubleshooting

  • If you encounter issues with the admin interface, you can manually update the configuration by editing the local-config.json file in the live/conf/ directory.
  • Ensure the enable-live.php file is included in the correct location in your main index.php to make Live! by BULA the default page.
  • Check file permissions for data directories
  • If the admin interface shows no configuration options after login, check that the conf/ directory is writable

📚 Additional Resources

For more information on configuration options, refer to the comments in the admin interface.

đź”® Tentative roadmap

  • Global error handling.
  • Improve regression testing.
  • Long term parameter (long-term caching).
  • Global search.
  • Multi-tournament support.
  • Linked teams in last bracket phase.
  • Production-ready client-side caching.

📜 Credits

Live! by BULA developed by BULA and Justin Palmer (https://github.com/layoutd).

đź“„ License

This project is licensed under the CC BY-NC-ND 4.0 License. © 2025 BULA Ltd. You may use and share this work non-commercially with attribution (Live! by BULA in the footer), but you may not modify it. Please reach out ([email protected]) for more details.

đź“… Changelog

1.9.12

  • Fix error when no active games are found.

1.9.11

  • Order final placements and divisions dropdown by ordering field.
  • Show a placeholder if the final placement is not available.

1.9.10

  • Fix undefined scores on spirt tab.

1.9.9

  • Add halftime event to scoreboard last play and ensure events are displayed correctly.

1.9.8

  • Fix last goal and game event retrieval for scoreboard.

1.9.7

  • Make standings pool tables responsive in see all view.

1.9.6

  • Fix GitHub release script to update heartbeat version and config correctly.

1.9.5

  • Show game division in compact scoreboard view with or without live indicator.
  • Show streamed games first in current games scoreboard.
  • Improve active games query performance.
  • Make scoreboard selected tab persistent for 2 minutes.

1.9.4

  • Tweak the tournament header number box sizes and content.
  • Add caching for voting results.
  • Add cache lifetime modifier in admin interface (games and stats).

1.9.3

  • Fix voting doughnut chart for dark mode.
  • Show played games and progress in tournament header.

1.9.2

  • Optimize voting table generation query.
  • Add optional scoreboard vote share doughnut charts for scheduled games.
  • Add section toggles to admin interface.
  • Add TV screen configuration interface.

1.9.1

  • Fix persistent team swap in games tables after viewing a team.
  • Use more accurate flag hex values for game view team colors.
  • Update heartbeat cache after isntallation from GitHub.
  • Make single team and game tabs URL friendly.
  • Add preview tabs for scheduled games.
  • Use field ID to sort live games for header live game icon.

1.9.0

  • Improved team static URL SEO and meta tags.
  • Improved server-side cache management (atomic updates, lock file management).
  • Add stale-while-revalidate behavior to API.
  • Rename caching configuration variables for clarity.
  • Remove extra HEAD requests.
  • Use flag colors for team colors in game view.

1.8.6

  • Use configured App Title (suffix) in meta tags.
  • Allow admin access in maintenance mode.
  • Redirect browsing of /live/ directory to root.

1.8.5

  • Fallback to season name in meta tags if tournament name is not set in the admin interface.

1.8.4

  • Fix field order when grouping by field in games table.
  • Fix division order when grouping by division or division+pool in games table.
  • Add lower margin to top level tabs in two level tab navigation (for when they wrap).

1.8.3

  • Add a persistent division preference for more consistent navigation.
  • Always update to full URL on spirit and stats pages.
  • Fix annoying tiny zoom on iOS when filtering games.
  • Don't include spirit comments if they are not enabled.

1.8.2

  • Add live game icon to bracket and crossover game links.

1.8.1

  • Better meta image route handling.
  • Bracket game link replacements are restricted to only look in games for the current bracket phase.
  • Improve charts text colors for dark mode.

1.8.0

  • Clarify initial voting configuration.
  • Improve filter and grouping compatibility in games table.
  • Improve bracket view score updates.
  • Add tournament logo to loading splash screen.
  • Adjust recommended social share image size.

1.7.9

  • Update feedback and BULA contact information in footer.
  • Add additional contact emails configuration field.
  • Spirit menu and page respect UO admin spirit configuration.
  • Reinstate 404 image.

1.7.8

  • Cache and UO admin buttons in admin panel.
  • Flag display logic for domestic tournaments.
  • Fix team page errors when tournament spirit is disabled.

1.7.7

  • Youtube and SolidSport videos embed, all other URLs open a new URL.
  • Installation and initialization improvements.
  • Error fix for games with no goals.
  • Additional SEO data.
  • Season-specific static cache values.
  • Remove unused media/logos directory.

1.7.6

  • Fix heartbeat file generation.
  • Pass more qualified URLs in the API config.

1.7.5

  • Fix scoreboard game links for subdirectory installations.

1.7.4

  • Fix scoreboard game links.

1.7.3

  • Improved subdirectory support.
  • Improved client-side caching.

1.7.2

  • Add season selection to admin initialization.
  • Improve page titles, URLs and SEO, especially for subdirectory installations.

1.7.1

  • Add final placements SEO links.

1.7.0

  • Add SEO details and links when pages are loaded.

1.6.3

  • Make sure team names in game previews are clickable.

1.6.2

  • Make game previews clickable on home scoreboard.

1.6.1

  • Add package update script.
  • Animate scoreboard scroll to the right.

1.6.0

  • Better share information in meta description.
  • Remove view parameter from URL when not needed.
  • Add team pictures directly to the package.
  • Add video size toggle button.

1.5.2

  • Fix missing points icon in tournament header.
  • Fix flickering video position on desktop.
  • Fix group by filter in game table deep link.
  • Fix games table pagination for grouped games.

1.5.1

  • Tournament header remembers expansion state.
  • Custom tournament location text.
  • Fix grouped games sorting by time.
  • Default to grouped games by time.

1.5.0

  • Remove visible view parameter from URL when default to live is enabled.
  • Include Terms of Use in package.

1.4.3

  • Add voting endpoint.
  • Improve static page title for SEO.

1.4.2.1

  • Fix for field name sorting for fields > 9.

1.4.2

  • Get maintenance page working.
  • Allow UO login bypass.

1.4.1

  • Fixes for tournaments with missing timeslots.
  • Fixes in admin panel paths.
  • Customizable colors.
  • More robust standings table parsing.

1.4.0

  • Added new admin interface for easier configuration.
  • Improved initial setup experience.
  • Better field name handling.
  • Updated documentation.

1.3.0

  • Smoother config handling.
  • Config admin page.

1.2.2

  • Simplify config handling.
  • Other small changes.
  • Revert missing font files.
  • Include footer link to beachultimate.org.

1.2.1

  • Reduce package size by removing unused assets (~7MB to ~3MB).

1.2.0

  • Update to support subdirectory placement of Live! by BULA.
  • First public beta release of Live! by BULA (for EBUCC 2025).

1.1.5

  • Reduce package size by removing unused files.
  • Move configuration to API.

1.1.0

  • Update to support WGGMBUCC 2024.

1.0.0

  • Initial release for WBUCC 2024.

0.5.0

  • Full rewrite of Live! by BULA.

0.1.0

  • Trial release for Portuguese Championship 2024.

About

Live! by BULA release packages

Resources

License

Stars

Watchers

Forks