From 3634521e130e1d6c7a6926dabe13ba163f1c168d Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 24 Sep 2025 14:47:59 -0500 Subject: [PATCH 1/7] update maintainers --- src/libraries/maintainers.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/libraries/maintainers.ts b/src/libraries/maintainers.ts index fcd8ea63b..1d3cc3fda 100644 --- a/src/libraries/maintainers.ts +++ b/src/libraries/maintainers.ts @@ -158,6 +158,18 @@ export const allMaintainers: Maintainer[] = [ frameworkExpertise: ['react'], specialties: ['Sync Engines'], }, + { + name: 'Alem Tuzlak', + avatar: 'https://github.com/AlemTuzlak.png', + github: 'AlemTuzlak', + creatorOf: ['devtools'], + frameworkExpertise: ['react'], + specialties: ['DevTools', 'Routers', 'Vite Plugins'], + social: { + twitter: 'https://x.com/AlemTuzlak', + bluesky: 'https://bsky.app/profile/alem.forge42.dev', + }, + }, { name: 'Lachlan Collins', isCoreMaintainer: true, @@ -220,6 +232,15 @@ export const allMaintainers: Maintainer[] = [ twitter: 'https://x.com/swagdoctor19', }, }, + { + name: 'Harry Whorlow', + avatar: 'https://github.com/harry-whorlow.png', + github: 'harry-whorlow', + maintainerOf: ['form'], + contributorOf: ['devtools'], + frameworkExpertise: ['react'], + social: {}, + }, { name: 'Luca Jakob', avatar: 'https://github.com/LeCarbonator.png', From be1374201789523ffca8a9ba2b2ac301cbf9cc54 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 24 Sep 2025 15:17:41 -0500 Subject: [PATCH 2/7] Update src/libraries/maintainers.ts Co-authored-by: Harry Whorlow <79278353+harry-whorlow@users.noreply.github.com> --- src/libraries/maintainers.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libraries/maintainers.ts b/src/libraries/maintainers.ts index 1d3cc3fda..11a2b5560 100644 --- a/src/libraries/maintainers.ts +++ b/src/libraries/maintainers.ts @@ -239,7 +239,10 @@ export const allMaintainers: Maintainer[] = [ maintainerOf: ['form'], contributorOf: ['devtools'], frameworkExpertise: ['react'], - social: {}, + social: { + linkedIn: https://www.linkedin.com/in/harry-whorlow/ + website: harry-whorlow.dev + }, }, { name: 'Luca Jakob', From 919c39260a78c64e78b0fdcfb6c16cba3cd58e6f Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 24 Sep 2025 16:03:47 -0500 Subject: [PATCH 3/7] fix --- src/libraries/maintainers.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libraries/maintainers.ts b/src/libraries/maintainers.ts index 11a2b5560..eaf5d3036 100644 --- a/src/libraries/maintainers.ts +++ b/src/libraries/maintainers.ts @@ -14,6 +14,7 @@ export interface Maintainer { social?: { twitter?: string bluesky?: string + linkedIn?: string website?: string } } @@ -163,6 +164,7 @@ export const allMaintainers: Maintainer[] = [ avatar: 'https://github.com/AlemTuzlak.png', github: 'AlemTuzlak', creatorOf: ['devtools'], + contributorOf: ['pacer', 'form'], frameworkExpertise: ['react'], specialties: ['DevTools', 'Routers', 'Vite Plugins'], social: { @@ -240,9 +242,9 @@ export const allMaintainers: Maintainer[] = [ contributorOf: ['devtools'], frameworkExpertise: ['react'], social: { - linkedIn: https://www.linkedin.com/in/harry-whorlow/ - website: harry-whorlow.dev - }, + linkedIn: 'https://www.linkedin.com/in/harry-whorlow/', + website: 'harry-whorlow.dev', + }, }, { name: 'Luca Jakob', From 1663b1cfe9311a8c5549788f4985e6ea6b1ce989 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Wed, 24 Sep 2025 16:07:59 -0500 Subject: [PATCH 4/7] add Shruti --- src/libraries/maintainers.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/libraries/maintainers.ts b/src/libraries/maintainers.ts index eaf5d3036..cc2d659ee 100644 --- a/src/libraries/maintainers.ts +++ b/src/libraries/maintainers.ts @@ -170,6 +170,7 @@ export const allMaintainers: Maintainer[] = [ social: { twitter: 'https://x.com/AlemTuzlak', bluesky: 'https://bsky.app/profile/alem.forge42.dev', + website: 'https://www.forge42.dev', }, }, { @@ -389,6 +390,18 @@ export const allMaintainers: Maintainer[] = [ frameworkExpertise: ['react'], specialties: ['Sync Engines', 'Incremental View Maintenance'], }, + { + name: 'Shruti Kapoor', + avatar: 'https://github.com/shrutikapoor08.png', + github: 'shrutikapoor08', + contributorOf: ['start'], + frameworkExpertise: ['react'], + specialties: ['Education', 'Documentation'], + social: { + twitter: 'https://x.com/shrutikapoor08', + bluesky: 'https://bsky.app/profile/shrutikapoor08.bsky.social', + }, + }, ] export const coreMaintainers = allMaintainers.filter( From e8bc0a5446af7a99c71662b9f0ab97ef8bee0e93 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Fri, 26 Sep 2025 10:07:13 -0500 Subject: [PATCH 5/7] add Brooke --- src/libraries/maintainers.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/libraries/maintainers.ts b/src/libraries/maintainers.ts index cc2d659ee..4ebccaeee 100644 --- a/src/libraries/maintainers.ts +++ b/src/libraries/maintainers.ts @@ -294,6 +294,19 @@ export const allMaintainers: Maintainer[] = [ bluesky: 'https://bsky.app/profile/bskyum.bsky.social', }, }, + { + name: 'Brooke Holmes', + avatar: 'https://github.com/brhx.png', + github: 'brhx', + maintainerOf: ['start', 'router'], + frameworkExpertise: ['react'], + specialties: ['TypeScript'], + social: { + twitter: 'https://x.com/brooke_lune', + linkedIn: 'https://www.linkedin.com/in/brooke-holmes/', + website: 'https://brooke.me', + }, + }, { name: 'Arnoud de Vries', avatar: 'https://github.com/arnoud-dv.png', From e47ec8763f96b91367ae4f44e7afb60ac7f902d7 Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Mon, 29 Sep 2025 19:45:24 -0500 Subject: [PATCH 6/7] Harry maintains devtools --- src/libraries/maintainers.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libraries/maintainers.ts b/src/libraries/maintainers.ts index 4ebccaeee..374ac3de5 100644 --- a/src/libraries/maintainers.ts +++ b/src/libraries/maintainers.ts @@ -239,8 +239,7 @@ export const allMaintainers: Maintainer[] = [ name: 'Harry Whorlow', avatar: 'https://github.com/harry-whorlow.png', github: 'harry-whorlow', - maintainerOf: ['form'], - contributorOf: ['devtools'], + maintainerOf: ['form', 'devtools'], frameworkExpertise: ['react'], social: { linkedIn: 'https://www.linkedin.com/in/harry-whorlow/', From d4b787b56d56ccc6193e6caf54c79c92d8b1454b Mon Sep 17 00:00:00 2001 From: Kevin Van Cott Date: Mon, 29 Sep 2025 19:46:40 -0500 Subject: [PATCH 7/7] format --- agents/tasks/tanstack-com-task-list.md | 44 ++++++++++++++++++++------ convex/auth.config.ts | 4 +-- src/utils/gh-sponsor-meta.json | 2 +- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/agents/tasks/tanstack-com-task-list.md b/agents/tasks/tanstack-com-task-list.md index 4709bff31..3a9509a8c 100644 --- a/agents/tasks/tanstack-com-task-list.md +++ b/agents/tasks/tanstack-com-task-list.md @@ -8,22 +8,27 @@ - Links: PRs, issues, routes, components ### How to use this file + - Update status/notes as tasks progress. Keep routes/components and data sources referenced so any agent can continue seamlessly. - Prefer reusing existing components and content models referenced below. --- ## 1. Metrics & Market Leadership Signals + **Goal:** Visible proof of dominance and growth. ### Audit snapshot + - Homepage metrics: `OpenSourceStats` counters present on homepage (`src/routes/_libraries/index.tsx` uses `OpenSourceStats`). Partial. - "Trusted By": Component exists as text marquee (`src/components/TrustedByMarquee.tsx`). Not on homepage yet; currently used on some library pages (e.g. `src/routes/_libraries/table.$version.index.tsx`). Partial. - NPM stats: Extensive interactive page exists at `src/routes/stats/npm/index.tsx` with charts and comparisons. Done (separate page). - Backend metrics: `convex/stats.ts` + `@erquhart/convex-oss-stats` provides GitHub/NPM org metrics; `OpenSourceStats.tsx` consumes `api.stats.getGithubOwner`, `api.stats.getNpmOrg`. Done for aggregate; per-library not yet surfaced. ### Tasks + - [ ] Implement “Trusted By” on homepage + - Status: Backlog - Notes: - Reuse `TrustedByMarquee` but upgrade to support logos + links + tooltip proof. @@ -35,9 +40,10 @@ - Renders without CLS, loops smoothly, accessible (ARIA, alt text). Logos swap dark/light. - All entries have a proof link; no unverified brands. - Links: `src/components/TrustedByMarquee.tsx`, `src/routes/_libraries/index.tsx`. - - Owner: + - Owner: - [ ] Add Real-Time Metrics Counters (per-library + org rollup) + - Status: Partial (org rollup live via `OpenSourceStats`) - Notes: - Extend counters to per-library pages using existing Convex endpoints or add repo-level endpoints via `convex-oss-stats` if needed. @@ -55,9 +61,9 @@ - Notes: - Route: `src/routes/state-of-tanstack.tsx`. - Include growth charts (npm downloads: reuse `NpmStatsChart.tsx` or embed portions of `stats/npm`), GitHub stars, contributors, dependents (available via Convex aggregation already powering `OpenSourceStats`). - - Community stats: Discord members (needs server function), newsletter subscribers (manual or vendor API), X/Twitter followers (manual or API), repository contributors (Convex or GitHub GraphQL on server). - - Ecosystem counts: partners (derive from `src/utils/partners.tsx`), plugins/tools (manual list or content collection). - - CTA to GitHub org. + - Community stats: Discord members (needs server function), newsletter subscribers (manual or vendor API), X/Twitter followers (manual or API), repository contributors (Convex or GitHub GraphQL on server). + - Ecosystem counts: partners (derive from `src/utils/partners.tsx`), plugins/tools (manual list or content collection). + - CTA to GitHub org. - Acceptance: - Page loads instantly with cached metrics; charts are responsive and accessible. - Sources and last-updated timestamps shown. @@ -65,6 +71,7 @@ - Owner: ### Tech/context + - Data: `@erquhart/convex-oss-stats` via `convex/stats.ts` (org-level GitHub star/contributor/dependent counts, npm downloads). Consider adding per-repo endpoints if needed. - Secrets: Configure any tokens via Netlify/Convex env; never expose client-side. - Accessibility: Ensure counters/animations are readable and respect `prefers-reduced-motion`. @@ -72,15 +79,19 @@ --- ## 2. Founder & Team Story + **Goal:** Frame the team as visionary and credible. ### Audit snapshot + - Ethos page exists: `src/routes/_libraries/ethos.tsx` (narrative and positioning). - Maintainers directory page exists: `src/routes/_libraries/maintainers.tsx` with `MaintainerCard` variants and filters; bios sourced from `src/libraries/maintainers`. - No dedicated "About" route; no speaking engagements index; no curated endorsements/tweets. ### Tasks + - [ ] Redesign/Create “About” page + - Status: Backlog - Notes: - Route: `src/routes/about.tsx`. @@ -90,6 +101,7 @@ - Links: `src/components/MaintainerCard.tsx`, `src/routes/_libraries/maintainers.tsx`. - [ ] Speaking Engagements section + - Status: Backlog - Notes: - Add to About or standalone `src/routes/speaking.tsx`. @@ -106,22 +118,25 @@ - Acceptance: Renders endorsements with attribution and embedded tweets with proper theming. ### Tech/context + - Reuse `MaintainerCard` and existing images in `src/images/`. - Avoid fetching social embeds at build if rate-limited; hydrate on client or cache server-side. --- - - ## 4. Commercial Hooks + **Goal:** Show monetizable pathways. ### Audit snapshot + - Enterprise/Support: `src/routes/_libraries/paid-support.tsx` exists with HubSpot script and CTAs. Partial substitute for "Enterprise" page. - No dedicated Partner Program page. ### Tasks + - [ ] “Enterprise” page + - Status: Partial - Notes: - Option 1: Rename and expand `paid-support` into `enterprise` (route alias + updated copy) while keeping legacy route. @@ -137,18 +152,20 @@ - Link to Partners page. - Acceptance: Published page with clear application CTA. - - --- ## 5. Future Vision Page + **Goal:** Show long-term upside. ### Audit snapshot + - No public roadmap found; ethos narrative exists but not a vision statement page. ### Tasks + - [ ] Public Roadmap page + - Status: Backlog - Notes: - Route: `src/routes/roadmap.tsx`. @@ -167,13 +184,17 @@ --- ## 6. Media & Momentum + **Goal:** Make hype and credibility easy to digest. ### Audit snapshot + - No dedicated media kit, in-the-news, or social proof feeds found. ### Tasks + - [ ] Press/Media Kit page + - Status: Backlog - Notes: - Route: `src/routes/media-kit.tsx`. @@ -182,6 +203,7 @@ - Acceptance: Page provides direct downloads and usage rules. - [ ] In the News page + - Status: Backlog - Notes: - Route: `src/routes/news.tsx`. @@ -199,6 +221,7 @@ --- ### Shared implementation notes + - Routing: New pages should be added under `src/routes/*` using TanStack Start conventions; update nav/footers as needed. - Data placement: Prefer `src/data/*.ts` (typed) or `content/*.(json|yaml)` for editorial lists. Avoid hardcoding in components unless small. - Theming: Provide dark/light logo variants; `public/` is ideal for static assets. @@ -208,10 +231,12 @@ - Analytics: Add outbound link tracking if available (future). ### Potential blockers + - External API limits (GitHub GraphQL, Discord member count, X/Twitter API). Prefer server-side fetch with caching or public embed widgets. - Legal/branding approvals for “Trusted By” logos—require proof links. ### Quick links to relevant code + - Homepage: `src/routes/_libraries/index.tsx` - Metrics: `src/components/OpenSourceStats.tsx`, `convex/stats.ts`, `src/components/NpmStatsChart.tsx`, `src/routes/stats/npm/index.tsx` - Trusted By: `src/components/TrustedByMarquee.tsx` @@ -219,8 +244,9 @@ - SEO helper: `src/utils/seo` ### Ownership & tracking + - For each task above, fill in: - Owner: - Issue/PR links: - Status: - - Next step: \ No newline at end of file + - Next step: diff --git a/convex/auth.config.ts b/convex/auth.config.ts index f4eb56461..afc62641f 100644 --- a/convex/auth.config.ts +++ b/convex/auth.config.ts @@ -2,7 +2,7 @@ export default { providers: [ { domain: process.env.CONVEX_SITE_URL, - applicationID: "convex", + applicationID: 'convex', }, ], -}; +} diff --git a/src/utils/gh-sponsor-meta.json b/src/utils/gh-sponsor-meta.json index d291b0647..890078ae7 100644 --- a/src/utils/gh-sponsor-meta.json +++ b/src/utils/gh-sponsor-meta.json @@ -271,7 +271,7 @@ "imageUrl": "https://www.toyokumo.co.jp/logo-en.svg", "linkUrl": "https://www.toyokumo.co.jp/en?utm_source=tanstack" }, - { + { "login": "promptmonitor", "name": "Promptmonitor", "imageUrl": "https://bvatwanklwlvzlcxrcxn.supabase.co/storage/v1/object/public/assets/promptmonitor-icon-brandfill.png",