AI agent entry point. Human readers: start with README.md and docs/.
Static slide generator for APHGames (NI-APH) courses. Pug templates + Reveal.js runtime, built with Parcel v1 and Node preprocessors for code snippets (Prism) and equations (MathJax). Output is static HTML in build/. No backend, no database, no test suite.
- This file (quick context)
- docs/ai-onboarding.md (agent workflow)
- docs/architecture.md (system design)
- docs/project-structure.md (where files live)
- docs/development-workflow.md (commands)
npm install
npm run generate-index # after deck add/rename — NOT in dev script
npm run dev # http://localhost:1112/index.html
npm run build # production output → build/| Layer | Path | Rule |
|---|---|---|
| Decks | slides/view/*.pug |
Indexable entry points only |
| Chapters | slides/view/chapters/ |
Included fragments — not indexed |
| Mixins | slides/view/mixins/ |
Reuse before inventing layout |
| Assets | slides/assets/<topic>/ |
Co-locate media with topic |
| Generated | *_generated/ |
Never edit — regenerate via copydata |
| Build | scripts/ |
Node CommonJS (except reveal-setup.js) |
| Output | build/ |
Gitignored — do not commit |
- Edit chapter Pug content and assets
- Add snippets to
snippets/, equations toequations/ - Add decks with metadata + matching icon SVG
- Extend mixins and themes following existing patterns
remove-unused-pics.js(deletes unreferenced images)- Upgrading Parcel / changing bundler
- Bulk asset deletion or reorganization
- Editing generated
*_generated/folders
// GROUP=Lectures
// COURSE=APH
// NAME=Games
// LOCALE=en
// ORDER=1.1Icon required: slides/icons/<deck_basename>.svg
| Goal | Location |
|---|---|
| New deck | slides/view/<name>.pug + icon |
| New chapter | slides/view/chapters/<topic>.pug |
| New layout | slides/view/mixins/ |
| New theme | slides/themes/ |
| Snippet language | scripts/process-snippets.js |
| Reveal plugin | slides/plugins/ + reveal-setup.js |
Update docs when changing:
docs/architecture.md— structure, data flow, scriptsdocs/project-structure.md— folders, namingdocs/development-workflow.md— commands, workflowsdocs/prd.md— scope/capabilities- This file — if agent entry points or boundaries change
| Problem | Location |
|---|---|
| No automated tests | Entire repo |
| README port wrong (1234 vs 1112) | README.md (fixed) |
| License mismatch MIT vs BSD | package.json vs LICENSE |
| Missing backgrounds | tree.png, marioworld.jpg, minecraft_blocks.png |
| Async race in equations | scripts/process-equations.js |
| Fragile snippet processor | scripts/process-snippets.js (TODO in source) |
| Parcel v1 unmaintained | package.json |
generate-index not in dev |
package.json scripts |
Unknown CATEGORY attribute |
lecture_org_cs.pug logs warning — likely typo for GROUP |
Always run npm run build before marking work complete. If decks changed, run npm run generate-index first.
- GitHub Release zip is the CI deliverable; aphgames.io deployment is external
- Slide assets (images) are license-restricted separately from code (see README)