Main concepts

The main entry point is the organisation, which is basically identified by its domain name. When a user connects to the application, the DNS name used in the URL is interpreted by the application to select the organisation.

In an organisation, you can define section. In our example, the CNHC organisation, there is sections like diving, swimming...

Organisations and sections

Of course, an organisation also have members, along with their personal information such contact and address.


An organisation is most of the time organised by exercises. An exercise is a time interval, often a year. In our example, an exercise runs from July 1st to April 30th of each year.


Along with section, it is possible to define categories and "persistent" elements that are defined outside an exercise. An element can be defined with a list of possible values, with multiple choice or not.

Persistent elements

Section elements can also be defined for a given exercise. You can also define shifts on a section for a given exercise.

Elements and shifts

When an existing or new member registers, it defines a content, or a choice, for each element, a category and shifts registration.


All elements that define a price are added and it is therefore possible to record payments.


Tables types

There is 3 types of tables:

  • System tables: name starts with "ST". They represent system codes that cannot be changed, as the program code relies on them for business rules implementations. It is possible to have columns definitions is these tables allowing the administrator to configure behaviours, but it is not possible to remove nor add rows to these tables.
  • User tables: name start with "UT". They represent configuration tables. The content of theses tables should only evolve slowly as it changes only when a configuration as been set or updated.
  • Data tables: name start with "DT". They represent the real data, e.g. entities and configuration applied to them.


Tables are named using their type, an underscore '_', and a name that only contains letters and numbers. Using Regular expressions, it must validates:


Columns names are composed of the following, separated using the underscore character:

  • 3 letters that is an abbreviation of the table name underscore
  • column type:
    • CD: code. A code must only contains letters, number, '-' or '_' characters, limited to 50 characters.
    • ID: identifier. It's an automatically generated number
    • DES: description. Caontains plain text description, limited to 2000 characters
    • VA: variable string.
    • NU: number
    • PC: percentage
    • AM: amount
    • DT: date
    • BL: boolean
  • If the type is not ID, CD or DES, a description of the column only composed of letters or numbers