How s3dfx-cyber/gsoc-org-finder- works
Purpose and Entry Points
GSoC 2026 Org Finder is a static, browser-first directory for discovering and comparing GSoC organizations by tags, domain, competition, activity, and beginner issues. The primary page is index.html; landing.html is a separate landing entry. Client bootstrapping and interaction wiring live in src/js/app.js, with presentation in src/styles.css.
Organization Catalog and Local Data
The application’s core domain model is the curated organization catalog, represented by src/js/org.js. It is supplemented by generated/static JSON artifacts for issue data, organization statistics, mentor data, and UI summaries:
• data/issues.json
• data/org-stats.json
• data/ui-summary.json
This boundary keeps primary discovery usable without live API availability while allowing data-refresh automation to update derived files.
Browser Application Layer
src/js/app.js owns the event-driven UI lifecycle: search, filtering, sorting, card rendering, modal behavior, compare selection, keyboard navigation, theme/preferences, and safe dynamic DOM rendering. It composes specialized feature modules:
• src/js/githubAnalyzer.js
• src/js/recommender.js
• src/js/recommendation-ui.js
User interactions transform catalog records plus local UI state into organization cards, detail dialogs, and a comparison view. Preferences and local analytics remain in browser localStorage; there is no account or central user database.
Matching and Recommendation Pipeline
Recommendation behavior is separated from base rendering. src/js/skillExtractor.js normalizes/extracts user skill context, while src/js/recommender.js scores organizations using skills, tags, competition, and experience-related signals. src/js/recommendation-ui.js presents the results. This makes the recommendation pipeline a client-only decision boundary: it consumes local catalog data and does not require the GitHub service.
GitHub Data Boundary
Live repository health and Good First Issue data flow from the browser through the Vercel Edge endpoint api/github.js, which proxies GitHub’s API and prevents exposing GITHUB_TOKEN to clients. It supports stats, Good First Issue counts, and bounded issue lists, with one-hour in-memory Edge caching. src/js/githubAnalyzer.js consumes this endpoint and enriches displayed organization data. GitHub availability/rate limits are isolated from baseline catalog browsing.
Offline and Deployment Runtime
The frontend is vanilla HTML/CSS/JavaScript with no framework, bundler, or application server. Vercel hosts static assets and runs the Edge Function, configured through vercel.json; .env.example documents required environment setup. sw.js provides offline resilience, using stale-while-revalidate for static assets and network-first behavior for API/JSON data. manifest.json supports installable/PWA-oriented browser metadata.
Data Maintenance and Governance Automation
Node scripts under agent/scripts/ maintain generated datasets, validate organization URLs and mentor data, and collect GitHub-derived inputs; notable stages include agent/scripts/fetch-issues.js, agent/scripts/generate-ui-cache.js, and agent/scripts/validate-generated-data.js. A separate Python TENET review agent resides in agent/tenet_agent/tenet_review.py. GitHub Actions in .github/workflows/ implement contribution intake, staged PR governance, mentor assignment/review tracking, and repository moderation; these are operational infrastructure rather than runtime application dependencies.
Main entry points: app.js UI lifecycle · github.js GitHub Edge proxy · index.html Directory entry · recommender.js Recommendation scoring
Components 20
Browser App
- Directory entry · Primary organization discovery page.
index.html - Landing entry
landing.html - UI lifecycle · Owns search, filters, rendering, compare, modal, and preferences.
src/js/app.js - Presentation
src/styles.css - Skill extraction
src/js/skillExtractor.js - Recommendation scoring · Scores organizations from skills and catalog signals.
src/js/recommender.js - Recommendation UI
src/js/recommendation-ui.js - GitHub analyzer · Enriches displayed organizations with live health and issue data.
src/js/githubAnalyzer.js - Offline runtime · Uses stale-while-revalidate for assets and network-first for API/JSON.
sw.js - Browser preferences · Stores preferences and local analytics only.
Catalog Data
- Organization catalog · Curated source for baseline discovery.
src/js/org.js - Issue data
data/issues.json - Organization stats
data/org-stats.json - UI summaries
data/ui-summary.json
GitHub Boundary
- GitHub Edge proxy · Protects token and caches GitHub responses for one hour.
api/github.js - GitHub API
- Vercel deployment · Hosts static assets and executes the Edge function.
vercel.json
Maintenance & Governance
- Dataset pipeline · Fetches issues, generates UI cache, and validates generated data.
- TENET review agent
agent/tenet_agent/tenet_review.py - PR governance · Handles contribution intake, review tracking, and moderation.
Connections 25
- Directory entry → UI lifecycle: boots
- Landing entry → UI lifecycle: enters directory UI
- UI lifecycle → Presentation: presented by
- UI lifecycle → Organization catalog: browses
- UI lifecycle → Issue data: uses local issue data
- UI lifecycle → Organization stats: uses local stats
- UI lifecycle → UI summaries: uses summaries
- UI lifecycle → Browser preferences: persists preferences
- UI lifecycle → Skill extraction: collects skill context
- Skill extraction → Recommendation scoring: normalized skills
- Organization catalog → Recommendation scoring: organization signals
- Recommendation scoring → Recommendation UI: ranked results
- Recommendation UI → UI lifecycle: renders into UI
- UI lifecycle → GitHub analyzer: requests enrichment
- GitHub analyzer → GitHub Edge proxy: stats and issues
- GitHub Edge proxy → GitHub API: proxied API calls
- Offline runtime → Directory entry: caches static assets
- Offline runtime → GitHub Edge proxy: network-first API
- Vercel deployment → Directory entry: serves static app
- Vercel deployment → GitHub Edge proxy: runs
- Dataset pipeline → Issue data: refreshes
- Dataset pipeline → UI summaries: generates
- Dataset pipeline → Organization stats: updates
- PR governance → Dataset pipeline: orchestrates maintenance
- PR governance → TENET review agent: uses review automation