Skip to content

feat(grants): add grant applicant showcase page and featured strip - #139

Open
sanusishafii989 wants to merge 3 commits into
wraith-protocol:developfrom
sanusishafii989:develop
Open

feat(grants): add grant applicant showcase page and featured strip#139
sanusishafii989 wants to merge 3 commits into
wraith-protocol:developfrom
sanusishafii989:develop

Conversation

@sanusishafii989

Copy link
Copy Markdown

Add /grants/showcase route with filterable card grid of grant-funded
projects. Filters for wave and status persist via URL query params
(useSearchParams) so browser back/forward navigation works seamlessly.

  • Create src/data/grant-showcase.json with 5 project entries
  • Add filterOptedOutContributors utility (case-insensitive opt-out)
  • Create GrantShowcase page with SEO meta tags and semantic HTML
  • Create FeaturedGrantShowcase strip component (opt-out aware)
  • Embed featured strip on Home page and /grants page
  • Add i18n translations (en + es) for all new strings
  • Add /grants/showcase to sitemap knownRoutes

Closes #132

Screenshot (493)

@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

@sanusishafii989 is attempting to deploy a commit to the truthixify's projects Team on Vercel.

A member of the Team first needs to authorize it.

@drips-wave

drips-wave Bot commented Aug 25, 2026

Copy link
Copy Markdown

@sanusishafii989 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@truthixify

Copy link
Copy Markdown
Contributor

Thanks @sanusishafii989. Only src/pages/Blog.tsx conflicts, from #136 landing reading-time and the TOC. The showcase page, data file, and i18n additions are all clean.

git fetch origin
git rebase origin/develop

Your Blog.tsx change is small so the resolution should be quick. Note that #137, #138 and #140 also queue on this file, so rebasing sooner rather than later is worth it.

Add /grants/showcase route with filterable card grid of grant-funded
projects. Filters for wave and status persist via URL query params
(useSearchParams) so browser back/forward navigation works seamlessly.

- Create src/data/grant-showcase.json with 5 project entries
- Add filterOptedOutContributors utility (case-insensitive opt-out)
- Create GrantShowcase page with SEO meta tags and semantic HTML
- Create FeaturedGrantShowcase strip component (opt-out aware)
- Embed featured strip on Home page and /grants page
- Add i18n translations (en + es) for all new strings
- Add /grants/showcase to sitemap knownRoutes

Closes wraith-protocol#132
Add a reusable <Seo> component in src/utils/seo.tsx that emits canonical
URLs, hreflang alternates (en, es, x-default), Open Graph, and Twitter
Card metadata on every page. Future pages inherit correct SEO by simply
dropping in <Seo title=... description=... />.

- Create src/utils/seo.tsx with Seo component (uses useLocation for
  self-referencing canonical + locale-aware hreflang)
- Add /es/* locale-prefixed routes in App.tsx via LocaleSetter wrapper
- Audit all 18 pages: every route now has title, description, canonical,
  hreflang, og:*, and twitter:* metadata
- Replace ad-hoc Helmet blocks on About, Blog, Careers, Ecosystem,
  GrantShowcase, Stellar with centralized Seo component
- Add SEO metadata to 12 pages that had none: Faq, Privacy, Newsletter,
  UseCases, Roadmap, Grants, CaseStudies, Contributors, Vitals, NotFound,
  Press, Home
- Add /es/* routes to sitemap knownRoutes

Closes wraith-protocol#125
Prettier 3.9.6 (local npm install) formatted the FormState union type
inline, but 3.8.2 (pinned in pnpm-lock.yaml for CI) breaks it across
lines. This caused format:check to fail on CI.
@sanusishafii989

Copy link
Copy Markdown
Author

Thanks @truthixify! Rebased onto latest develop — Blog.tsx conflict from #136 is resolved. Kept the max-w-5xl container from the TOC PR and swapped the Helmet block for the <Seo> component. CI should be green now.

@truthixify

Copy link
Copy Markdown
Contributor

Heads up: this went conflicted a few minutes ago because #142, #143 and #146 landed on develop. It was mergeable right before that, so nothing is wrong with your work.

git fetch origin
git rebase origin/develop

and it should be good to go.

@truthixify

Copy link
Copy Markdown
Contributor

I tried to rebase both of your PRs and got partway before stopping. Nothing was pushed, your branches are untouched.

First, the thing causing most of the pain: #139 and #145 are the same branch lineage. Your fork's develop carries all three commits:

72fdad4 fix: reformat Newsletter.tsx with prettier
9444e04 feat(seo): add hreflang tags, canonical URLs, and central Seo helper   <- this is #145
a5fab78 feat(grants): add grant applicant showcase page and featured strip     <- this is #139

So #139 is not just the grants showcase, it also contains the entire hreflang change. That is why the two PRs conflict with each other and why #139 shows 27 files for what should be a single page.

The grants commit itself rebases cleanly. I resolved it here: develop added a grantsHowTo JSON-LD block to Grants.tsx (from #140) while your commit rewraps the page in a fragment to fit the showcase strip in, so the answer is to keep both, your fragment plus the JSON-LD script.

Where I stopped is the SEO commit. It replaces <Helmet> with your central <Seo> component across Blog.tsx, CaseStudies.tsx, Faq.tsx and App.tsx, and in the meantime #140 added JSON-LD <script> blocks to those same pages. Merging those means deciding how the two metadata layers compose: does <Seo> take the structured data as a prop and render it, or do pages keep a separate script tag alongside it? That is a design call about your own abstraction and I did not want to pick for you.

Suggested way out, which also unblocks both PRs:

  1. Branch off a fresh feat/grant-showcase from origin/develop and cherry-pick only a5fab78, then repoint feat(grants): add grant applicant showcase page and featured strip #139 at it. That gets the showcase page merged on its own.
  2. Leave feat(seo): add hreflang tags, canonical URLs, and central Seo helper #145 as the hreflang work and resolve the <Seo> versus JSON-LD question there once.

Happy to talk through option 1 if the cherry-pick is awkward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Grant applicant showcase page

2 participants