How gigasandwich/giga-roadmap works
This is a student-facing academic-pathway roadmap: users choose a country, explore degree-to-career graph paths, and can edit and submit graph contributions. The graph includes country data loading, interactive exploration, graph editing and change summaries, authenticated contribution submission, and GitHub PR plus Google Sheets tracking. The README also documents a public, contributor-modifiable dataset and filtered detail views; the tree shows graph exploration and editing, though filter implementation details were not sampled. Edges are limited to calls or data flow shown in excerpts, SOURCE INDEX references, or README claims; unsampled subsystems are represented only where their role and path are supported.
Main entry points: ContributionGraph.tsx Graph editor · route.ts Contribution API · contribution.ts PR creation · data.ts Country and graph data
Components 20
Roadmap experience
- Country roadmap page
web/app/country/[country]/page.tsx - Country and graph data
web/lib/graph/data.ts - Graph exploration view
web/app/country/[country]/ExplorationGraph.tsx - Country registry
web/lib/countries.ts
Graph capabilities
- Exploration controls
web/hooks/graph/exploration/useExplorationView.ts - Exploration sidebar
web/components/graph/sidebar/ExplorationSidebar.tsx - Graph node model
web/lib/graph/nodes.ts - Change summaries
web/lib/graph/diff.ts
Contribution workflow
- Contribution page
web/app/country/[country]/contribute/page.tsx - Graph editor
web/app/country/[country]/contribute/ContributionGraph.tsx - Editing state and persistence
web/hooks/graph/contribution - Change review
web/components/graph/ReviewChangeDialog.tsx - Contribution API
web/app/api/contributions/route.ts
External integrations
- Authentication
web/lib/auth.ts - PR creation
web/lib/github/contribution.ts - GitHub
- Contribution tracking
web/lib/google/sheet/append.ts - Contributor PR lookup
web/lib/google/sheet/read.ts - Google Sheets
Other components
- Student / contributor
Connections 24
- Student / contributor → Country roadmap page: chooses country
- Country roadmap page → Country and graph data: loads graph
web/app/country/[country]/page.tsx - Country and graph data → Country registry: validates country
web/lib/graph/data.ts - Country roadmap page → Graph exploration view: renders
web/app/country/[country]/page.tsx - Graph exploration view → Exploration controls: uses controls
web/app/country/[country]/ExplorationGraph.tsx - Graph exploration view → Exploration sidebar: renders
web/app/country/[country]/ExplorationGraph.tsx - Exploration controls → Graph node model
- Student / contributor → Contribution page: opens editor
- Contribution page → Graph editor: renders
web/app/country/[country]/contribute/page.tsx - Graph editor → Editing state and persistence
- Graph editor → Change review
- Graph editor → Change summaries
- Graph editor → Contribution API: submits changes
- Contribution API → Authentication: checks session
web/app/api/contributions/route.ts - Contribution API → PR creation: creates PR
web/app/api/contributions/route.ts - PR creation → GitHub: writes branch and PR
web/lib/github/contribution.ts - Contribution API → Contribution tracking: logs submission
web/app/api/contributions/route.ts - Contribution tracking → Google Sheets: appends row
web/lib/google/sheet/append.ts - Contribution API → Contributor PR lookup: looks up PRs
web/app/api/contributions/route.ts - Contributor PR lookup → Google Sheets
- PR creation → Country registry: resolves country name
web/lib/github/contribution.ts - PR creation → Country and graph data: resolves data folder
web/lib/github/contribution.ts - Country and graph data → Graph node model: sanitizes nodes
web/lib/graph/data.ts - Change summaries → Graph node model: formats node names
web/lib/graph/diff.ts