Project 01 · React Native

FuelOps

Every shift, operators reach for a plastic wheel chart and a photocopied table to correct fuel gravity for temperature. Those tools have not changed in decades, and the digital alternatives were written by people who had not stood next to a hydrometer.

Replaces
Gammon GTP-3012-1A wheel chart and printed compressibility tables
Standards
ASTM D1250 Tables 5B/6B and 54B, API MPMS 11.2.1, API 11.1
Status
Field-validated, preparing Play Store release
Source
github.com/baranDincsoy/FuelOps
Privacy
Privacy policy
API gravity correction screen. Compressibility factor screen. Meter calibration factor screen. Unit converter screen. Saved records screen.

Field validation

The calculations were checked against the physical instruments and printed tables in daily use at an airport fuel facility, not only against the published formulas. Reference sources were the Gammon GTP-3012-1A wheel, ATA Form 103.08 fuel quality records, and printed compressibility factor tables.

Corrected API gravity at 60°F
Raw APITempWheelFuelOps
44.576°F43.143.1
45.583°F43.543.5
47.097°F43.743.7
45.586°F43.243.2
45.384°F43.243.2
45.589°F43.043.0

A third detail came out of the same testing. Displayed values are now derived from the rounded corrected API rather than the internal high-precision figure. That shifts specific gravity by 0.001, invisible to the physics, but it means every number on screen agrees with every other number and with the operator's wheel.

What it does

The calculation

How it is built

The app keeps an MVVM-style separation adapted to React Native conventions. Pure calculation and persistence live in /utils and /storage with no state and no interface. Custom hooks in /hooks take the ViewModel role, holding state, input parsing, validation, and orchestration. Screens and components are JSX only.

The unit converter is where that separation earns its keep: volume, weight, and length all run through one useUnitConverter hook driven by a unit table, so adding a category means adding a table rather than a screen.

Navigation is a custom drawer built on React Native's own Animated API. The usual choice, react-native-reanimated, kept producing TurboModule errors against the new Android architecture, so the dependency was dropped in favour of about eighty lines of first-party code.

Scope and limits

The calculations are an engineering aid. They are not to be used as the sole basis for custody transfer, billing, or any safety-critical decision.

What I took from it

In engineering software, the physics is the test suite. Twice the code ran cleanly, looked right, and was wrong. Both times what caught it was a number that felt off to someone who had stood next to the hydrometer. Unit tests would have passed.