No description
  • JavaScript 92.8%
  • Nix 5.1%
  • Shell 2%
  • SCSS 0.1%
Find a file
stefan burke fcb9c88b44
Fix submodule-dependent install and add dev quality-of-life improvements (#21)
The @chobble/js-toolkit devDependency resolves from the chobble-template
git submodule (file:./chobble-template/packages/js-toolkit). On a fresh
checkout the submodule is empty, so `bun install` fails with
"ENOENT: failed opening cache/package/version dir for package
@chobble/js-toolkit".

Changes:
- Add a SessionStart hook (.claude/) that initialises the submodule and
  runs `bun install`, so web sessions and fresh checkouts work out of the box
- prepare-dev: reuse the in-repo chobble-template submodule when present so
  build/serve/test work offline without a redundant network clone
- utils: fix `shell()` (`sh -- -c` -> `sh -c`); the stray `--` broke
  find.deleteByExt, leaving stale .md files in the dev build
- Pin biome to 2.3.11 in the lint scripts to match the config schema and
  ignore the template submodule's nested config, so linting is reproducible
- Apply the resulting biome formatting fix in scripts/utils.js
- README: correct the build/deploy docs (Bunny CDN, _site/ output, Bun +
  submodule local-dev steps) which referenced a nonexistent ./bin/build
- .gitignore: allow .claude/settings.json and .claude/hooks to be committed


Claude-Session: https://claude.ai/code/session_012VkoyaCFwvJpzSPFU4DGxS

Co-authored-by: Claude <noreply@anthropic.com>
2026-06-29 12:24:35 +01:00
.claude Fix submodule-dependent install and add dev quality-of-life improvements (#21) 2026-06-29 12:24:35 +01:00
.github/workflows Use shared build 2026-06-29 12:04:54 +01:00
.image-cache Do everything in the Forgejo actions 2025-04-09 00:14:14 +00:00
_data Add Instagram post scraper action (#16) 2026-04-17 15:16:30 +01:00
chobble-template@c655c5b87f Integrate @chobble/js-toolkit for code quality and FP utilities (#10) 2026-01-19 23:37:30 +00:00
css Rename _scss to css 2025-08-13 14:40:12 +01:00
pages Update example pages and .pages.yml for chobble-template (#20) 2026-06-24 14:34:33 +01:00
scripts Fix submodule-dependent install and add dev quality-of-life improvements (#21) 2026-06-29 12:24:35 +01:00
.envrc Switch to pnpm 2025-12-26 15:12:22 +00:00
.gitignore Fix submodule-dependent install and add dev quality-of-life improvements (#21) 2026-06-29 12:24:35 +01:00
.gitmodules Integrate @chobble/js-toolkit for code quality and FP utilities (#10) 2026-01-19 23:37:30 +00:00
.jscpd.json Integrate @chobble/js-toolkit for code quality and FP utilities (#10) 2026-01-19 23:37:30 +00:00
.pages.yml Update example pages and .pages.yml for chobble-template (#20) 2026-06-24 14:34:33 +01:00
biome.json Fix submodule-dependent install and add dev quality-of-life improvements (#21) 2026-06-29 12:24:35 +01:00
bun.lock Integrate @chobble/js-toolkit for code quality and FP utilities (#10) 2026-01-19 23:37:30 +00:00
bunfig.toml Integrate @chobble/js-toolkit for code quality and FP utilities (#10) 2026-01-19 23:37:30 +00:00
CLAUDE.md Integrate @chobble/js-toolkit for code quality and FP utilities (#10) 2026-01-19 23:37:30 +00:00
flake.nix Add update-scripts 2026-01-27 17:01:56 +00:00
package.json Fix submodule-dependent install and add dev quality-of-life improvements (#21) 2026-06-29 12:24:35 +01:00
README.md Fix submodule-dependent install and add dev quality-of-life improvements (#21) 2026-06-29 12:24:35 +01:00

Chobble Client Site Builder

Quick static site generator that combines the Chobble Template with your content.

Quick Start

  1. Add your content - Edit markdown files and images in the relevant folders
  2. Push to GitHub - The site builds automatically via GitHub Actions
  3. Deploy happens automatically - Site deploys to Bunny CDN (staging for branches, production for main)

What Goes Where

The .pages.yml defines all your content types:

  • pages/ - Static pages with navigation
  • news/ - Blog posts with dates
  • products/ - Shop items with prices and Etsy links
  • categories/ - Product categories
  • team/ - Team member profiles
  • reviews/ - Customer testimonials
  • events/ - Upcoming events
  • menus/, menu-categories/, menu-items/ - Restaurant menu system
  • snippets/ - Reusable content bits
  • images/ - All your images

How It Works

When you push to GitHub:

  1. GitHub Actions merges your content with the template
  2. Builds the static site with Eleventy
  3. Deploys to Bunny CDN

Configuration

Set these GitHub secrets for your repo:

  • BUNNY_ACCESS_KEY, BUNNY_PRODUCTION_* / BUNNY_STAGING_* (storage zone name, password, pull zone ID) - For deployment
  • FORMSPARK_ID - For contact forms (optional)
  • BOTPOISON_PUBLIC_KEY - For spam protection (optional)
  • INDEXNOW_KEY - For IndexNow search submission (optional)
  • NTFY_TOPIC - For build-failure notifications (optional)

Local Development

This project uses Bun. The Chobble Template is vendored as the chobble-template git submodule, which provides the @chobble/js-toolkit dependency and the Eleventy build.

git submodule update --init   # populate chobble-template (first checkout only)
bun install                   # install dependencies
bun run serve                 # dev server with hot reload
bun run build                 # build the site into _site/
bun run test                  # run the template test suite

Cloning with git clone --recurse-submodules initialises the submodule for you. If bun install fails with ENOENT ... @chobble/js-toolkit, the submodule hasn't been checked out yet - run the git submodule update --init step above.