Draconai Documentation

dd_id_2c8ee9dfab
3. App Technical

Conventions

Database IDs

Uuid

  • All tables use UUIDv4 primary keys.
  • Auto-increment IDs are not used.
  • PostgreSQL uses gen_random_uuid() via the pgcrypto extension.

Database Timestamps

Dates

  • All tables must include date_created and date_modified columns.
  • These columns are mandatory and appear at the end of the table schema.
  • date_modified auto-updates on any row change.

Validation

  • Frontend performs user-facing validation (inline errors, form hints).
  • Backend PHP enforces the same validation rules and throws/returns errors on violations.
  • Validation rules must stay identical between FE and BE.
  • Backend validation is centralized in server/var_www/symfony_be/src/Service/ValidationService.php.
  • No one-way references: if a doc links to another doc, the reverse link must also exist.
  • If the reverse link is not obvious, search the codebase and populate it.

Naming Consistency

Naming

  • Use stable identifiers for services, routes, and tables (match the canonical doc page names).
  • Avoid long schema lists on feature pages; link to the canonical table pages instead.

Inline Edit UI

Edit

  • Edit buttons live on the right edge of the field row.
  • Clicking Edit switches to inline edit mode.
  • Inline edit mode must provide Cancel and Save actions.
  • Use the User Profile edit flow as the reference pattern.

Subpages

  • Password Policy (passwords.md)
  • Code Conventions (code_conventions.md)