The static GitHub Pages site for GraphCompose — plain HTML, CSS, JavaScript,
and a generated JSON manifest, served directly with no build step. It lives
outside docs/ (which is documentation only) so the two never tangle.
index.html— single-page showcase: hero, install snippets, feature / architecture sections, and the searchable gallery shell.styles.css— visual system and responsive layout.examples.js— client script that fetches the manifest and renders the gallery.examples.json— generated gallery manifest. Do not hand-edit it; it is rewritten byShowcaseSync(see below).robots.txt,sitemap.xml— SEO.assets/logo/— site logo. (assets/pdf+assets/screenshotsare legacy landing previews, superseded byshowcase/; safe to prune.)showcase/pdf/<category>/<group>/…— generated example PDFs.showcase/screenshots/<category>/<group>/…— PNG previews of those PDFs.
Driven by code, not hand-edited JSON. Source of truth:
examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java.
-
Add the example under
examples/src/main/java/com/demcha/examples/, writing its PDF viaExampleOutputPaths.prepare(category, fileName). -
Wire it into
GenerateAllExamples.main. -
Register a metadata entry in
ShowcaseMetadata.javakeyed by the PDF basename. -
Regenerate, then sync:
./mvnw -f examples/pom.xml exec:java -Dexec.mainClass=com.demcha.examples.GenerateAllExamples ./mvnw -f examples/pom.xml exec:java -Dexec.mainClass=com.demcha.examples.support.ShowcaseSync
ShowcaseSynccopies each PDF intoweb/showcase/pdf/…, rasterises a PNG intoweb/showcase/screenshots/…, and rewritesweb/examples.json. -
Commit the regenerated
web/showcase/**+web/examples.json.
- The displayed version lives only in
index.html(JSON-LDsoftwareVersion, the Maven Central URL, the hero badge, and the Maven + Gradle snippets) — it does not inherit from the pom.scripts/cut-release.ps1flips it on release andVersionConsistencyGuardTestfails theverifygate if it drifts. - "View source" links resolve through
ShowcaseMetadata.GH_BASE, whichcut-release.ps1flips between/blob/developand/blob/v<tag>at release.
Published to GitHub Pages by .github/workflows/deploy-web.yml (GitHub Actions),
which uploads this web/ folder on pushes to main. Pages must be set to
Settings → Pages → Source: GitHub Actions — that one-time switch replaced the old
branch-deploy from /docs when the site moved out of docs/.
Live: https://demchaav.github.io/GraphCompose/
The gallery uses fetch("examples.json"), which browsers block over file://.
Run a static server from this folder:
python -m http.server 8000 # then open http://localhost:8000/