Rustybeer
CLI tool to calculate beer brewing values for different things
Install / Use
/learn @drodil/RustybeerREADME
RustyBeer is a CLI tool / web server written in Rust, to calculate values used in the process of brewing beer.
Live server running at https://rustybeer.herokuapp.com/
Installation
If you don't already have the toolset installed, you will first need to install Rust. From the root of the repository, run the following command:
cargo build
Running CLI
You can now run the CLI tool with:
cargo run --bin rustybeer <subcommand>
Running HTTP server
To start the server:
cargo run --bin rustybeer-server
You can access the OpenAPI UI from http://localhost:3000/docs. To change the port number, you can define environment variable PORT.
Testing
Tests can be ran by calling:
cargo test
If you would like to run only one test, you can do this by specifying the test name:
cargo test -- --nocapture <test name>
Files and Folders
- rustybeer - The folder containing everything for the business logic
- src - The folder containing the business logic source code
- calculators - The folder containing calculators to be used in lib or CLI tool
- Cargo.toml - The file containing build and dependency infomation
- src - The folder containing the business logic source code
- rustybeer-cli - The folder containing everything for the CLI
- src - The folder containing the CLI source code
- Cargo.toml- The file containing build and dependency infomation
- rustybeer-server - The folder containing the HTTP server implementation
- src - The folder containing server source code
- handlers - HTTP request handlers
- Cargo.toml - The file containing server build and dependency information
- src - The folder containing server source code
- Cargo.toml - The file containing build and dependency infomation
- CONTRIBUTING.md - Contribution guidelines for this repository
- LICENSE - The file containing the terms that this code package is released under
- README.md - The file you are currently reading
Acronyms
Beer brewing has a lot of acronyms that have a meaning. This table is to help out with figuring out what everything means:
Acronum | Description -------------|--------------------------------- ABV | Alcohol By Volume ABW | Alcohol By Weight OG | Original Gravity FG | Final Gravity SG | Specific Gravity IBU | International Bittering Units
CLI Functionality
Below is a table of the features currently implemented.
Implemented | Function | Description | Usage
-------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------|-------
:white_check_mark: | ABV | Calculates ABV from OG and FG or FG from OG and ABV | abv --og <Original gravity> (--fg <Final gravity>) (--abv <Alcohol by volume>)
:white_check_mark: | ABV <-> ABW | Calculates alcohol by weight (ABW) from alcohol by volume (ABV) | abv_abw --percent <alcohol percentage> (--total_volume <total beer volume>) (--total_density <density of beer in g/cm³) (--reverse)
:white_check_mark: | Beer style | Finds beer styles matching given parameters | beer_style (--og <Original gravity>) (--fg <Final gravity>) (--abv <Alcohol by volume>) (--ibu <International bittering units> (--color <SRM color>)
:hourglass_flowing_sand: | Boil-off Gravity | Calculates the volume needed to be boiled down to for a desired SG | boil_off --current_gravity <current_gravity> --wort_volume <wort_volume> <--target_volume <target_volume>|--desired_gravity <desired_gravity>>
:white_check_mark: | Calories | Calculates calories by volume from OG and FG or from ABV | calories (--og <Original gravity>) (--fg <Final gravity>) (--abv <Alcohol by volume>) (--volume <Beer volume>)
:white_check_mark: | Dilution | Calculates the SG after dilution | diluting --sg <Current specific gravity> --cv <Current volume> --tv <Target volume>
:white_check_mark: | FG | Calculates FG from OG and yeast attenuation | fg --og <Original gravity> --att <Yeast attenuation>
:white_check_mark: | Num Of Bottles | Calculates the number of bottles required for a given volume | num_of_bottles --volume <volume>
:white_check_mark: | Priming | Beer Priming Calculator | priming --temp <Beer temperature> --amount <Beer volume> --co2_volumes <co2_volumes>
:white_check_mark: | SG Correction | Corrects SG reading for differences between measurement and calibration temperatures | sg_correction --sg <Specific gravity reading> --ct <Calibration temperature> --mt <Measurement temperature>
:white_check_mark: | Yeast Viability | Estimates yeast viability based off production date | yeast-viability --pd <Production date> --cc <Cell count> --f <Date format>
This list will expand as ideas and suggestions come in.
Other Tasks to Do
See Issues
Contributors ✨
Thanks goes to these wonderful people (emoji key):
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tr> <td align="center"><a href="https://drodil.kapsi.fi"><img src="https://avatars0.githubusercontent.com/u/1178319?v=4" width="100px;" alt=""/><br /><sub><b>drodil</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=drodil" title="Code">💻</a></td> <td align="center"><a href="https://github.com/mlatief"><img src="https://avatars3.githubusercontent.com/u/462098?v=4" width="100px;" alt=""/><br /><sub><b>mlatief</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=mlatief" title="Code">💻</a></td> <td align="center"><a href="https://github.com/ProgrammerJoe93"><img src="https://avatars3.githubusercontent.com/u/56159225?v=4" width="100px;" alt=""/><br /><sub><b>Joseph Russell</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=ProgrammerJoe93" title="Code">💻</a></td> <td align="center"><a href="https://github.com/flauntingspade4"><img src="https://avatars1.githubusercontent.com/u/48335751?v=4" width="100px;" alt=""/><br /><sub><b>flauntingspade4</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=flauntingspade4" title="Code">💻</a></td> <td align="center"><a href="https://github.com/i-jey"><img src="https://avatars1.githubusercontent.com/u/25993326?v=4" width="100px;" alt=""/><br /><sub><b>Ilakkiyan Jeyakumar</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=i-jey" title="Code">💻</a></td> <td align="center"><a href="http://linkedin.com/in/tommilligan477"><img src="https://avatars2.githubusercontent.com/u/12255914?v=4" width="100px;" alt=""/><br /><sub><b>Tom Milligan</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=tommilligan" title="Code">💻</a></td> <td align="center"><a href="https://github.com/rogercyyu"><img src="https://avatars0.githubusercontent.com/u/45835736?v=4" width="100px;" alt=""/><br /><sub><b>Roger Y</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=rogercyyu" title="Code">💻</a></td> </tr> <tr> <td align="center"><a href="https://github.com/Sampas"><img src="https://avatars1.githubusercontent.com/u/1084004?v=4" width="100px;" alt=""/><br /><sub><b>Sampsa Sarjanoja</b></sub></a><br /><a href="https://github.com/drodil/rustybeer/commits?author=Sampas" title="Code">💻</a></td> <td align="center"><a href="https://github.com/1jz"><img src="https://avatars0.githubusercontent.com/u/1187260?v=4" width="100px;" alt=""/><br /><Related Skills
himalaya
342.5kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
342.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
85.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
coding-agent
342.5kDelegate coding tasks to Codex, Claude Code, or Pi agents via background process
