Skip to content

Development

Project structure

src/
  parser/       JSON normalization
  renderer/     HTML generation
  validator/    schema validation and advisory warnings
  utils/        markdown, theme, and helper logic
  app.js        browser runtime, audit, and delivery modes
  index.js      Node-facing entry point
examples/       sample decks and assets
schema/         JSON schema contract
scripts/        validate / present / export entry points (each exports main())
bin/            apb.js, the bunx/npx CLI dispatcher over scripts/
docs/           MkDocs Material site

CLI entry point

bin/apb.js is the apb command declared in package.json's bin field. It dispatches validate / present / export to the main() exported from the matching scripts/*.js, so the bunx/npx path and the npm run scripts share one implementation. vite is a runtime dependency (not a devDependency) because present needs it after a production-only bunx install. When adding a subcommand, export its main(argv) from a script and register it in the bin/apb.js dispatch table.

Core commands

npm install
npm run dev
npm run build
npm test
npm run validate -- examples/hello-world.json --json
npm run validate:examples
npm run docs:serve
npm run docs:build

CI

Current GitHub Actions cover:

  • Node validation, tests, example validation, and production build
  • typo checking
  • docs site build with MkDocs Material

Documentation maintenance

When behavior changes, update the docs in the same pull request if it affects:

  • JSON schema or authoring rules
  • validation codes or suggestions
  • agent-facing browser globals
  • presentation, presenter, or audience behavior
  • keyboard shortcuts or settings UI