Repository navigation
Serve GitHub data from a build-time snapshot and add "Your Ideas" page - #165
Open
stephenglass wants to merge 3 commits into
Open
stephenglass wants to merge 3 commits into
stephenglass wants to merge 3 commits into
Conversation
The site is a static export, so every visitor's browser called the GitHub API unauthenticated. At the venue everyone shares one Wi-Fi IP, which gets 60 requests per hour (10 per minute for search), so the issues and Contrib Champs pages stopped working during the session. - Add scripts/fetch-github-data.mjs, which fetches curated issues and merged contribfest PRs with one batched GraphQL query and writes public/data/*.json. The browser now only loads those same-origin files. - Run the snapshot in CD on every push, every 15 minutes, and on manual dispatch. A failed fetch fails the run, so Pages keeps the last good site. - Look issues up by number instead of by the contribfest label, so the page keeps working after the post-event label cleanup. - Show an availability status per issue (available, assigned, has PR, closed), filter to available issues by default, and point people to /ideas/ when few are left. - Add the /ideas/ page to help attendees shape their own ideas into suggestion issues, BEPs, or plugin proposals, with AI prompts that coach rather than write, and a summary of the Backstage AI Use Policy. - Centralize event settings in lib/event.ts, pin the unlock time to the venue's timezone, and add an organizer runbook. - Remove unused fetch code, papaparse, and the NEXT_PUBLIC_GITHUB_TOKEN setting, which would have exposed a token in the browser bundle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Stephen Glass <stephen@stephen.glass>
Hourly is enough between events. During the session, hosts can run the CD workflow manually for an immediate refresh. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Stephen Glass <stephen@stephen.glass>
Before an event the curated list is mostly closed issues, which makes the issues page hard to build and demo. Mock JSON files passed on the command line are now added alongside the real issues, and --no-github skips GitHub so the script runs without a token. - Mock entries only need repository, issueId, level, and title; availability, labels, assignees, and linkedPRs are optional with defaults. - Invalid entries fail with the file and index of the problem. - A mock with the same repo and issue number replaces the earlier entry, to simulate an issue being picked up. - mocks/issues.example.json covers every availability state, level, and repo. - Running with no arguments (what CD does) produces the same output as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Stephen Glass <stephen@stephen.glass>
This branch has not been deployed
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.
Why
Three goals for KubeCon NA 2026 (Salt Lake City, Nov 11):
contribfestoften get picked up before the event. Curation stays manual; the site now shows honestly what's still available and, when little is left, points people to bringing their own idea.What changed
GitHub data snapshot
scripts/fetch-github-data.mjsfetches curated issues and mergedcontribfestPRs with batched GraphQL queries (a few points per run) and writespublic/data/*.json. The browser only loads those same-origin files.mainhas already passed CI.yarn fetch-data mocks/issues.example.jsonadds made-up issues alongside the real ones, and--no-githubuses only mocks with no token needed. Seedocs/deployment.md.papaparse, andNEXT_PUBLIC_GITHUB_TOKEN(aNEXT_PUBLIC_value would be exposed in the browser bundle).Curated issues
/ideas/.Your Ideas page (
/ideas/)Event config and docs
lib/event.ts. The unlock time and displayed dates use the venue's time zone instead of the visitor's.docs/organizer-runbook.md(kickoff, curation and reservation comment, health check, event day, after the event).docs/deployment.mdno longer describes the old/contribfestsubpath.Heads-up on the curated list
The first snapshot run found that 60 of the 85 issues in
public/issues.csvare already closed. Only 18 are available, andcommunity-plugins#6118doesn't exist as an issue. The list needs refreshing before Nov 11; the runbook's health check (/issues/?admin=true, Availability: All) shows what to swap out.Testing
GITHUB_TOKEN=$(gh auth token) yarn fetch-datawrote 85 issues and 17 merged PRs.yarn tsc --noEmit,yarn lint, andyarn buildpass./issues/?admin=trueand/contrib-champs/make no requests to api.github.com, only to/data/*.json./ideas/: path chooser, notes saving across reloads, light and dark mode.main.🤖 Generated with Claude Code