ereborcodeforge / durin-presets
Architecture presets and project-shape policies for Durin.
0.2.1
2026-09-28 01:30 UTC
Requires
- php: ^8.5
- ereborcodeforge/durin-core: ^0.1
Requires (Dev)
- phpunit/phpunit: ^12.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-28 01:30:14 UTC
README
Purpose
Single source of truth for Durin application presets: catalog, metadata, runtime requirements, and scaffold planning.
What this package owns
- Built-in presets:
minimal,service,worker - Public discovery API (
PresetDefinition,PresetMetadata,RuntimeProfile,PresetRegistry) - Default preset (
minimal) — only here - Preset planning engine (
PresetEngine→ScaffoldPlan) - Preset scaffold templates / shared file contents
- Manifest plan helpers for preset scaffolding
What this package does not own
- Project discovery /
durin.yamlparser (seedurin-core) - Safe filesystem mutation engine (see
durin-core) - Architecture detection, drift, adopt/evolve/migrate
- Durin Forge CLI / Eregion installation
- Installer UX / terminal progress
- MithrilPHP / Eregion runtime
Installation
composer require ereborcodeforge/durin-presets:^0.2
PHP requirement
PHP ^8.5
Catalog (read-only discovery)
use EreborCodeForge\Durin\Presets\Registry\DefaultPresetRegistryFactory; $registry = (new DefaultPresetRegistryFactory())->create(); $registry->ids(); // ['minimal', 'service', 'worker'] $registry->default()->id(); // 'minimal' $registry->has('service'); $registry->definition('service')->metadata()->toArray(); $registry->catalog(); // { default, presets: [metadata + runtime] }
Installer and Forge may list/validate presets through this API only. They must not hardcode built-in preset ID arrays.
Planning
use EreborCodeForge\Durin\Core\Contract\ProjectOptions; use EreborCodeForge\Durin\Core\Mutation\ScaffoldWriter; use EreborCodeForge\Durin\Presets\Registry\DefaultPresetRegistryFactory; $engine = (new DefaultPresetRegistryFactory())->engine(); $plan = $engine->plan(new ProjectOptions('billing', 'service', '/path/to/billing')); $result = (new ScaffoldWriter())->write('/path/to/billing', $plan);
Adding a new preset
- Implement
PresetDefinition(id, metadata, runtime, plan). - Register it in
DefaultPresetRegistryFactory. - Release
durin-presets.
No production changes are required in durin-installer, durins-forge, or durin-app.
Dependency direction
durin-presets
-> durin-core
Must not depend on durin-architecture or Durin Forge.
Supported API
PresetDefinition,PresetMetadata,RuntimeProfileMinimalPreset,ServicePreset,WorkerPresetPresetRegistry,PresetEngine,DefaultPresetRegistryFactoryManifestPlanFactory,PresetScaffoldSupport
Versioning
0.2.0 — preset catalog as ecosystem SSOT (discovery + default + runtime metadata).