Skip to content

Latest commit

 

History

History
executable file
·
47 lines (30 loc) · 1.97 KB

README.md

File metadata and controls

executable file
·
47 lines (30 loc) · 1.97 KB

Rabdomante

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)

Demo

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.

Code

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:

screenshot

The input and output is a XLSX file. It can be run both with a graphical interface and with a command line interface.

screenshot

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