Kaláka

Events and forms

Events

Event lifecycle

Date references

Wherever a date can be set (mail schedules, field locks, fee rules, …) it can be:

A date type may differ per registration (e.g. 14 days after registering or a fixed date, whichever is earlier). It is computed only from registration facts and absolute points, never from another derived date. Core declares payment due. Date types are an extension point that runs inside the transaction and takes one immutable context; the periodic run computes them in PHP for registrations in published events. If that ever becomes slow, the computed date is cached in a column on the registration.

Forms and the registration slot

flowchart TB
  subgraph EV["Event"]
    subgraph SLOT["Registration slot<br/>required fields · registration opens–closes"]
      F1["Registration form A"]
      F2["Registration form B"]
    end
    AF["Additional forms<br/>e.g. staff form"]
  end
  F1 & F2 -->|"create"| REG["Registration"]
  AF -->|"attach a supplementary submission"| REG

Invitations and admin submissions

Forms implementation

Fields

Concept What it is
Field type Code: a block type from core or an extension. It defines the data shape, validation, editor and front-end UI, admin display and filtering. Core ships the basic shapes (name, email, phone, date, text, choice, …)
Field definition Optional organization configuration in its own post type (kalaka_field), edited in the block editor and limited to one field block. Holds the complete field including its settings, with no override layer. Created by a single switch on a form field
Form field A block in a form, standalone or copied from a definition (keeping the definition’s ID and version)

Editability after submit

Conditions

One condition format serves form field visibility and mail bodies. Forms evaluate it in the browser over form answers only; mails evaluate it on the server over any value.