Skip to content

docs: publish a developer guide on GitHub Pages and optimize for search - #30

Merged
pierrejochem merged 1 commit into
mainfrom
docs/pages-developer-guide
Oct 4, 2026
Merged

pierrejochem merged 1 commit into
mainfrom
docs/pages-developer-guide

Conversation

@pierrejochem

Copy link
Copy Markdown
Owner

Problem

This repository exists to teach one thing — how to write a Speculum plugin — and that explanation lived only in the README. Nothing was indexable as a guide, there was no page to link anyone to, and sharing the repo produced a bare link preview.

Change

A four-page static site under docs/, built on the same stylesheet as the Speculum documentation so the two read as one project.

Page Covers
index.html What a plugin is, and the four steps by which the host discovers one
quickstart.html Released JAR vs. source build, the GitHub Packages token, deployment, picking a mirror-api version
module-anatomy.html Every file and what the host does with it: the ServiceLoader manifest, ModuleFactory, the lifecycle hooks, Compose Content(), the notification bus, the thin-JAR Gradle setup
settings-schema.html settingsSchema() end to end: the eight types, default vs. defaultConfig(), advanced, preview templates, and how to test a schema

The guide documents the real behaviour of this module and of mirror-api 1.3.0, including the traps worth naming — a typo in META-INF/services fails silently, compileOnly dependencies do not reach the test classpath, and a spec's default lies if it drifts from what the module code actually falls back to.

Search-engine groundwork

Every page carries a unique <title> and meta description, a canonical link, Open Graph and Twitter Card tags, and exactly one <h1>. index.html adds JSON-LD describing the project as SoftwareSourceCode and the guide as a TechArticle. robots.txt points at a sitemap.xml covering all four pages, and .nojekyll stops Pages reprocessing the output.

The 1200×630 Open Graph card is generated rather than borrowed, so previews say Example Module instead of showing Speculum's own artwork.

README

Now links the guide at the top and in a Documentation table, instead of growing further.

Verification

A validator over all four pages checks: balanced tags with nothing left unclosed, every required SEO tag present, exactly one <h1>, parseable JSON-LD, every <img> carrying alt, every internal link and every #fragment resolving to a real target, and the sitemap being well-formed and matching the page set. All four pass.

Rendered locally and reviewed at desktop and 390px: nav, cards, tables and code blocks all behave, and the mobile hamburger works.

After merge

Pages still has to be switched on for this repository — main, folder /docs. The site will be at https://pierrejochem.github.io/SpeculumExampleModule/.

The repository explained itself only through the README, which meant the one
thing it exists to teach — how to write a Speculum plugin — was not reachable
from a search engine, and link previews of it were bare.

Adds a four-page static site under docs/, built on the same stylesheet as the
Speculum documentation so the two read as one project:

- index.html          what a plugin is and how the host discovers one
- quickstart.html     the released JAR or a source build, then deployment
- module-anatomy.html every file in the project and what the host does with it
- settings-schema.html declaring options the admin console renders

Search-engine groundwork on every page: a unique title and meta description, a
canonical link, Open Graph and Twitter Card tags pointing at a generated 1200x630
card, and one h1. index.html also carries JSON-LD describing the project as
SoftwareSourceCode plus the guide as a TechArticle. robots.txt and sitemap.xml
cover all four pages, and .nojekyll keeps Pages from reprocessing the output.

The README now links the guide instead of growing further.
@pierrejochem
pierrejochem merged commit c6e6800 into main Oct 4, 2026
1 check passed
@pierrejochem
pierrejochem deleted the docs/pages-developer-guide branch October 4, 2026 12:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant