Creation starting points — the outcome-oriented cards on the New project page (the 2026-08-06 five-AI brainstorm's strongest consensus: one transparent choice that BUNDLES a feature preset + extension seeds, replacing the bare preset select as the page's primary control).
An archetype is a RECIPE applied once at creation, not a stored mode:
preset— theFeaturespreset key it seeds (the flag bundle).extensions— extension keys enabled on create, LISTED ONLY when their registry entry is available (an uninstalled CRM never shows on the card face).- The user's explicit customizations always win over the recipe (the union rule: recipes seed, users override, nothing is silently dropped).
The card list is fixed and small by design; per-site tuning happens through the site default preset (which picks the preselected card) and the post-create Modules & Features panel.
The card copy is catalog DATA, translated at render time with the
runtime Gettext.gettext/2 — which the extractor cannot see, so every
literal here is wrapped in gettext_noop/1 (registers the msgid,
returns it unchanged). Without that the cards existed in no
catalogue and rendered English in every locale (found 2026-09-05).
Summary
Functions
The card preselected on page load: the one whose preset matches the site-wide default preset setting (falling back to Standard).
One archetype by key, from the availability-filtered list.
The card list with each archetype's extensions filtered to the
AVAILABLE catalog. A requires_extensions card whose seeds are ALL
unavailable is dropped entirely (its promise can't be kept).
Types
Functions
@spec default_key() :: String.t()
The card preselected on page load: the one whose preset matches the site-wide default preset setting (falling back to Standard).
One archetype by key, from the availability-filtered list.
@spec list() :: [t()]
The card list with each archetype's extensions filtered to the
AVAILABLE catalog. A requires_extensions card whose seeds are ALL
unavailable is dropped entirely (its promise can't be kept).