Rabdomante (Rhabdomancer in Italian) is an application that helps you finding the optimal mix of waters and salts to match a target water profile: given a list of waters and salts rabdomante finds the combination closest to the target.
The distance from the target profile is derived from this components:
- Calcium (Ca)
- Magnesium (Mg)
- Sodium (Na)
- Sulfate (SO4)
- Chloride (Cl)
- Bicarbonates (HCO3)
You can see it in action here: molok.github.io
In this version the computing time is capped to 30 seconds, so it might not give the optimal result if given a lot of variables.
It started as a CLI application, then I added a desktop application (JavaFX). Then I realized it would be most useful on the web so, so I created a REST API with Spark Framework and wrote a React+Redux application in Typescript for it.
You'll find the React code under the frontend/
directory and the rest under the backend/
.
The single jar generated in the backend/
directory contains the CLI, the JavaFX GUI and the REST API.
The React+Redux application can be deployed on a static server, I'm hosting it on a S3 bucket. I provided a script to deploy the REST API on AWS Lambda.
These are the screenshot of the desktop application:
The input and output is a XLSX file. It can be run both with a graphical interface and with a command line interface.
Mostyl useful for homebrewing, maybe more. It supports the English and Italian locales
Rabdomante is released under the AGPL3, if you need a less restrictive license feel free to contact me at [email protected]
Under the hood rabdomante uses the excellent Choco Solver