Brew Competition CLI is a command-line tool that extracts medal winners and competition metadata from homebrew competition websites. It supports multiple competition platforms and provides a unified interface for accessing results.
Currently supported platforms:
- BCOEM (Brew Competition Online Entry Management) - Full support
- Reggie - Results parsing
- BAP (Beer Awards Platform) - Results parsing
The tool automatically detects which platform to use based on the URL.
Yes! Brew Competition CLI is open source and released under the MIT License. It's completely free to use, modify, and distribute.
No coding knowledge is required to use the tool. Basic command-line familiarity is helpful, but the tool is designed to be user-friendly with simple commands.
- Node.js version 18.0.0 or higher
- npm or yarn package manager
- Internet connection (for fetching competition results)
npm install -g brewcompetition-cliOr install from source:
git clone https://github.com/tmack8001/brewcompetition-cli.git
cd brewcompetition-cli
npm install
npm run build
npm linknpm update -g brewcompetition-cliYes! The tool works on all major operating systems that support Node.js.
brewcompetition medals <competition-url> --brewers "Your Name"Replace <competition-url> with the actual competition results URL.
Yes! Use comma-separated names:
brewcompetition medals <url> --brewers "John Doe,Jane Smith,Bob Jones"Use CSV output and redirect to a file:
brewcompetition medals <url> --output csv > results.csvThen open results.csv in Excel, Google Sheets, or any spreadsheet application.
Yes! Create a config file:
{
"brewers": ["Your Name"],
"competitions": [
"https://competition1.com/results",
"https://competition2.com/results"
]
}Then run:
brewcompetition medals --file config.jsonEntry Count shows the total number of entries in each category. This helps you understand how competitive the category was:
- 30+ entries = highly competitive
- 10-29 entries = moderate competition
- 1-9 entries = smaller category
Common reasons:
- Filters too restrictive: Try without
--brewersor--clubflags first - Name mismatch: Ensure brewer/club names match exactly as they appear in results
- Results not published: Competition may not have published results yet
- Wrong URL: Verify you're using the results page URL
Yes, for BCOEM competitions:
brewcompetition competitions <bcoem-url>Metadata parsing for Reggie and BAP is planned for future releases.
The tool examines the URL hostname:
reggiebeer.com→ Reggie parserbeerawardsplatform.com→ BAP parser- Everything else → BCOEM parser (default)
The tool uses local caching for performance but doesn't store personal data. All data comes directly from public competition results pages.
No, the tool requires an internet connection to fetch competition results. However, you can save HTML files locally and parse them (for development/testing purposes).
The tool only accesses publicly available competition results pages. It doesn't access private or restricted data.
Very fast! Most competitions are processed in under 2 seconds. Batch processing multiple competitions happens in parallel for maximum speed.
This usually means:
- The HTML structure differs from expected
- Results haven't been published yet
- The URL is incorrect
Try accessing the URL in a browser first to verify results are available.
The tool detects platforms by URL hostname. If detection is wrong:
- Verify the URL is correct
- Check if it's a known platform
- BCOEM is used as the default for unknown platforms
Check:
- Internet connection is working
- Competition URL is accessible in a browser
- No firewall blocking the requests
- Competition site isn't experiencing downtime
Some platforms don't provide all information:
- Entry counts may not be available on all platforms
- Club names may be optional
- Some fields may be empty in the source data
- Check existing issues
- If not found, create a new issue
- Include:
- Competition URL (if applicable)
- Command you ran
- Error message
- Your environment (OS, Node version)
See the Contributing Guide for detailed instructions. Contributions can include:
- Bug reports
- Feature requests
- Code contributions
- Documentation improvements
- Testing
Absolutely! The tool is designed to be extensible. See Contributing Guide - Adding a New Platform for step-by-step instructions.
No! Contributions of all levels are welcome:
- Documentation improvements
- Bug reports
- Testing
- Feature suggestions
- Code contributions
For someone familiar with the codebase:
- Simple platform: 2-4 hours
- Complex platform: 1-2 days
This includes parser implementation, tests, and documentation.
Possibly! Open a feature request with:
- Platform name and URL
- Example competition
- Why it would be useful
Feature requests are welcome! Open an issue describing:
- What you want to do
- Why it would be useful
- How you envision it working
This is planned for a future release. The timeline depends on:
- Community demand
- Contributor availability
- Platform API stability
Yes! The tool is designed for scripting:
#!/bin/bash
for url in $(cat competitions.txt); do
brewcompetition medals "$url" --brewers "Your Name" --output json >> all-results.json
doneYes! The JSON output is designed for programmatic processing:
brewcompetition medals <url> --output json | jq '.[] | .[] | select(.Place == "1st")'The CLI is designed for command-line use, but you could wrap it in a web service. Consider:
- Rate limiting
- Caching
- Error handling
- Security considerations
Yes! The MIT License allows commercial use. See LICENSE for details.
- Check the documentation
- Search existing issues
- Open a new issue
- Read the Contributing Guide
We're here to help! 🍺