AEM CF Extras
Back in the day, if you wanted to store "structured" data in AEM that did not necessarily have a web page associated with it there was not a best practice for doing this. The solution in many cases was to create some extra web pages off to the side and use page properties or a special component to hold information. For example, it could be a collection of restaurants, events, locations, etc. This was not only counterintuitive for authors but required a developer and a deploy whenever a new attribute needed to be added to the entities.
Fortunately, since AEM 6.4 we have Structured Content Fragments to handle exactly this sort of data storage inside the repository. An author can create a model that defines the schema for the data to be stored without the need for a developer or deployment. They can then create Content Fragments in the DAM that are based on those models.
I have come to find that Content Fragments can be even better with customization. In my talk i will present a soon to be open sourced project "AEM CF Extras". It is a collection of enhancements to out of the box fields, several brand-new fields, helper classes, Sling Model Injectors and my favorite addition, a dynamic GraphQL API.