This folder is the static showcase site for GraphCompose. It is plain HTML, CSS, JavaScript, and a generated JSON manifest, so GitHub Pages publishes it directly from the main repository with no build step.
index.html— the single-page showcase. Holds the hero, install snippets, feature/architecture sections, and the searchable gallery shell.styles.css— the visual system and responsive layout.examples.js— client script that fetches the manifest and renders the gallery (search, category filters, highlights strip, lightbox).examples.json— generated gallery manifest. Do not hand-edit it; it is rewritten byShowcaseSync(see below).assets/logo/— the showcase logo asset.showcase/pdf/<category>/<group>/…— generated PDF examples linked from the gallery.showcase/screenshots/<category>/<group>/…— PNG previews auto-rendered from those PDFs.
Older revisions of this doc referenced
docs/assets/screenshotsanddocs/assets/pdfplus a manual "copy the PDF, add a PNG, edit examples.json" flow. That is no longer accurate — previews and the manifest are generated underdocs/showcase/**byShowcaseSync.
The gallery is driven by code, not by hand-editing JSON. Source of truth:
examples/src/main/java/com/demcha/examples/support/ShowcaseMetadata.java.
-
Add the example
.javaunder the right category sub-package inexamples/src/main/java/com/demcha/examples/. -
Make it write its PDF via
ExampleOutputPaths.prepare(category, fileName)so the output lands under the matchingexamples/target/generated-pdfs/subfolder. -
Wire it into
GenerateAllExamples.main. -
Register a metadata entry in
ShowcaseMetadata.java(title, one-line description, search tags, source link) keyed by the generated 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 intodocs/showcase/pdf/…, rasterises a PNG intodocs/showcase/screenshots/…, and rewritesdocs/examples.json. -
Commit the regenerated
docs/showcase/**assets anddocs/examples.json.
- The displayed version lives only in
index.html(JSON-LDsoftwareVersion, the Maven Central artefact URL, the hero badge, and the Maven + Gradle install snippets). It does not inherit from the pom. scripts/cut-release.ps1flips all of those — plus the README and poms — to the release tag in the release commit, andVersionConsistencyGuardTestfails theverifygate if any of them drift out of sync with the librarypom.xml. Do not hand-bump the site version ahead of a release.- "View source" links resolve through
ShowcaseMetadata.GH_BASE, whichcut-release.ps1flips between/blob/develop(while developing) and/blob/v<tag>(at release) so the deployed site points at the exact source that produced each artefact.
The gallery uses fetch("examples.json"), which browsers block for local
file:// pages. Run any tiny static server from the repository root and open
the /docs/ path:
python -m http.server 8000
# then open http://localhost:8000/docs/Opening docs/index.html directly still renders everything except the
JS-driven gallery (the <noscript> static index lists every PDF as a
fallback). No build step is required.
Published from the main branch /docs folder (Settings → Pages → Deploy from
a branch → main / /docs). Live at: