StackFoundry publishes SaaS modules as registry-compatible source blocks.
The goal is to publish production SaaS modules as editable source: a registry item declares metadata, dependencies, files, targets, environment requirements, docs, and installable code.
With the StackFoundry command:
pnpm stackfoundry add https://stackfoundry.dev/r/api-keys.json --target ./my-app
pnpm stackfoundry add https://stackfoundry.dev/r/provider-adapters.json --target ./my-appBuild the registry output first:
pnpm registry:buildThen run the web app and install from the local URL:
pnpm dev:web
pnpm stackfoundry add http://localhost:3000/r/api-keys.json --target /tmp/app- Source manifests live in
registry/modules/<name>/module.json. /r/registry.jsonis the public registry index. It useshttps://ui.shadcn.com/schema/registry.json, lists available blocks, and is not itself installable.- Public installable registry items are generated into
public/r/<name>.json. - The same generated output is mirrored to
apps/web/public/rso Vercel serves/r/<name>.jsonas static JSON from the Next app. - Each module item is emitted as
registry:blockwithhttps://ui.shadcn.com/schema/registry-item.json. - Each file includes a
targetso registry clients install it into the intended app path. - Internal module dependencies are emitted as full
https://stackfoundry.dev/r/<dependency>.jsonregistry URLs. - Env requirements are emitted as
envVarsand retained inmeta.env. - Module and shared technology skills are emitted as
maintenanceSkillsso registry URL installs include maintenance guidance. - The StackFoundry command can install generated module items directly, including aggregate preset blocks such as
/r/provider-adapters.json. /r/presets/*.jsonfiles are StackFoundry preset manifests for tooling and inspection. They are intentionally not shadcn registry item documents; use/r/<preset>.jsonfor installable preset payloads./r/recipes/*.jsonfiles are StackFoundry recipe documents for human-readable install order and architecture guidance.
- Registry blocks are SaaS modules, not UI components.
- Module source lives in
registry/modules; generated registry JSON lives inpublic/r. - Presets compose modules and can be emitted as aggregate blocks when the preset name does not collide with a module name.
- Shared technology skills live in
registry/skillsand can be referenced by the source manifest's skill list. - Provider adapter modules should stay adapters around shared product capabilities.
- Skills and checklists are part of the block, because maintainability is part of the product.
Use the StackFoundry doctor and install smoke tests before publishing changes:
pnpm checkThe check suite validates manifests, docs, skills, dependency references, preset file collisions, generated registry output, and real preset installs.