Concepts

Lean by design

KISS, YAGNI and DRY as working rules: simple parts, no speculative code, one place for each thing.

Keep implementations as small as the current requirement allows.

  • Prefer the simplest solution that fully solves the actual task.
  • Do not add speculative fields, statuses, workflow steps, or audit data "for later".
  • Reuse built-in Nimbly metadata like _created and _modified before introducing parallel custom fields.
  • Do not derive UUIDs from business fields unless the project explicitly requires it.
  • Don't repeat logic - extract shared behaviour into a helper rather than duplicating it.
  • Don't repeat substantial Tailwind class lists across links, buttons, or related UI elements. When the same long visual contract repeats, extract its canonical class list into a small .tpl class partial (for example cls-action-link.tpl) and reuse its rendered value. Place it at the narrowest useful scope: beside the route in core/modules/<module>/uri/<route>/ or ext/uri/<route>/ for page-scoped styles, in core/tpl/ for framework-wide styles, or in ext/tpl/ for reusable application-specific styles. Apply this only when the abstraction provides a real consistency or maintenance benefit. Keep one-off classes, single utilities, and short class lists inline; extracting those adds indirection without enough value.
  • When duplicate prevention is needed, prefer an index on the business field before inventing a more complex identity scheme.

Production-ready does not mean speculative. It means clean, coherent, and sufficient for the current use case.

  • If a project-specific solution exposes a reusable framework capability, explicitly mention the core/framework option before defaulting to a local workaround.

View this page as Markdown