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.