Developer guide
Repository map
What each folder in asc-shopify-src and its theme submodule contains, which parts are live, and how the npm workspaces fit together.
asc-shopify-src is an npm workspaces monorepo run with Turbo. The theme is a git submodule at theme/.
Top level
| Path | Contents | Status |
|---|---|---|
src/ | Workspace @repo/asc-modules. React booking form, storefront JavaScript, CSS and Tailwind. Webpack writes its output into theme/assets/ | Live |
theme/ | Submodule Conversion-Kings/asc-shopify-theme, workspace @repo/theme. The Shopify theme | Live |
google-cloud-api/ | Workspace @repo/google-cloud-api. Express version of the membership pass and saved children API | Replaced in June 2026 |
misc/ | Workspace @repo/misc, plus four workspaces under misc/zapier-scripts/. One-off scripts, data exports, Zapier code steps, Zoho function copies | Reference only |
documentation/ | Original Markdown guides and the membership pass diagram | Superseded by doc-site/ |
doc-site/content/ | These docs, as Fumapress content | Live |
assets/ | Screenshots used by documentation/ | Copied into doc-site/content/images/ |
mcps/ | MCP tool schema files for AI-assisted development | Not used by the build |
.husky/pre-commit | Formats and builds on every commit | Live |
.github/workflows/sync-live-changes.yml | Merges main into staging | Partly failing, see Deployment |
package.json, turbo.json | Workspaces and scripts | Live |
postcss.config.js | PostCSS plugin chain used by webpack | Live |
.prettierrc.json, .prettierignore, .editorconfig | Formatting | Live |
asc-layout.excalidraw, asc-layout.png | December 2024 system sketch | Out of date |
seo-urls.js | One-off generator for the SEO footer menu | Not used |
components.json | shadcn/ui settings. Its paths predate the move into src/ | Out of date |
.shopifyignore, .shopify/ | From before the theme became a submodule | Not used |
.vscode/ | Debug configuration for google-cloud-api/ | Out of date |
src
| Path | Contents |
|---|---|
src/webpack.config.js | Entries, output to ../theme/assets/, bundle splitting, build-time environment variables |
src/js/custom.js | Loaded on every page. Cart quantity and remove buttons, membership pass buttons, Hulk Forms relay to Zapier, video overlay |
src/js/camp-booking.js | Loaded on product pages. Loads Google Maps and mounts the booking form |
src/js/index.js | CSS-only entry. Imports every file in src/css/ except tw_out.css |
src/js/date-picker.js | Date range picker. Nothing on the site uses it at present |
src/components/ | React components for the booking form. ui/ holds shadcn/ui components |
src/components/models/ParticipantDetailsSchema.tsx | Booking form validation rules |
src/css/ | Component CSS and tw_in.css, the Tailwind entry with brand colour variables |
src/tailwind.config.js | Tailwind content paths, safelist and brand colours |
src/@types/zoho.ts | Copy of the Zoho integration's types. Only Club is used |
src/.env.example | Build-time variables |
src/webpack-css.config.js | Old CSS-only config with paths that no longer resolve |
theme
| Path | Contents |
|---|---|
theme/layout/theme.liquid | Layout for every page except products |
theme/layout/theme.product.liquid | Layout for product pages. Adds the booking form |
theme/templates/ | JSON templates. page.*.json for landing pages, product*.json for products, cart.json |
theme/sections/ | Sections. ASC sections are mostly prefixed asc- or named for their feature, the rest are from Shopify's Dawn theme |
theme/snippets/ | Snippets, including camp cards, menus and map data |
theme/assets/ | Built bundles from src/, hand-written JavaScript and vendored libraries |
theme/config/settings_schema.json | Theme settings. ASC groups are prefixed ASC - |
theme/config/settings_data.json | Current setting values. Also written by the theme editor |
theme/locales/en.default.json | Storefront text strings |
theme/shopify.theme.toml | Shopify CLI environments |
theme/.github/workflows/code-review.yml | AI pull request review |
Theme structure covers the theme in more detail.
Workspaces
| Workspace | Folder | Scripts used |
|---|---|---|
@repo/asc-modules | src | watch, webpack:prod, postcss, postcss:build |
@repo/theme | theme | theme-dev, theme-dev:no-sync, push:*, pull:* |
@repo/google-cloud-api | google-cloud-api | Legacy |
@repo/misc | misc | None |
@repo/confirmation-emails, @repo/form-submissions, @repo/membership-pass, @repo/zoho-integration | misc/zapier-scripts/* | build, legacy |
Most dependencies are declared in the root package.json and hoisted. src/components/ClubsAutocomplete.tsx imports lodash/debounce, which only resolves because @repo/misc depends on lodash. Add lodash to src/package.json before removing misc/.
All scripts are listed in npm scripts.
Related repositories
| Repository | Relationship |
|---|---|
Conversion-Kings/asc-shopify-theme | The theme submodule |
Conversion-Kings/asc-api-membership-pass | Service the storefront calls for saved children and passes |
Conversion-Kings/asc-api-src-zoho-integration | Service Zapier and the booking form call |
Conversion-Kings/asc-camp-sign-in-tool | Separate camp attendance app that reads Zoho. No dependency in either direction |