Publish the catalogue as a page on GitHub Pages - #48
Merged
Conversation
samples and samples-controls each publish the question their corpus is actually asked - a learning path there, a search over 430 control ports here. This corpus is asked something else again, and neither page answers it: "my system is 7.50 and on-premise, what of this can I even run", and "is there a sample for WebSockets, and what do I set up first". Both are questions about the SYSTEM rather than about the sample, which is what this repository is made of. So web/ is a search over the catalogue with two facets - the system you have and the technology you came for - and every card carries what the sample needs from that system, its release floor, the class to start, its search terms and, where the class has one, its ABAP-Doc header, the fullest description this repository holds of a sample. No playground link, unlike the two sibling pages. The playground runs a class with no system behind it, and a system is precisely what every sample here requires: a Gateway service, a RAP business object, an APC channel, a launchpad. Each app would open there and then fail, so the cards link to the source, to the package README's "What you need" and to the one-package branch abapGit takes. No new source of truth: every fact is read out of what the repository already keeps - the scan behind SAMPLES.md (@summary, @Keywords, the ABAP-Doc header, DESCRIPT), .github/packages.json and the README's package table. Adding a sample or a package therefore needs no step for the page. The title rule the two catalogues share moves into the scan as sampleTitle( ), so it cannot drift; SAMPLES.md is byte-identical. web/apps.json is generated and not committed, so a sample pull request carries no diff of derived data and the page can never be staler than the tree. deploy-web regenerates and publishes it; check-web runs the same generator with --check on every pull request, which is what catches a package with no README row, a row that no longer parses, or an app in a directory that is no package - all three break the page without touching web/, and none of them shows before a deploy. Settings -> Pages -> Source has to be set to "GitHub Actions" once for the first deploy to serve anything. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CHNPdkwxjAfH3JxmteDiHt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
samplesandsamples-controlseach publish the question their corpus is actually asked — a learning path there, a search over 430 control ports here. This corpus is asked something else again, and neither page answers it:Both are questions about the system, not about the sample, which is what this repository is made of. So
web/is a search over the catalogue with two facets — the system you have and the technology you came for — at https://abap2ui5.github.io/samples-stack/.What is on it
@summary,@keywords, the ABAP-Doc header and the package text, which is whywebsocketfindssrc/07although the word is in none of its classes.?app_start=line with a copy button, its keywords as clickable chips, and — for the twelve classes that carry one — the ABAP-Doc header with its EML statements, the fullest description this repository holds of a sample.No playground link
Unlike on the two sibling pages. The playground runs a class with no system behind it, and a system is precisely what every sample here requires — a Gateway service, a RAP business object, an APC channel, a launchpad. Each app would open there and then fail, so the cards link to the source, to the package README's What you need, and to the one-package branch abapGit takes.
How it is built
No new source of truth: every fact is read out of what the repository already keeps — the scan behind
SAMPLES.md(@summary,@keywords, the ABAP-Doc header,DESCRIPT),.github/packages.jsonand the README's package table. Adding a sample or a package therefore needs no step for the page. The title rule the two catalogues share moves into the scan assampleTitle( )so it cannot drift;SAMPLES.mdis byte-identical.web/apps.jsonis generated and not committed, so a sample pull request carries no diff of derived data and the page can never be staler than the tree.deploy-webweb/as the Pages artefactcheck-web--checkon every pull request —npm run check:web, also part ofnpm run checkcheck-webis what catches a package with no README row, a row whose cells no longer parse, or an app in a directory that is no package. All three break the page without touchingweb/, and none of them shows up before a deploy, which happens after the merge.Verified
All node checks green (
check-overview,check-keywords,check-abapdoc,check-prose-names,check-samples-md,check-web). The page rendered in Chromium with no console errors, light and dark, 390–1440 px without horizontal scrolling; deep links, facet counts and the keyword chips check out. No ABAP is touched by this change.One manual step after merging
Settings → Pages → Source has to be set to GitHub Actions once, or the first deploy serves nothing.
🤖 Generated with Claude Code
https://claude.ai/code/session_01CHNPdkwxjAfH3JxmteDiHt
Generated by Claude Code