Best Practices
Design principles and conventions for building a clean, maintainable data model in Entu.
Property Naming
Use descriptive, lowercase names with underscores:
- ✅
product_name,created_date,customer_email - ❌
pn,cd,e,startDate,start-date
Be consistent across entity types: use name for primary identifiers, description for longer text, photo for images.
Prefix related properties to group them visually: address_street, address_city, address_country.
Data Modeling
Design entity types around your query patterns. If users often find entities by typing a value such as a status or a code into full-text search, enable search on that property definition. Filtering by a property value in a query works without it.
Use references for related data that changes frequently — don't duplicate values across entities when a reference will do.
Use formulas for derived data — totals, averages, counts — so the source of truth stays in one place. See Formulas.
Leverage entity hierarchy to model organizational structure. Parent-child relationships also enable rights inheritance.
Multi-Value Properties
Embrace multi-value by design rather than creating numbered variants:
// Good — multiple values under one property
[
{ "type": "tag", "string": "urgent" },
{ "type": "tag", "string": "customer" }
]
// Avoid — numbered separate properties
[
{ "type": "tag1", "string": "urgent" },
{ "type": "tag2", "string": "customer" }
]Enable list on the property definition to allow multiple inputs in the UI.
Access Control
Grant minimum necessary rights:
_viewerfor read-only access_expanderfor users who need to add child entities_editorfor users who need to modify properties- Reserve
_ownerfor entity administrators — only owners can change rights and delete the entity
Use _inheritrights for hierarchy-based permissions. A child with _inheritrights: true gets the rights set on its parents, so you grant access once at the parent container. A new child of a parent that has _inheritrights gets it automatically.
Use _sharing for broad access — domain for every user of the database, public for visitors who are not signed in. Only properties that the entity type shares at that level are shown (see Entity Types → Visibility). Use public carefully.
DANGER
Setting _sharing: public makes the entity — and its publicly shared properties — visible to anyone on the internet without authentication. Only use it for intentionally public content.
See Entities → Access Rights and Users.
