feat(roadmap): add roadmap page with json data loading logic with sim…#215
feat(roadmap): add roadmap page with json data loading logic with sim…#215adrianboros wants to merge 58 commits into
Conversation
…ilar UI like linear custom view
✅ Deploy Preview for developers-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
…ed to output: "static"
✅ Deploy Preview for interledger-org-developers ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
…main SSR redirect
There was a problem hiding this comment.
Pull request overview
Adds a new /developers/roadmap page that renders an interactive, Linear-style timeline of Interledger projects. Roadmap data is produced by two new Netlify functions (sync on a 12-hour schedule and sync-now for manual, token-protected refreshes) that query the Linear GraphQL API, build a snapshot, and store it in Netlify Blobs; the roadmap page reads that snapshot at request time and renders a RoadmapBoard Astro component.
Changes:
- New roadmap UI:
src/pages/roadmap.astro,src/layouts/RoadmapLayout.astro, and a largesrc/components/RoadmapBoard.astro(timeline grid, milestones, mobile toggle). - New Linear data pipeline:
src/linear/client.ts,src/linear/build-snapshot.ts, types insrc/types/roadmap.ts, plus Netlify Functionssync.mts(scheduled) andsync-now.mts(HTTP, bearer-token protected). - Build/runtime wiring:
@astrojs/netlifyadapter added inastro.config.mjswithoutput: 'static'; new dependencies (@astrojs/netlify,@linear/sdk,@netlify/blobs,@netlify/functions); netlify.toml gains a roadmap redirect, dev port, andLINEAR_CUSTOM_VIEW_IDenv across contexts; new.env.exampleand.gitignoreentries.
Reviewed changes
Copilot reviewed 13 out of 15 changed files in this pull request and generated 10 comments.
Show a summary per file
| File | Description |
|---|---|
| src/pages/roadmap.astro | New SSR roadmap page reading snapshot from Netlify Blobs. |
| src/layouts/RoadmapLayout.astro | New full-page layout (header/footer + meta) for the roadmap page. |
| src/components/RoadmapBoard.astro | Large Gantt-style timeline component with mobile/quarter view toggle. |
| src/types/roadmap.ts | Shared TypeScript types for snapshot, board, and API project/team shapes. |
| src/linear/client.ts | Initialises LinearClient from LINEAR_API_KEY, throws if missing. |
| src/linear/build-snapshot.ts | GraphQL queries + retry/pagination logic that builds the roadmap snapshot. |
| netlify/functions/sync.mts | Scheduled function (every 12h) that rebuilds the snapshot and purges CDN. |
| netlify/functions/sync-now.mts | HTTP /api/sync function gated by API_SECRET bearer token. |
| src/components/pages/FoundationHeader.astro | Raises the site header z-index to 20 so it stacks above the sticky board header. |
| astro.config.mjs | Adds Netlify adapter and sets output: 'static'. |
| package.json | Adds Netlify/Linear runtime dependencies. |
| netlify.toml | Adds dev port, roadmap redirect, and LINEAR_CUSTOM_VIEW_ID env per context. |
| .env.example | Documents new required env variables. |
| .gitignore | Ignores .netlify/ and deno.lock. |
|
I agree with copilot about cleaning up the env variables. I always like env variables to be clear upfront and to fail early if they're missing. It's also easier for DevOps if they're all sorted in one place. If we filter for prod vs local dev we can also allow open source contributors to contribute and build the site locally by passing the development mode flag without needing the variables. We can add this to the README Then we can handle everything in one place and of course include an example.env file that is up to date and clear as well. |
|
Can we keep the header row and table body scrolling horizontally together? Screencast.from.2026-05-19.09-42-48.mp4 |
…tSync from snapshot
…ilar UI like linear custom view
New .env variable
LINEAR_API_KEY- linear API KEYLINEAR_CUSTOM_VIEW_ID- the custom view id from linear that shows the public roadmapAPI_SECRET- a secret API KEY generated by us that can be used in endpoint to refresh roadmap data and clear cacheNETLIFY_API_TOKEN- netlify api token that are used to purge CDN cache of the /developers/roadmap pagePR Checklist
Fixes #123)bun run formatto ensure code is properly formattedbun run lintpasses without errorsSummary
Fixes INTORG-636