A web-app intended to be used by pastoralists in managing
pastures, grazing, and animals.
TODO: If this is intended to share data between systems -- as it must, if
for example, it is tracking the movement of animals between holdings --
then
1. Keys must include a unique identifier of the instance on which they
were created, as serial identifiers will not be unique across machines;
2. It had better implement [ActivityPub](https://www.w3.org/TR/activitypub/).
All holdings used to the system
Although in the UK and, probably, in many other
countries, holdings have a unique, government issued, holding
number which could rationally be used as a key, internationally
we cannot rely on this.
A user is a person authorised to see data on a holding.
Some users (e.g. vets, farm secretaries) may be authorised to see data
on many holdings.
Records are not normally deleted from this system because
of historical data integrity; we may want to trace the history of an
animal across holdings even after a holding has ceased to be active
in the system.
A pasture within a holding. TODO: how should common pastures,
or pastures otherwise shared between holdings, be handled?
Records are not normally deleted from this system because
of historical data integrity; we may want to trace the history of a
pasture even after pasture boundaries have been changed.
Indeed, if we treat subdivisions as pastures (which would be quite sensible),
active pastures in the system will change quite frequently, especially if
strip-grazing is used.
An animal on a holding (or which has been on a holding; the
historical record is not wiped when an animal dies, is killed, or is sold)
Although in the UK and, probably, in many other
countries, animals have a unique, government registered, identifying
number which could rationally be used as a key, internationally
we cannot rely on this.
The holding the animal is currently on, if any. Not 'required',
since the animal may be dead, or simply moved off to a holding which is
not part of the system.
Not confident of this. It might be better to store a single character (or even
boolean), because for i18n reasons storing a natural language token is going
to make data from different systems non-comparable.
Store scientific/latin name for species. TODO: 32 characters may not be enough.
Is there a canonical name for a breed? Is a Texan 'Galloway' the same breed
as a Galloway 'Galloway'? What even is a breed? Should we store details of
a breed society or other body which adjudicates membership of the breed?
The user who recorded this event.
Pastures affected by this event.
Animals affected by this event.
Number of holdings affected by this event type; if an animal movement on
or off, for example, it will be two, otherwise normally one.
Number of pastures affected by this event type; if an animal movement between
pastures, for example, it will be two, otherwise normally one.
Number of animals affected by this event type. If a value greater than 10
is recorded, that will be treated as 'many'. TODO: not comfortable that
that is the right way to handle 'many'.
Information the user supplies about themselves; an introduction.