Skip to main content

Weight tracking

Weight tracking records body weight over time and keeps the user’s profile current.

Business goal

The product should let users see progress without forcing them to manage unit conversion or duplicate data manually.

Canonical storage

Platform stores body weight in kilograms. When the user prefers imperial units, Platform converts values for display. The client should render the returned value without doing its own conversion.

Weight log

A weight log represents one measurement at a point in time. Typical fields:
  • ID.
  • Weight display value.
  • Logged timestamp.
The canonical weight_kg value remains in the database even if the API response only exposes the display value.

Current weight snapshot

The profile stores current_weight_kg as a convenience snapshot of the latest known body weight. This is not a replacement for weight history. It exists to make common reads easier.

API behavior

Weight APIs should support:
  • Create a new weight log.
  • Read latest weight.
  • Read historical logs.
  • Optionally filter by date range.
Default reads should be useful without forcing the frontend to pass arbitrary limits.

Unit system response policy

A good response shape is:
{
  "unitSystem": "IMPERIAL",
  "weightLogs": [
    {
      "id": "...",
      "weight": 180.0,
      "loggedAt": "2026-06-13T10:00:00.000Z"
    }
  ]
}
The unit system belongs to the response wrapper because it describes how all values are rendered.