poolmate
v7.0.0
Published
Pool maintenance app.
Readme
PoolMate
Pool management app using ScalaFx, Slick, H2, Ox, jDeploy and Scala 3.
Install
- Select PoolMate
- Select a platform to download a compressed app installer.
- Decompress app installer.
- Install app by double-clicking app installer.
- Select app icon to launch app.
This install has been tested on macOS.
Object Model
- Pool(id, built, gallons, street, city, state, zip)
- Owner(id, poolId, since, first, last, email)
- Surface(id, poolId, installed, kind)
- Pump(id, poolId, installed, model)
- Timer(id, poolId, installed, model)
- Heater(id, poolId, installed, model)
- Lifecycle(id, poolId, created, active, pumpOn, pumpOff)
- Cleaning(id, poolId, on, deck, brush, vacuum, net, skimmerBasket, pumpBasket, pumpFilter)
- Measurement(id, poolId, on, temp, hardness, totalChlorine, bromine, freeChlorine, pH, alkalinity, cyanuricAcid)
- Additive(id, poolId, on, chemical, unit, amount)
- Supply(id, poolId, purchased, item, unit, amount, cost)
- Repair(id, poolId, on, repair, cost)
Relational Model
- Pool 1 ---> * Owner | Surface | Pump | Timer | Heater | Lifecycle | Cleaning | Measurement | Additive | Supply | Repair
Panes
- east pane - supplies, lifecycles, cleanings, measurements, additives
- west pane - pools, owners, surfaces, pumps, timers, heaters, repairs
Charts
- supplies - bar chart ( x = purchased, y = cost, c = item )
- measurements - line chart ( x = on, y = chemical ** )
- additives - bar chart ( x = on, y = amount, c = chemical )
- repairs - line chart ( x = on, y = cost )
** a line chart for each measured chemical, to include temp
Measurements
Measured in ppm ( parts per million ).
| Measurement | Range | Good | Ideal | |-----------------------------------|-----------|-------------|-------| | total chlorine (tc = fc + cc) | 0 - 10 | 1 - 5 | 3 | | free chlorine (fc) | 0 - 10 | 1 - 5 | 3 | | combinded chlorine (cc = tc - fc) | 0.0 - 0.5 | 0.0 - 0.2 | 0.0 | | ph | 6.2 - 8.4 | 7.2 - 7.6 | 7.4 | | calcium hardness | 0 - 1000 | 250 - 500 | 375 | | total alkalinity | 0 - 240 | 80 - 120 | 100 | | cyanuric acid | 0 - 300 | 30 - 100 | 50 | | total bromine | 0 - 20 | 2 - 10 | 5 | | salt | 0 - 3600 | 2700 - 3400 | 3200 | | temperature | 50 - 100 | 75 - 85 | 82 |
** Units of Measure - oz, gl, lb
Chemicals
- Liquids measured in: gallons ( gl ) and liters ( l ).
- Granules measured in: pounds ( lbs ) and kilograms ( kg ).
- LiquidChlorine ( gl/l )
- Trichlor ( tablet )
- Dichlor ( lbs/kg )
- CalciumHypochlorite ( lbs/kg )
- Stabilizer ( lbs/kg )
- Algaecide ( gl/l )
- MuriaticAcid ( gl/l )
- Salt ( lbs/kg )
Products
- Chlorine for pool.
- Chlorine tablets for pool filtration system.
- Pool Shock
Solutions
Suggested solutions to chemical imbalances.
- high ph - Sodium Bisulfate
- low ph - Sodium Carbonate, Soda Ash
- high alkalinity - Muriatic Acid, Sodium Bisulfate
- low alkalinity - Sodium Bicarbonate, Baking Soda
- calcium hardness - Calcium Chloride
- low chlorine - Chlorine Tablets, Granules, Liquid
- algae - Algaecide, Shock
- stains - Stain Identification Kit, Stain Remover
Build
sbt clean compile
Test
sbt clean test
Run
sbt run
Assembly
sbt clean test assembly copyAssemblyJar
Execute
java -jar .assembly/poolmate-$version.jar
Deploy
- edit build.sbt ( jarVersion + version )
- edit package.json ( version + jdeploy / jar )
- edit app.conf ( about > alert > contentText )
- sbt clean test assembly copyAssemblyJar
- perform github release ( from https://github.com/objektwerks/poolmate )
- npm login
- jdeploy publish ( to https://www.jdeploy.com/~poolmate )
- check email for npm message
See jDeploy Docs for details.
jDeploy Install
- Setup npm account at npmjs.com
- Install node, which installs npm, which bundles npx.
- Install jdeploy via npm - npm install -g jdeploy
- Add icon.png ( 256x256 or 512x512 ) to project root and resources/images.
- Edit jDeploy package.json as required.
- Add jdeploy and jdeploy-bundle to .gitignore
See jDeploy Docs for details.
jDeploy Issues
- jDeploy publish fails due to npm 2fa one-time password error.
- See: Github Solution
- macOS app icon not rendered correctly in Dock and Launchpad.
- Ensure app icon ( ./icon.png + ./src/main/resources/image/icon.png ) is at least 256x256. 512x512 is recommended.
- See objektwerks.App stage.icons, Taskbar and Toolkit code for details.
NPM Versioning
The
build.sbtmust contain asemver 3-digitversion number. See: Npmjs Semver
NPM Registry
PoolMate is deployed to: https://www.npmjs.com/package/poolmate
License
Copyright (c) [2019 - 2025] [Objektwerks]
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
