Interactive revision site for COM00050H — AI Problem Solving with Search and Logic at the University of York.
No generative AI is used in-page; everything runs client-side. Safe to use on an exam-restricted machine (no API calls).
Five modules, each with explanatory content and step-through visualisers:
Cross-cutting features:
npm install
npm run dev # starts dev server on http://localhost:5173
npm run build # production build → dist/
npm run preview # serve the built dist/
aips-revision (or any name).main — the workflow in .github/workflows/deploy.yml builds with BASE_PATH=/<repo-name>/ and deploys.The Vite config reads BASE_PATH from env; the workflow sets it from the repo name automatically.
Svelte 5 (runes) · Vite · TypeScript · Tailwind CSS · KaTeX (math) · MiniSearch (search) · marked (markdown).
All visualisers are hand-rolled SVG/HTML — no heavy chart libraries.
src/
├─ App.svelte # app shell (sidebar + topbar + router-view)
├─ main.ts
├─ app.css # Tailwind + KaTeX + component classes
└─ lib/
├─ router.ts # hash-based router
├─ markdown.ts # marked + KaTeX preprocess
├─ search.ts # MiniSearch index (fuzzy + regex)
├─ glossary.ts
├─ types.ts # content schema
├─ content/
│ ├─ index.ts
│ ├─ search.ts
│ ├─ adversarial.ts
│ ├─ csp.ts # incl. Essence Prime, modelling concepts
│ ├─ logic.ts
│ └─ sat.ts
├─ pages/ # Home, TopicPage, Flashcards, Glossary, Cheatsheet, Complexity, Pitfalls, Visualizers, PastPapers, NotFound
├─ components/ # Sidebar, TopBar, RouterView, CommandPalette, VizRenderer, Md, Callout
└─ visualizers/ # SearchGrid, MinimaxTree, MCTSTree, AC3, NQueens, MinConflicts, EssencePrime, TruthTable, Resolution, HornChain, DPLL, CDCL, WalkSAT, CNFEncoder
Each topic is a TS object in src/lib/content/*.ts with sections: { id, title, blocks: [...] }. Blocks are markdown ({ kind: 'md', body }), callouts ({ kind: 'callout', variant: 'pitfall' | 'keyfact' | 'whatif' | 'nightingale', body }) or visualisers ({ kind: 'viz', viz: 'SearchGrid', props: {...} }).
Math: $...$ inline and $$...$$ display, KaTeX-rendered.
| Key | Action |
|---|---|
Ctrl/Cmd + K |
Open command palette |
/ |
Open command palette (outside inputs) |
↑ ↓ |
Navigate palette |
↵ |
Open selected result |
Esc |
Close palette |
| (Flashcards) Space | Reveal answer |
| (Flashcards) 1–4 | Fail / Hard / Good / Easy |