Enforcing property value types

I would like to see the ability to define and enforce property types as required, and then the type, like a SQL database. I think more people would be able to move from Notion if this was implemented, because the risk of creating an error in Logseq with a missing or incorrect property value is preventing a migration to this great project for me.

For example, in my intended CRM/project management use-case, if I enter:

project_invoiced:: ture

instead of:

project_invoiced:: true

I may not even notice until it causes a bigger error down the chain. If this example had a defined Boolean type requirement, Logseq could render the Block Error warning if the user clicks away while a required property value is missing, or it is the wrong type.

I think a JSON Schema approach would be a good way to tackle this, maybe in a seperate schema.edn file where the user could define and enforce global property value types? This could also help teams migrate from Notion once the collaboration features are implemented e.g. if a team admin could enforce correct data entry and minimise mistakes through property validation, that would add to the value of the project for teams.

Enforcement should include at least these three factors, in my opinion:

  1. Required - Boolean
  2. Type: String, int, date, array etc
  3. Validation - Regex validation