bsmnt 0.0.2 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/release.yml +2 -0
- package/CHANGELOG.md +31 -0
- package/CLAUDE.md +42 -24
- package/README.md +33 -12
- package/biome.json +1 -0
- package/bun.lock +2 -1
- package/docs/architecture.drawio +250 -0
- package/docs/architecture.mermaid +85 -0
- package/package.json +42 -42
- package/{bin → packages/cli/bin}/index.js +28 -31
- package/packages/cli/package.json +16 -0
- package/{src → packages/cli/src}/commands/add-integration.js +22 -37
- package/{src → packages/cli/src}/commands/create.js +125 -131
- package/packages/create-basement-app/integrations/sanity/config.js +46 -0
- package/{src → packages/create-basement-app/integrations/sanity}/mergers/check-integration-merger.js +1 -1
- package/{src → packages/create-basement-app/integrations/sanity}/mergers/layout-merger.js +1 -1
- package/{src → packages/create-basement-app/integrations/sanity}/mergers/sitemap-merger.js +1 -1
- package/packages/create-basement-app/package.json +10 -0
- package/packages/create-basement-app/src/configs/animations.js +28 -0
- package/packages/create-basement-app/src/index.js +15 -0
- package/packages/create-basement-app/src/mergers/check-integration-merger.js +105 -0
- package/{src → packages/create-basement-app/src}/mergers/config.js +5 -33
- package/{src → packages/create-basement-app/src}/mergers/index.js +89 -98
- package/packages/create-basement-app/src/mergers/layout-merger.js +223 -0
- package/packages/create-basement-app/src/mergers/sitemap-merger.js +121 -0
- package/packages/create-basement-app/template-hooks/config.js +38 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/default/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/default/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/default/.editorconfig +40 -0
- package/packages/create-basement-app/templates/default/.env.example +81 -0
- package/packages/create-basement-app/templates/default/.gitattributes +19 -0
- package/packages/create-basement-app/templates/default/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/default/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/default/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/default/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/default/README.md +221 -0
- package/packages/create-basement-app/templates/default/_gitignore +67 -0
- package/packages/create-basement-app/templates/default/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/default/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/default/app/page.tsx +275 -0
- package/packages/create-basement-app/templates/default/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/default/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/default/biome.json +250 -0
- package/packages/create-basement-app/templates/default/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/default/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/default/components/layout/header/index.tsx +11 -0
- package/packages/create-basement-app/templates/default/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/default/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/default/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/default/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/default/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/default/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/default/lib/README.md +33 -0
- package/packages/create-basement-app/templates/default/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/default/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/default/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/default/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/default/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/default/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/default/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/default/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/default/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/default/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/default/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/default/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/default/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/default/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/default/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/default/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/default/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/default/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/default/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/default/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/default/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/default/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/default/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/default/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/default/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/default/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/default/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/default/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/default/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/default/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/default/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/default/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/default/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/default/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/default/next.config.ts +142 -0
- package/packages/create-basement-app/templates/default/package.json +62 -0
- package/packages/create-basement-app/templates/default/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/default/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/default/tsconfig.json +43 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/experiment/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/experiment/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/experiment/.editorconfig +40 -0
- package/packages/create-basement-app/templates/experiment/.env.example +81 -0
- package/packages/create-basement-app/templates/experiment/.gitattributes +19 -0
- package/packages/create-basement-app/templates/experiment/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/experiment/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/experiment/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/experiment/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/experiment/README.md +221 -0
- package/packages/create-basement-app/templates/experiment/_gitignore +67 -0
- package/packages/create-basement-app/templates/experiment/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/experiment/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/experiment/app/page.tsx +275 -0
- package/packages/create-basement-app/templates/experiment/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/experiment/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/experiment/biome.json +250 -0
- package/packages/create-basement-app/templates/experiment/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/experiment/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/experiment/components/layout/header/index.tsx +58 -0
- package/packages/create-basement-app/templates/experiment/components/layout/navigation-menu.tsx +127 -0
- package/packages/create-basement-app/templates/experiment/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/experiment/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/experiment/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/experiment/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/experiment/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/experiment/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/experiment/lib/README.md +33 -0
- package/packages/create-basement-app/templates/experiment/lib/constants.ts +12 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/experiment/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/experiment/lib/integrations/.gitkeep +0 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/experiment/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/experiment/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/experiment/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/experiment/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/experiment/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/experiment/next.config.ts +142 -0
- package/packages/create-basement-app/templates/experiment/package.json +69 -0
- package/packages/create-basement-app/templates/experiment/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/experiment/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/experiment/tsconfig.json +43 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/README.md +21 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-anchor-element.grit +12 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-relative-parent-imports.grit +10 -0
- package/packages/create-basement-app/templates/webgl/.biome/plugins/no-unnecessary-forwardref.grit +9 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/README.md +184 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/architecture.mdc +437 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/components.mdc +436 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/integrations.mdc +447 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/main.mdc +278 -0
- package/packages/create-basement-app/templates/webgl/.cursor/rules/styling.mdc +433 -0
- package/packages/create-basement-app/templates/webgl/.editorconfig +40 -0
- package/packages/create-basement-app/templates/webgl/.env.example +81 -0
- package/packages/create-basement-app/templates/webgl/.gitattributes +19 -0
- package/packages/create-basement-app/templates/webgl/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/packages/create-basement-app/templates/webgl/.github/workflows/lighthouse-to-slack.yml +136 -0
- package/packages/create-basement-app/templates/webgl/.vscode/extensions.json +20 -0
- package/packages/create-basement-app/templates/webgl/.vscode/settings.json +105 -0
- package/packages/create-basement-app/templates/webgl/README.md +221 -0
- package/packages/create-basement-app/templates/webgl/_gitignore +67 -0
- package/packages/create-basement-app/templates/webgl/app/favicon.ico +0 -0
- package/packages/create-basement-app/templates/webgl/app/layout.tsx +104 -0
- package/packages/create-basement-app/templates/webgl/app/page.tsx +10 -0
- package/packages/create-basement-app/templates/webgl/app/robots.ts +15 -0
- package/packages/create-basement-app/templates/webgl/app/sitemap.ts +16 -0
- package/packages/create-basement-app/templates/webgl/biome.json +250 -0
- package/packages/create-basement-app/templates/webgl/components/basement.svg +1 -0
- package/packages/create-basement-app/templates/webgl/components/layout/footer/index.tsx +27 -0
- package/packages/create-basement-app/templates/webgl/components/layout/header/index.tsx +11 -0
- package/packages/create-basement-app/templates/webgl/components/layout/theme/index.tsx +66 -0
- package/packages/create-basement-app/templates/webgl/components/layout/wrapper/index.tsx +65 -0
- package/packages/create-basement-app/templates/webgl/components/ui/README.md +77 -0
- package/packages/create-basement-app/templates/webgl/components/ui/image/README.md +37 -0
- package/packages/create-basement-app/templates/webgl/components/ui/image/index.tsx +224 -0
- package/packages/create-basement-app/templates/webgl/components/ui/link/index.tsx +146 -0
- package/packages/create-basement-app/templates/webgl/components/webgl/canvas/dynamic.tsx +34 -0
- package/packages/create-basement-app/templates/webgl/components/webgl/canvas/index.tsx +38 -0
- package/packages/create-basement-app/templates/webgl/components/webgl/components/scene/index.tsx +29 -0
- package/packages/create-basement-app/templates/webgl/lib/README.md +33 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/index.ts +12 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/use-device-detection.ts +81 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/use-media-breakpoint.ts +15 -0
- package/packages/create-basement-app/templates/webgl/lib/hooks/use-prefetch.ts +74 -0
- package/packages/create-basement-app/templates/webgl/lib/integrations/.gitkeep +0 -0
- package/packages/create-basement-app/templates/webgl/lib/renderer.ts +7 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/dev.ts +52 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/generate-component.ts +322 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/generate-page.ts +193 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/generate.ts +79 -0
- package/packages/create-basement-app/templates/webgl/lib/scripts/utils.ts +246 -0
- package/packages/create-basement-app/templates/webgl/lib/store/app.ts +11 -0
- package/packages/create-basement-app/templates/webgl/lib/store/index.ts +11 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/README.md +64 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/cn.ts +7 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/colors.ts +63 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/config.ts +34 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/global.css +85 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/index.css +6 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/reset.css +166 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/root.css +68 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/css/tailwind.css +132 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/easings.ts +21 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/fonts.ts +28 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/index.ts +12 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/layout.mjs +27 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/README.md +29 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/generate-root.ts +57 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/generate-tailwind.ts +162 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/postcss-functions.mjs +168 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/setup-styles.ts +24 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/scripts/utils.ts +20 -0
- package/packages/create-basement-app/templates/webgl/lib/styles/typography.ts +36 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/README.md +40 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/css.d.ts +21 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/easings.ts +240 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/fetch.ts +84 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/math.test.ts +221 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/math.ts +236 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/metadata.ts +126 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/strings.test.ts +166 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/strings.ts +246 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/types.d.ts +15 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/viewport.test.ts +256 -0
- package/packages/create-basement-app/templates/webgl/lib/utils/viewport.ts +193 -0
- package/packages/create-basement-app/templates/webgl/next.config.ts +142 -0
- package/packages/create-basement-app/templates/webgl/package.json +68 -0
- package/packages/create-basement-app/templates/webgl/postcss.config.mjs +42 -0
- package/packages/create-basement-app/templates/webgl/public/fonts/geist/Geist-Mono.woff2 +0 -0
- package/packages/create-basement-app/templates/webgl/tsconfig.json +43 -0
- package/tasks/.last-branch +1 -0
- package/tasks/CLAUDE.md +104 -0
- package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +153 -0
- package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +115 -0
- package/tasks/prd-project-restructure.md +375 -0
- package/tasks/prd.json +227 -91
- package/tasks/progress.txt +281 -87
- package/tasks/ralph.sh +113 -0
- package/integrations/basehub/README.md +0 -3
- package/layers/experiment/components/layout/header/index.tsx +0 -58
- package/layers/experiment/components/layout/navigation-menu.tsx +0 -127
- package/layers/experiment/lib/constants.ts +0 -12
- package/layers/webgl/app/page.tsx +0 -10
- package/layers/webgl/components/webgl/canvas/dynamic.tsx +0 -34
- package/layers/webgl/components/webgl/canvas/index.tsx +0 -43
- package/layers/webgl/components/webgl/components/scene/index.tsx +0 -21
- package/src/mergers/next-config-merger.js +0 -63
- /package/{src → packages/cli/src}/commands/setup-sanity.js +0 -0
- /package/{src → packages/cli/src}/commands/worktree.js +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/draft-mode/disable/route.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/draft-mode/enable/route.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/api/revalidate/route.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/layout.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/sitemap.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/studio/[[...tool]]/page.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/app/studio/layout.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/components/ui/sanity-image/index.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/README.md +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/check-integration.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/README.md +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/client.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/components/disable-draft-mode.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/components/rich-text.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/env.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/live/index.tsx +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/queries.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.cli.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.config.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/sanity.types.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schema.json +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/article.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/example.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/index.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/link.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/metadata.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/navigation.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/page.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/schemas/richText.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/structure.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/utils/image.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/integrations/sanity/utils/link.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/scripts/copy-sanity-mcp.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/scripts/generate-page.ts +0 -0
- /package/{integrations/sanity → packages/create-basement-app/integrations/sanity/files}/lib/utils/metadata.ts +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/README.md +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/no-anchor-element.grit +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/no-relative-parent-imports.grit +0 -0
- /package/{plugins → packages/create-basement-app/plugins}/no-unnecessary-forwardref.grit +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-battery.ts +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-device-perf.ts +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-intersection-observer.ts +0 -0
- /package/{template-hooks → packages/create-basement-app/template-hooks}/use-media.ts +0 -0
- /package/{layers/webgpu → packages/create-basement-app/templates/default/lib/integrations}/.gitkeep +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# @basementstudio/cli
|
|
2
2
|
|
|
3
|
+
## 0.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#39](https://github.com/basementstudio/basement-cli/pull/39) [`43a5857`](https://github.com/basementstudio/basement-cli/commit/43a5857a33350e344494d85c70a2400ac038695c) Thanks [@BertovDev](https://github.com/BertovDev)! - Add WebGPU template support
|
|
8
|
+
|
|
9
|
+
- [#33](https://github.com/basementstudio/basement-cli/pull/33) [`9bef7ca`](https://github.com/basementstudio/basement-cli/commit/9bef7ca91ba7fa5928263c76adcc9f6bf77c3143) Thanks [@BertovDev](https://github.com/BertovDev)! - Remove BaseHub CMS integration. BaseHub was a stub that was never fully implemented. Sanity remains as the only CMS option.
|
|
10
|
+
|
|
11
|
+
- [#36](https://github.com/basementstudio/basement-cli/pull/36) [`ffa1407`](https://github.com/basementstudio/basement-cli/commit/ffa1407c299a50dbf27c4472e3e8d89bf66ed4fa) Thanks [@mustache-dev](https://github.com/mustache-dev)! - One r3f canvas for webgl-webgpu avoids redundancy
|
|
12
|
+
|
|
13
|
+
## 0.1.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- [#29](https://github.com/basementstudio/basement-cli/pull/29) [`e30588e`](https://github.com/basementstudio/basement-cli/commit/e30588e8609835add7314cbbfc4453ca6d47c195) Thanks [@BertovDev](https://github.com/BertovDev)! - Restructure project into a bun workspaces monorepo with two packages: @basementstudio/cli and @basementstudio/create-basement-app.
|
|
18
|
+
|
|
19
|
+
Split CLI entry point and commands into packages/cli
|
|
20
|
+
|
|
21
|
+
Move template scaffolding, mergers, integrations, hooks, and plugins into packages/create-basement-app
|
|
22
|
+
|
|
23
|
+
Replace remote tiged template downloads with local standalone templates (default, webgl, webgpu, experiment)
|
|
24
|
+
|
|
25
|
+
Move Sanity and BaseHub integration files locally with declarative config manifests (config.js)
|
|
26
|
+
|
|
27
|
+
Centralize animation and hook dependency configs in create-basement-app/src/configs/
|
|
28
|
+
|
|
29
|
+
Update CI workflow and changeset config for workspace publishing
|
|
30
|
+
|
|
31
|
+
Remove old root-level bin/, src/, layers/, and dead
|
|
32
|
+
code
|
|
33
|
+
|
|
3
34
|
## 0.0.2
|
|
4
35
|
|
|
5
36
|
### Patch Changes
|
package/CLAUDE.md
CHANGED
|
@@ -4,14 +4,14 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|
|
4
4
|
|
|
5
5
|
## Project Overview
|
|
6
6
|
|
|
7
|
-
This is **basement**, a CLI tool that scaffolds Next.js projects with AI agent integration. It creates projects from templates (Default, WebGL, WebGPU, Experiment) and optionally injects CMS integrations (Sanity
|
|
7
|
+
This is **basement**, a CLI tool that scaffolds Next.js projects with AI agent integration. It creates projects from templates (Default, WebGL, WebGPU, Experiment) and optionally injects CMS integrations (Sanity) and animation libraries (GSAP, Framer Motion).
|
|
8
8
|
|
|
9
9
|
## Commands
|
|
10
10
|
|
|
11
11
|
### CLI Development
|
|
12
12
|
```bash
|
|
13
|
-
npm link
|
|
14
|
-
basement
|
|
13
|
+
cd packages/cli && npm link # Install CLI locally for testing
|
|
14
|
+
basement # Run the CLI
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
### Generated Project Commands
|
|
@@ -34,28 +34,45 @@ bun sanity:typegen # Generate TS types from Sanity schema
|
|
|
34
34
|
|
|
35
35
|
## Architecture
|
|
36
36
|
|
|
37
|
+
This project is a **bun workspaces monorepo** with two packages:
|
|
38
|
+
|
|
37
39
|
```
|
|
38
40
|
basement-starter-cli/
|
|
39
|
-
├──
|
|
40
|
-
├──
|
|
41
|
-
├──
|
|
42
|
-
│
|
|
43
|
-
│ ├──
|
|
44
|
-
│
|
|
45
|
-
├──
|
|
46
|
-
│ └── sanity
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
├── packages/
|
|
42
|
+
│ ├── cli/ # @basementstudio/cli
|
|
43
|
+
│ │ ├── bin/index.js # CLI entry point (basement command)
|
|
44
|
+
│ │ └── src/commands/
|
|
45
|
+
│ │ ├── create.js # Main project creation logic
|
|
46
|
+
│ │ ├── add-integration.js # Add CMS to existing projects
|
|
47
|
+
│ │ ├── worktree.js # Git worktree management
|
|
48
|
+
│ │ └── setup-sanity.js # Sanity project provisioning
|
|
49
|
+
│ └── create-basement-app/ # @basementstudio/create-basement-app
|
|
50
|
+
│ ├── src/
|
|
51
|
+
│ │ ├── index.js # Barrel exports (public API)
|
|
52
|
+
│ │ ├── mergers/ # File merge logic (layout, sitemap, config)
|
|
53
|
+
│ │ └── configs/animations.js # Animation dependency configs
|
|
54
|
+
│ ├── templates/ # Standalone project templates
|
|
55
|
+
│ │ ├── default/ # Next.js 16 + React 19 + Tailwind v4
|
|
56
|
+
│ │ ├── webgl/ # + React Three Fiber + Three.js
|
|
57
|
+
│ │ ├── webgpu/ # + R3F WebGPU renderer (alpha)
|
|
58
|
+
│ │ └── experiment/ # + Creative coding navigation UI
|
|
59
|
+
│ ├── integrations/ # CMS integration files + config manifests
|
|
60
|
+
│ │ └── sanity/ # Sanity files, mergers, config.js
|
|
61
|
+
│ ├── template-hooks/ # Reusable React hooks + config.js
|
|
62
|
+
│ └── plugins/ # Biome linting rules (Grit patterns)
|
|
63
|
+
├── .changeset/ # Changeset config for versioning
|
|
64
|
+
├── .github/workflows/release.yml # CI: publish both packages to npm
|
|
65
|
+
├── biome.json # Shared Biome config (root-level)
|
|
66
|
+
└── package.json # Workspace root (private, no runtime deps)
|
|
49
67
|
```
|
|
50
68
|
|
|
51
|
-
### CLI Flow (src/commands/create.js)
|
|
69
|
+
### CLI Flow (packages/cli/src/commands/create.js)
|
|
52
70
|
1. **Prompts**: Collect project name, template type, CMS, animation library, agent preference, hooks
|
|
53
|
-
2. **Template
|
|
54
|
-
3. **
|
|
55
|
-
4. **
|
|
56
|
-
5. **
|
|
57
|
-
6. **
|
|
58
|
-
7. **Hooks**: Copy selected hooks from `template-hooks/`
|
|
71
|
+
2. **Template Copy**: Copy standalone template from `create-basement-app/templates/{type}/` (instant, no network)
|
|
72
|
+
3. **Integration Injection**: Merge CMS files from local `create-basement-app/integrations/{cms}/files/`
|
|
73
|
+
4. **Package Hydration**: Inject CMS deps, animation deps, hook deps, and scripts (all from config manifests)
|
|
74
|
+
5. **Agent Skills**: Install AI agent skills via `bunx skills add`
|
|
75
|
+
6. **Hooks**: Copy selected hooks from `create-basement-app/template-hooks/`
|
|
59
76
|
|
|
60
77
|
## Generated Project Stack
|
|
61
78
|
|
|
@@ -120,9 +137,10 @@ import { cn } from '@/styles/cn'
|
|
|
120
137
|
- Root layouts should have ZERO dynamic function calls — encapsulate all dynamic behavior in child components with proper Suspense boundaries
|
|
121
138
|
|
|
122
139
|
### Integration File Sources
|
|
123
|
-
- **
|
|
124
|
-
- **CMS integrations** (`integrations/`) are
|
|
125
|
-
-
|
|
140
|
+
- **Templates** (`packages/create-basement-app/templates/`) are standalone, complete Next.js projects (no layer overlay needed)
|
|
141
|
+
- **CMS integrations** (`packages/create-basement-app/integrations/`) are LOCAL files with config manifests — no remote GitHub cloning
|
|
142
|
+
- **Config manifests** (`config.js` in each integration) declare deps, scripts, additivePaths, and mergeFiles
|
|
143
|
+
- Files that need to exist in generated projects but aren't in the integration directory must be **generated inline by the merger** (e.g., `SanityStudioGuard` component is written by `layout-merger.js`)
|
|
126
144
|
|
|
127
145
|
### Debug Components
|
|
128
146
|
Always gate debug UI (not auto-removed in production):
|
|
@@ -132,7 +150,7 @@ Always gate debug UI (not auto-removed in production):
|
|
|
132
150
|
|
|
133
151
|
## Biome Plugins
|
|
134
152
|
|
|
135
|
-
Custom linting rules in `plugins/`:
|
|
153
|
+
Custom linting rules in `packages/create-basement-app/plugins/`:
|
|
136
154
|
- `no-anchor-element.grit` - Enforce Next.js `<Link>` over `<a>`
|
|
137
155
|
- `no-unnecessary-forwardref.grit` - Prevent forwardRef with React 19
|
|
138
156
|
- `no-relative-parent-imports.grit` - Enforce `@/` alias imports
|
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# bsmnt `1.0.0`
|
|
2
2
|
|
|
3
3
|
Your project starts here. One command to go from zero to a fully configured Next.js project with our stack, CMS, agent skills, and everything wired up.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
|
|
6
|
+
bsmnt
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
## What's in 1.0
|
|
@@ -40,7 +40,7 @@ Already have a project running? The `--add` command injects Sanity into it. It d
|
|
|
40
40
|
Real-world validated — this is how we integrated Sanity into the ROX project.
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
|
|
43
|
+
bsmnt --add
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
### Agent skills out of the box
|
|
@@ -60,23 +60,45 @@ For Claude Code + Sanity, it also registers the Sanity MCP server automatically.
|
|
|
60
60
|
Run multiple Claude Code instances on separate branches without conflicts. The CLI manages worktree creation, switching, and cleanup.
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
|
|
63
|
+
bsmnt -wc -b=feature/auth,feature/dashboard,fix/bug-123
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
Creates three isolated worktrees with dependencies auto-installed. Each one is a full working copy your agent can run in independently.
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
70
|
+
## Project Structure
|
|
71
|
+
|
|
72
|
+
This is a **bun workspaces monorepo** with two publishable packages:
|
|
73
|
+
|
|
74
|
+
| Package | npm | Description |
|
|
75
|
+
|---------|-----|-------------|
|
|
76
|
+
| `packages/cli` | `@basementstudio/cli` | CLI binary — prompts, argument parsing, command routing |
|
|
77
|
+
| `packages/create-basement-app` | `@basementstudio/create-basement-app` | Templates, integrations, mergers, hooks, plugins |
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
packages/
|
|
81
|
+
├── cli/ # CLI entry point and commands
|
|
82
|
+
│ ├── bin/index.js
|
|
83
|
+
│ └── src/commands/
|
|
84
|
+
└── create-basement-app/ # Scaffolding assets and merge logic
|
|
85
|
+
├── templates/{default,webgl,webgpu,experiment}/
|
|
86
|
+
├── integrations/{sanity}/
|
|
87
|
+
├── template-hooks/
|
|
88
|
+
└── plugins/
|
|
89
|
+
```
|
|
90
|
+
|
|
70
91
|
## (SOON) Installation
|
|
71
92
|
|
|
72
93
|
```bash
|
|
73
|
-
npm install -g
|
|
94
|
+
npm install -g @basementstudio/cli
|
|
74
95
|
```
|
|
75
96
|
|
|
76
97
|
For local development — clone the repo and run:
|
|
77
98
|
|
|
78
99
|
```bash
|
|
79
|
-
|
|
100
|
+
bun install
|
|
101
|
+
cd packages/cli && npm link
|
|
80
102
|
```
|
|
81
103
|
|
|
82
104
|
## Usage
|
|
@@ -84,31 +106,31 @@ npm link
|
|
|
84
106
|
Interactive mode — answer prompts step by step:
|
|
85
107
|
|
|
86
108
|
```bash
|
|
87
|
-
|
|
109
|
+
bsmnt
|
|
88
110
|
```
|
|
89
111
|
|
|
90
112
|
Skip everything with flags:
|
|
91
113
|
|
|
92
114
|
```bash
|
|
93
|
-
|
|
115
|
+
bsmnt --create my-app --webgpu --sanity --gsap --claude
|
|
94
116
|
```
|
|
95
117
|
|
|
96
118
|
Add Sanity to an existing project:
|
|
97
119
|
|
|
98
120
|
```bash
|
|
99
|
-
|
|
121
|
+
bsmnt --add
|
|
100
122
|
```
|
|
101
123
|
|
|
102
124
|
Manage worktrees:
|
|
103
125
|
|
|
104
126
|
```bash
|
|
105
|
-
|
|
127
|
+
bsmnt --worktree
|
|
106
128
|
```
|
|
107
129
|
|
|
108
130
|
## All Flags
|
|
109
131
|
|
|
110
132
|
```
|
|
111
|
-
|
|
133
|
+
bsmnt [mode] [project-name] [flags]
|
|
112
134
|
|
|
113
135
|
Modes:
|
|
114
136
|
-c, --create Setup a new project
|
|
@@ -123,7 +145,6 @@ Templates:
|
|
|
123
145
|
|
|
124
146
|
CMS:
|
|
125
147
|
--sanity Sanity CMS
|
|
126
|
-
--basehub BaseHub CMS
|
|
127
148
|
--no-cms No CMS
|
|
128
149
|
|
|
129
150
|
Animation:
|
package/biome.json
CHANGED
package/bun.lock
CHANGED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
<mxfile host="app.diagrams.net" modified="2026-02-12T00:00:00.000Z" agent="Claude Code" version="24.0.0" type="device">
|
|
2
|
+
<diagram id="architecture" name="Project Structure">
|
|
3
|
+
<mxGraphModel dx="1422" dy="794" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1600" pageHeight="1200" math="0" shadow="0">
|
|
4
|
+
<root>
|
|
5
|
+
<mxCell id="0" />
|
|
6
|
+
<mxCell id="1" parent="0" />
|
|
7
|
+
|
|
8
|
+
<!-- ROOT -->
|
|
9
|
+
<mxCell id="root" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a1a2e;strokeColor=#e94560;arcSize=8;" vertex="1" parent="1">
|
|
10
|
+
<mxGeometry x="20" y="20" width="1560" height="1160" as="geometry" />
|
|
11
|
+
</mxCell>
|
|
12
|
+
<mxCell id="root_label" value="<b>basement-starter-cli</b> (root)" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#e94560;fontSize=16;" vertex="1" parent="1">
|
|
13
|
+
<mxGeometry x="40" y="30" width="250" height="30" as="geometry" />
|
|
14
|
+
</mxCell>
|
|
15
|
+
|
|
16
|
+
<!-- Root files -->
|
|
17
|
+
<mxCell id="root_pkg" value="package.json
workspaces: [packages/*]" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
18
|
+
<mxGeometry x="40" y="70" width="160" height="40" as="geometry" />
|
|
19
|
+
</mxCell>
|
|
20
|
+
<mxCell id="root_biome" value="biome.json
shared linting" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
21
|
+
<mxGeometry x="210" y="70" width="120" height="40" as="geometry" />
|
|
22
|
+
</mxCell>
|
|
23
|
+
<mxCell id="root_changeset" value=".changeset/
versioning" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
24
|
+
<mxGeometry x="340" y="70" width="120" height="40" as="geometry" />
|
|
25
|
+
</mxCell>
|
|
26
|
+
<mxCell id="root_ci" value=".github/workflows/
release pipeline" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2d2d44;strokeColor=#e94560;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
27
|
+
<mxGeometry x="470" y="70" width="140" height="40" as="geometry" />
|
|
28
|
+
</mxCell>
|
|
29
|
+
|
|
30
|
+
<!-- CLI PACKAGE -->
|
|
31
|
+
<mxCell id="cli" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#16213e;strokeColor=#0f3460;arcSize=6;" vertex="1" parent="1">
|
|
32
|
+
<mxGeometry x="40" y="140" width="360" height="420" as="geometry" />
|
|
33
|
+
</mxCell>
|
|
34
|
+
<mxCell id="cli_label" value="<b>packages/cli</b>
@basementstudio/cli" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4da6ff;fontSize=14;" vertex="1" parent="1">
|
|
35
|
+
<mxGeometry x="55" y="150" width="200" height="40" as="geometry" />
|
|
36
|
+
</mxCell>
|
|
37
|
+
|
|
38
|
+
<mxCell id="cli_bin" value="<b>bin/index.js</b>
CLI entry point
'basement' command
arg parsing + routing" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
39
|
+
<mxGeometry x="60" y="200" width="150" height="70" as="geometry" />
|
|
40
|
+
</mxCell>
|
|
41
|
+
|
|
42
|
+
<mxCell id="cli_create" value="<b>src/commands/create.js</b>
Orchestrates scaffolding
Calls create-basement-app" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
43
|
+
<mxGeometry x="60" y="285" width="160" height="60" as="geometry" />
|
|
44
|
+
</mxCell>
|
|
45
|
+
|
|
46
|
+
<mxCell id="cli_add" value="<b>src/commands/
add-integration.js</b>
Add CMS to existing project" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
47
|
+
<mxGeometry x="230" y="285" width="155" height="60" as="geometry" />
|
|
48
|
+
</mxCell>
|
|
49
|
+
|
|
50
|
+
<mxCell id="cli_worktree" value="<b>src/commands/
worktree.js</b>
Git worktree mgmt" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
51
|
+
<mxGeometry x="60" y="360" width="130" height="55" as="geometry" />
|
|
52
|
+
</mxCell>
|
|
53
|
+
|
|
54
|
+
<mxCell id="cli_sanity" value="<b>src/commands/
setup-sanity.js</b>
Sanity project setup" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
55
|
+
<mxGeometry x="200" y="360" width="140" height="55" as="geometry" />
|
|
56
|
+
</mxCell>
|
|
57
|
+
|
|
58
|
+
<mxCell id="cli_pkg" value="<b>package.json</b>
deps: fs-extra, ora, picocolors,
prompts, dotenv" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e3a5f;strokeColor=#4da6ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
59
|
+
<mxGeometry x="60" y="430" width="200" height="50" as="geometry" />
|
|
60
|
+
</mxCell>
|
|
61
|
+
|
|
62
|
+
<mxCell id="cli_dep_label" value="depends on
create-basement-app
(workspace:*)" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b6b;fontSize=10;fontStyle=2;" vertex="1" parent="1">
|
|
63
|
+
<mxGeometry x="60" y="490" width="130" height="50" as="geometry" />
|
|
64
|
+
</mxCell>
|
|
65
|
+
|
|
66
|
+
<!-- CREATE-BASEMENT-APP PACKAGE -->
|
|
67
|
+
<mxCell id="cba" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#0f3460;strokeColor=#533483;arcSize=4;" vertex="1" parent="1">
|
|
68
|
+
<mxGeometry x="420" y="140" width="1140" height="1020" as="geometry" />
|
|
69
|
+
</mxCell>
|
|
70
|
+
<mxCell id="cba_label" value="<b>packages/create-basement-app</b>
@basementstudio/create-basement-app" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#b388ff;fontSize=14;" vertex="1" parent="1">
|
|
71
|
+
<mxGeometry x="440" y="150" width="350" height="40" as="geometry" />
|
|
72
|
+
</mxCell>
|
|
73
|
+
|
|
74
|
+
<!-- SRC -->
|
|
75
|
+
<mxCell id="cba_src" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a2744;strokeColor=#533483;arcSize=6;" vertex="1" parent="1">
|
|
76
|
+
<mxGeometry x="440" y="200" width="520" height="200" as="geometry" />
|
|
77
|
+
</mxCell>
|
|
78
|
+
<mxCell id="cba_src_label" value="<b>src/</b> — scaffolding logic" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#b388ff;fontSize=12;" vertex="1" parent="1">
|
|
79
|
+
<mxGeometry x="450" y="205" width="180" height="25" as="geometry" />
|
|
80
|
+
</mxCell>
|
|
81
|
+
|
|
82
|
+
<mxCell id="cba_index" value="<b>index.js</b>
Public API
barrel export" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
83
|
+
<mxGeometry x="455" y="235" width="100" height="55" as="geometry" />
|
|
84
|
+
</mxCell>
|
|
85
|
+
|
|
86
|
+
<mxCell id="cba_mergers" value="<b>mergers/</b>
index.js — injectLayer, injectIntegration
config.js — CMS_CONFIG, LAYER_CONFIG" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
87
|
+
<mxGeometry x="570" y="235" width="250" height="55" as="geometry" />
|
|
88
|
+
</mxCell>
|
|
89
|
+
|
|
90
|
+
<mxCell id="cba_configs" value="<b>configs/</b>
animations.js
GSAP + Motion deps" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
91
|
+
<mxGeometry x="835" y="235" width="110" height="55" as="geometry" />
|
|
92
|
+
</mxCell>
|
|
93
|
+
|
|
94
|
+
<mxCell id="cba_pkg" value="<b>package.json</b> — deps: fs-extra, picocolors" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3f5f;strokeColor=#b388ff;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
95
|
+
<mxGeometry x="455" y="310" width="280" height="30" as="geometry" />
|
|
96
|
+
</mxCell>
|
|
97
|
+
|
|
98
|
+
<!-- TEMPLATES -->
|
|
99
|
+
<mxCell id="templates" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#3d1f6d;strokeColor=#e94560;arcSize=6;" vertex="1" parent="1">
|
|
100
|
+
<mxGeometry x="440" y="420" width="520" height="280" as="geometry" />
|
|
101
|
+
</mxCell>
|
|
102
|
+
<mxCell id="templates_label" value="<b>templates/</b> — full standalone Next.js projects" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b9d;fontSize=12;" vertex="1" parent="1">
|
|
103
|
+
<mxGeometry x="450" y="425" width="330" height="25" as="geometry" />
|
|
104
|
+
</mxCell>
|
|
105
|
+
|
|
106
|
+
<mxCell id="t_default" value="<b>default/</b>
84 files
Base next-starter

next 16.1.4
react 19.2.4
tailwindcss v4
zustand
biome" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
107
|
+
<mxGeometry x="455" y="460" width="110" height="130" as="geometry" />
|
|
108
|
+
</mxCell>
|
|
109
|
+
|
|
110
|
+
<mxCell id="t_webgl" value="<b>webgl/</b>
87 files
default + R3F

@react-three/fiber
@react-three/drei
three ^0.182.0
+ canvas/scene" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
111
|
+
<mxGeometry x="580" y="460" width="115" height="130" as="geometry" />
|
|
112
|
+
</mxCell>
|
|
113
|
+
|
|
114
|
+
<mxCell id="t_webgpu" value="<b>webgpu/</b>
84 files
default + alpha R3F

fiber 10.0.0-alpha
drei ^11.0.0-alpha
(deps only,
no extra files)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
115
|
+
<mxGeometry x="710" y="460" width="115" height="130" as="geometry" />
|
|
116
|
+
</mxCell>
|
|
117
|
+
|
|
118
|
+
<mxCell id="t_experiment" value="<b>experiment/</b>
86 files
default + nav

Radix NavMenu
CVA styling
+ header/nav
+ constants.ts" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#4a2080;strokeColor=#ff6b9d;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
119
|
+
<mxGeometry x="840" y="460" width="110" height="130" as="geometry" />
|
|
120
|
+
</mxCell>
|
|
121
|
+
|
|
122
|
+
<mxCell id="t_note" value="Each template is independently runnable:
cd templates/webgl && bun install && bun dev" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b9d;fontSize=10;fontStyle=2;" vertex="1" parent="1">
|
|
123
|
+
<mxGeometry x="455" y="605" width="280" height="35" as="geometry" />
|
|
124
|
+
</mxCell>
|
|
125
|
+
|
|
126
|
+
<!-- INTEGRATIONS -->
|
|
127
|
+
<mxCell id="integrations" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#5c1a1a;strokeColor=#ff4d4d;arcSize=6;" vertex="1" parent="1">
|
|
128
|
+
<mxGeometry x="980" y="200" width="560" height="310" as="geometry" />
|
|
129
|
+
</mxCell>
|
|
130
|
+
<mxCell id="int_label" value="<b>integrations/</b> — CMS overlays (applied on top of any template)" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b6b;fontSize=12;" vertex="1" parent="1">
|
|
131
|
+
<mxGeometry x="990" y="205" width="400" height="25" as="geometry" />
|
|
132
|
+
</mxCell>
|
|
133
|
+
|
|
134
|
+
<!-- Sanity -->
|
|
135
|
+
<mxCell id="sanity" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#6b2020;strokeColor=#ff4d4d;arcSize=8;" vertex="1" parent="1">
|
|
136
|
+
<mxGeometry x="995" y="240" width="340" height="250" as="geometry" />
|
|
137
|
+
</mxCell>
|
|
138
|
+
<mxCell id="sanity_label" value="<b>sanity/</b>" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff8a8a;fontSize=11;" vertex="1" parent="1">
|
|
139
|
+
<mxGeometry x="1005" y="245" width="70" height="22" as="geometry" />
|
|
140
|
+
</mxCell>
|
|
141
|
+
|
|
142
|
+
<mxCell id="s_config" value="<b>config.js</b>
Single source of truth
deps: @sanity/*, next-sanity
devDeps: sanity
scripts: extract, typegen
additivePaths: 9
mergeFiles: 3" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7a2a2a;strokeColor=#ff8a8a;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
143
|
+
<mxGeometry x="1010" y="270" width="150" height="100" as="geometry" />
|
|
144
|
+
</mxCell>
|
|
145
|
+
|
|
146
|
+
<mxCell id="s_files" value="<b>files/</b>
35 Sanity files
app/ components/
lib/integrations/sanity/" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7a2a2a;strokeColor=#ff8a8a;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
147
|
+
<mxGeometry x="1175" y="270" width="145" height="70" as="geometry" />
|
|
148
|
+
</mxCell>
|
|
149
|
+
|
|
150
|
+
<mxCell id="s_mergers" value="<b>mergers/</b>
layout-merger.js
sitemap-merger.js
check-integration-merger.js" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#7a2a2a;strokeColor=#ff8a8a;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
151
|
+
<mxGeometry x="1175" y="355" width="145" height="70" as="geometry" />
|
|
152
|
+
</mxCell>
|
|
153
|
+
|
|
154
|
+
<!-- HOOKS -->
|
|
155
|
+
<mxCell id="hooks" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a3a4a;strokeColor=#4ecdc4;arcSize=6;" vertex="1" parent="1">
|
|
156
|
+
<mxGeometry x="980" y="530" width="560" height="170" as="geometry" />
|
|
157
|
+
</mxCell>
|
|
158
|
+
<mxCell id="hooks_label" value="<b>template-hooks/</b> — optional hooks copied during scaffolding" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4ecdc4;fontSize=12;" vertex="1" parent="1">
|
|
159
|
+
<mxGeometry x="990" y="535" width="380" height="25" as="geometry" />
|
|
160
|
+
</mxCell>
|
|
161
|
+
|
|
162
|
+
<mxCell id="h_config" value="<b>config.js</b>
Hook metadata
+ npm deps per hook" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
163
|
+
<mxGeometry x="1000" y="570" width="120" height="55" as="geometry" />
|
|
164
|
+
</mxCell>
|
|
165
|
+
|
|
166
|
+
<mxCell id="h_battery" value="use-battery.ts
deps: lodash-es" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
167
|
+
<mxGeometry x="1135" y="570" width="100" height="40" as="geometry" />
|
|
168
|
+
</mxCell>
|
|
169
|
+
|
|
170
|
+
<mxCell id="h_perf" value="use-device-perf.ts
deps: detect-gpu,
react-device-detect, zustand" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
171
|
+
<mxGeometry x="1250" y="570" width="130" height="55" as="geometry" />
|
|
172
|
+
</mxCell>
|
|
173
|
+
|
|
174
|
+
<mxCell id="h_observer" value="use-intersection-
observer.ts
(no deps)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
175
|
+
<mxGeometry x="1395" y="570" width="100" height="50" as="geometry" />
|
|
176
|
+
</mxCell>
|
|
177
|
+
|
|
178
|
+
<mxCell id="h_media" value="use-media.ts
(no deps)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1e4a5a;strokeColor=#4ecdc4;fontColor=#fff;fontSize=9;align=center;" vertex="1" parent="1">
|
|
179
|
+
<mxGeometry x="1135" y="625" width="100" height="35" as="geometry" />
|
|
180
|
+
</mxCell>
|
|
181
|
+
|
|
182
|
+
<!-- PLUGINS -->
|
|
183
|
+
<mxCell id="plugins" value="<b>plugins/</b>
no-anchor-element.grit
no-unnecessary-forwardref.grit
no-relative-parent-imports.grit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#2a3a2a;strokeColor=#66bb6a;fontColor=#fff;fontSize=10;align=center;" vertex="1" parent="1">
|
|
184
|
+
<mxGeometry x="980" y="720" width="220" height="70" as="geometry" />
|
|
185
|
+
</mxCell>
|
|
186
|
+
|
|
187
|
+
<!-- ARROWS: CLI -> CBA -->
|
|
188
|
+
<mxCell id="arrow1" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff6b6b;strokeWidth=2;entryX=0;entryY=0.5;exitX=1;exitY=0.5;" edge="1" parent="1" source="cli_create" target="cba_index">
|
|
189
|
+
<mxGeometry relative="1" as="geometry" />
|
|
190
|
+
</mxCell>
|
|
191
|
+
<mxCell id="arrow1_label" value="imports" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff6b6b;fontSize=10;" vertex="1" connectable="0" parent="arrow1">
|
|
192
|
+
<mxGeometry x="-0.2" relative="1" as="geometry">
|
|
193
|
+
<mxPoint as="offset" />
|
|
194
|
+
</mxGeometry>
|
|
195
|
+
</mxCell>
|
|
196
|
+
|
|
197
|
+
<!-- ARROW: CLI create -> templates -->
|
|
198
|
+
<mxCell id="arrow2" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff6b9d;strokeWidth=2;dashed=1;exitX=1;exitY=1;entryX=0;entryY=0;" edge="1" parent="1" source="cli_create" target="templates">
|
|
199
|
+
<mxGeometry relative="1" as="geometry" />
|
|
200
|
+
</mxCell>
|
|
201
|
+
<mxCell id="arrow2_label" value="fs.copy" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff6b9d;fontSize=10;" vertex="1" connectable="0" parent="arrow2">
|
|
202
|
+
<mxGeometry x="-0.2" relative="1" as="geometry">
|
|
203
|
+
<mxPoint as="offset" />
|
|
204
|
+
</mxGeometry>
|
|
205
|
+
</mxCell>
|
|
206
|
+
|
|
207
|
+
<!-- ARROW: CLI create -> integrations -->
|
|
208
|
+
<mxCell id="arrow3" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff4d4d;strokeWidth=2;dashed=1;exitX=1;exitY=0.3;entryX=0;entryY=0.5;" edge="1" parent="1" source="cli" target="integrations">
|
|
209
|
+
<mxGeometry relative="1" as="geometry" />
|
|
210
|
+
</mxCell>
|
|
211
|
+
<mxCell id="arrow3_label" value="merge + copy" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff4d4d;fontSize=10;" vertex="1" connectable="0" parent="arrow3">
|
|
212
|
+
<mxGeometry x="-0.3" relative="1" as="geometry">
|
|
213
|
+
<mxPoint as="offset" />
|
|
214
|
+
</mxGeometry>
|
|
215
|
+
</mxCell>
|
|
216
|
+
|
|
217
|
+
<!-- ARROW: mergers -> sanity mergers -->
|
|
218
|
+
<mxCell id="arrow4" value="" style="endArrow=block;endFill=1;html=1;strokeColor=#ff8a8a;strokeWidth=1;dashed=1;" edge="1" parent="1" source="cba_mergers" target="s_mergers">
|
|
219
|
+
<mxGeometry relative="1" as="geometry" />
|
|
220
|
+
</mxCell>
|
|
221
|
+
<mxCell id="arrow4_label" value="imports" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontColor=#ff8a8a;fontSize=9;" vertex="1" connectable="0" parent="arrow4">
|
|
222
|
+
<mxGeometry x="-0.2" relative="1" as="geometry">
|
|
223
|
+
<mxPoint as="offset" />
|
|
224
|
+
</mxGeometry>
|
|
225
|
+
</mxCell>
|
|
226
|
+
|
|
227
|
+
<!-- DATA FLOW LEGEND -->
|
|
228
|
+
<mxCell id="legend" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#1a1a2e;strokeColor=#555;arcSize=8;" vertex="1" parent="1">
|
|
229
|
+
<mxGeometry x="440" y="730" width="500" height="110" as="geometry" />
|
|
230
|
+
</mxCell>
|
|
231
|
+
<mxCell id="legend_title" value="<b>Data Flow</b>" style="text;html=1;align=left;verticalAlign=top;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#fff;fontSize=11;" vertex="1" parent="1">
|
|
232
|
+
<mxGeometry x="455" y="735" width="80" height="22" as="geometry" />
|
|
233
|
+
</mxCell>
|
|
234
|
+
<mxCell id="legend1" value="1. User runs <b>basement</b> → CLI parses args, prompts for choices" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#4da6ff;fontSize=10;" vertex="1" parent="1">
|
|
235
|
+
<mxGeometry x="455" y="758" width="340" height="22" as="geometry" />
|
|
236
|
+
</mxCell>
|
|
237
|
+
<mxCell id="legend2" value="2. CLI copies selected <b>template</b> to target dir (instant, no network)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff6b9d;fontSize=10;" vertex="1" parent="1">
|
|
238
|
+
<mxGeometry x="455" y="778" width="380" height="22" as="geometry" />
|
|
239
|
+
</mxCell>
|
|
240
|
+
<mxCell id="legend3" value="3. CLI applies CMS <b>integration</b> via merge + copy (if selected)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#ff4d4d;fontSize=10;" vertex="1" parent="1">
|
|
241
|
+
<mxGeometry x="455" y="798" width="350" height="22" as="geometry" />
|
|
242
|
+
</mxCell>
|
|
243
|
+
<mxCell id="legend4" value="4. CLI hydrates package.json from <b>config manifests</b> (zero hardcoded deps)" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontColor=#b388ff;fontSize=10;" vertex="1" parent="1">
|
|
244
|
+
<mxGeometry x="455" y="818" width="420" height="22" as="geometry" />
|
|
245
|
+
</mxCell>
|
|
246
|
+
|
|
247
|
+
</root>
|
|
248
|
+
</mxGraphModel>
|
|
249
|
+
</diagram>
|
|
250
|
+
</mxfile>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
graph TD
|
|
2
|
+
subgraph ROOT["basement-starter-cli (root)"]
|
|
3
|
+
PKG_ROOT["package.json<br/><i>workspaces: packages/*</i>"]
|
|
4
|
+
BIOME["biome.json<br/><i>shared linting</i>"]
|
|
5
|
+
CHANGESET[".changeset/<br/><i>versioning</i>"]
|
|
6
|
+
CI[".github/workflows/<br/><i>release pipeline</i>"]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
subgraph CLI["packages/cli — @basementstudio/cli"]
|
|
10
|
+
CLI_BIN["bin/index.js<br/><i>CLI entry point</i><br/><i>basement command</i>"]
|
|
11
|
+
CLI_CREATE["src/commands/create.js<br/><i>orchestrates scaffolding</i>"]
|
|
12
|
+
CLI_ADD["src/commands/add-integration.js<br/><i>add CMS to existing project</i>"]
|
|
13
|
+
CLI_WORKTREE["src/commands/worktree.js<br/><i>git worktree management</i>"]
|
|
14
|
+
CLI_SANITY["src/commands/setup-sanity.js<br/><i>automated Sanity setup</i>"]
|
|
15
|
+
CLI_PKG["package.json<br/><i>depends on create-basement-app</i>"]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
subgraph CBA["packages/create-basement-app — @basementstudio/create-basement-app"]
|
|
19
|
+
CBA_INDEX["src/index.js<br/><i>public API barrel export</i>"]
|
|
20
|
+
|
|
21
|
+
subgraph MERGERS["src/mergers/"]
|
|
22
|
+
MERGER_INDEX["index.js<br/><i>injectLayer, injectIntegration</i>"]
|
|
23
|
+
MERGER_CONFIG["config.js<br/><i>CMS_CONFIG, LAYER_CONFIG</i>"]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
subgraph CONFIGS["src/configs/"]
|
|
27
|
+
ANIM_CONFIG["animations.js<br/><i>GSAP, Motion deps</i>"]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
subgraph TEMPLATES["templates/ — standalone Next.js projects"]
|
|
31
|
+
T_DEFAULT["default/<br/><i>84 files, base starter</i>"]
|
|
32
|
+
T_WEBGL["webgl/<br/><i>87 files, R3F + canvas</i>"]
|
|
33
|
+
T_WEBGPU["webgpu/<br/><i>84 files, alpha R3F deps</i>"]
|
|
34
|
+
T_EXPERIMENT["experiment/<br/><i>86 files, nav components</i>"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
subgraph INTEGRATIONS["integrations/ — CMS overlays"]
|
|
38
|
+
subgraph SANITY["sanity/"]
|
|
39
|
+
S_CONFIG["config.js<br/><i>deps, scripts, paths</i>"]
|
|
40
|
+
S_FILES["files/<br/><i>35 Sanity files</i>"]
|
|
41
|
+
S_MERGERS["mergers/<br/><i>layout, sitemap, check</i>"]
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
subgraph HOOKS["template-hooks/"]
|
|
46
|
+
H_CONFIG["config.js<br/><i>hook metadata + deps</i>"]
|
|
47
|
+
H_BATTERY["use-battery.ts"]
|
|
48
|
+
H_PERF["use-device-perf.ts"]
|
|
49
|
+
H_OBSERVER["use-intersection-observer.ts"]
|
|
50
|
+
H_MEDIA["use-media.ts"]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
PLUGINS["plugins/<br/><i>3 Biome Grit rules</i>"]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
%% Dependencies
|
|
57
|
+
CLI_BIN --> CLI_CREATE
|
|
58
|
+
CLI_BIN --> CLI_ADD
|
|
59
|
+
CLI_BIN --> CLI_WORKTREE
|
|
60
|
+
CLI_CREATE --> CBA_INDEX
|
|
61
|
+
CLI_CREATE --> S_CONFIG
|
|
62
|
+
CLI_CREATE --> H_CONFIG
|
|
63
|
+
CLI_ADD --> CBA_INDEX
|
|
64
|
+
CLI_ADD --> S_CONFIG
|
|
65
|
+
CBA_INDEX --> MERGER_INDEX
|
|
66
|
+
CBA_INDEX --> ANIM_CONFIG
|
|
67
|
+
MERGER_INDEX --> MERGER_CONFIG
|
|
68
|
+
MERGER_INDEX --> S_MERGERS
|
|
69
|
+
CLI_CREATE --> TEMPLATES
|
|
70
|
+
CLI_CREATE --> CLI_SANITY
|
|
71
|
+
|
|
72
|
+
%% Styling
|
|
73
|
+
classDef root fill:#1a1a2e,stroke:#e94560,color:#fff
|
|
74
|
+
classDef cli fill:#16213e,stroke:#0f3460,color:#fff
|
|
75
|
+
classDef cba fill:#0f3460,stroke:#533483,color:#fff
|
|
76
|
+
classDef template fill:#533483,stroke:#e94560,color:#fff
|
|
77
|
+
classDef integration fill:#e94560,stroke:#fff,color:#fff
|
|
78
|
+
classDef hook fill:#0f3460,stroke:#e94560,color:#fff
|
|
79
|
+
|
|
80
|
+
class ROOT root
|
|
81
|
+
class CLI cli
|
|
82
|
+
class CBA cba
|
|
83
|
+
class TEMPLATES,T_DEFAULT,T_WEBGL,T_WEBGPU,T_EXPERIMENT template
|
|
84
|
+
class INTEGRATIONS,SANITY integration
|
|
85
|
+
class HOOKS hook
|