Skip to content

Extracts information from parkrun results pages for inclusion in reports.

License

Notifications You must be signed in to change notification settings

johnsyweb/eventuate

Folders and files

NameName
Last commit message
Last commit date
Mar 3, 2025
Feb 26, 2025
Oct 21, 2024
Mar 12, 2025
Oct 20, 2024
Feb 18, 2025
Feb 27, 2025
Feb 27, 2025
Feb 26, 2025
Jun 10, 2024
Feb 26, 2025
Feb 26, 2025
Feb 27, 2025
Feb 27, 2025
Feb 26, 2025
Feb 26, 2025
Feb 27, 2025
May 12, 2024
Feb 26, 2025
Feb 27, 2025
Feb 26, 2025
Feb 27, 2025
Mar 25, 2025
Mar 25, 2025
Oct 20, 2024
Feb 27, 2025
Feb 26, 2025
Feb 27, 2025

Repository files navigation

Eventuate Mozilla / Firefox Google Chrome / Chromium

Extracts information from parkrun results pages for inclusion in reports.

Introduction

I occasionally volunteer as a Run Director at parkrun and produce an event report to celebrate achievements. I also write software occasionally to automate parts of my life. This is the confluence of these two interests.

Description

If you volunteer at parkrun and produce an event report to celebrate achievements, this addon will make your life easier!

As soon as the latest results page loads for an event, you'll see a bunch of useful text before the results table is displayed, including:

  • A summary of the number of finishers
  • Any finishers who joined a milestone club
  • Congratulations to new parkrunners
  • A welcome to first-time visitors
  • A celebration of personal bests
  • A shout out to the walking and running clubs
  • Cheers to our volunteers.
  • A reminder to bring a barcode
  • And a beautiful bunch of facts and figures

Development status Node.js CI

I wrote this for myself in an afternoon to see if I could do it and figured it may be useful to others. I then spent a while over-engineering it in TypeScript and adding some unit tests using jest.

Building locally

Prerequisites

This project uses asdf to manage Node.js versions and corepack to manage pnpm. Here's how to set up your development environment:

# Install asdf (if you haven't already)
brew install asdf

# Add the NodeJS plugin
asdf plugin add nodejs

# Install NodeJS at the version specified in .tool-versions
asdf install

# Enable corepack (comes with NodeJS)
corepack enable

# Verify installations
node --version
pnpm --version

Building the Extension

Once the tools are installed:

pnpm i        # Install the development dependencies
pnpm t        # Run unit tests
pnpm package  # Package up all the things for Firefox and Chromium browsers
pnpm web-ext:lint  # Verify package for Firefox

Or if Docker's more your thing:

docker buildx build . -o target

Running locally

First, let's turn the TypeScript files into a single JavaScript file to be consumed by web-ext...

pnpm build --watch

...--watch means we can edit the .ts files and have our change reflected in an instant.

Second, in another terminal, let's start up Firefox and see our code in action...

pnpm start

Installing in a browser from source

  1. Download this repository to a suitable location on your computer.
  2. In Firefox, navigate to "about:debugging#/runtime/this-firefox"
  3. Use the "Load Temporary Add-on..." button.
  4. Browse to and open the file manifest.json from the location where it was saved.
  5. The add-on will now appear in the add-on manager’s list of installed add-ons and be ready to use
  6. Navigate to a results page such as https://www.parkrun.com.au/timboon/results/latestresults/.

Observe the additional details between the title and the event table.

Sample Screenshot

Requirements

This was built with Firefox in mind but also works in Chromium-based browsers, using the chromium artefacts. Enjoy!

Contributing

Bug reports and pull requests are welcome on GitHub. Everyone interacting in the eventuate project's codebases, issue trackers, etcetera is expected to follow the code of conduct.

We use semantic commits in this project. Please see our contibution guidelines for more information about the preferred commit message format.

Releasing

This project uses semantic-release to automate version management and package releases. The release process is triggered automatically when changes are pushed to the main branch.

The process will:

  1. Analyze commits to determine the next version number
  2. Update the CHANGELOG.md
  3. Create a new GitHub release
  4. Build and attach extension packages:
    • Firefox extension (.zip)
    • Chrome extension (.zip)
    • Userscript (.user.js)
    • Bookmarklet installation page (.html)

To test the release process locally:

GITHUB_TOKEN=your-token pnpm semantic-release --dry-run

The version number will be automatically incremented based on your commits:

  • fix: → patch (0.0.x)
  • feat: → minor (0.x.0)
  • BREAKING CHANGE: → major (x.0.0)

License license

The addon is available as open source under the terms of the MIT License.