Mix by weight, not by eye.
Tareline is a weight-based calculator for two-part coating mixes (built for Cerakote, works for any base + hardener that mixes by a fixed ratio). It replaces graduated cylinders with a disposable cup on a scale:
- Put the empty cup and liner on the scale and press tare.
- Pour the base ("paint") and read the weight.
- Enter that weight; Tareline gives you the target total to add hardener up to.
That target is the only number the operator has to watch — no meniscus reading, no second measurement, no bad batches.
Ratio R:1 means R parts base to 1 part hardener, by weight.
hardener = paint / R
total = paint + hardener → the number the scale should read when done
This mirrors the original spreadsheet exactly (Hardener = Paint / Ratio,
Total = Paint + Hardener). The logic lives in one small, unit-tested module:
app/src/lib/mix.ts.
tareline/
├── app/ Expo (React Native) mobile app — the calculator
└── web/ Static landing page (deploys to Cloudflare Pages)
| Piece | Version |
|---|---|
| Expo SDK | 57 |
| React Native | 0.86 |
| React | 19.2 |
| TypeScript | 6 |
| Tests | jest-expo |
Mobile app
cd app
npm install
npm start # scan the QR with Expo Go, or press a/i/w
npm test # run the math unit tests
npm run typecheck # tsc --noEmitLanding page
cd web
npx serve . # or open index.html directly — it's a single static file- App — build with EAS Build
(
npx eas build) for the App Store / Play Store, or run as a PWA vianpx expo export --platform web. - Landing page —
web/is static; deploy it to Cloudflare Pages and point a subdomain at it. Seeweb/README.md.
MIT — open source, use it however helps.