|
| 1 | +## TanStack.com Task Tracker |
| 2 | + |
| 3 | +- Updated: 2025-08-14 |
| 4 | +- Scope: Marketing/brand site tasks that signal growth, leadership, and commercial readiness without deep implementation in this file. |
| 5 | +- Convention: |
| 6 | + - Status: Backlog | In Progress | Blocked | Done | Partial |
| 7 | + - Owners: GitHub handles or team names |
| 8 | + - Links: PRs, issues, routes, components |
| 9 | + |
| 10 | +### How to use this file |
| 11 | +- Update status/notes as tasks progress. Keep routes/components and data sources referenced so any agent can continue seamlessly. |
| 12 | +- Prefer reusing existing components and content models referenced below. |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## 1. Metrics & Market Leadership Signals |
| 17 | +**Goal:** Visible proof of dominance and growth. |
| 18 | + |
| 19 | +### Audit snapshot |
| 20 | +- Homepage metrics: `OpenSourceStats` counters present on homepage (`src/routes/_libraries/index.tsx` uses `OpenSourceStats`). Partial. |
| 21 | +- "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. |
| 22 | +- NPM stats: Extensive interactive page exists at `src/routes/stats/npm/index.tsx` with charts and comparisons. Done (separate page). |
| 23 | +- 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. |
| 24 | + |
| 25 | +### Tasks |
| 26 | +- [ ] Implement “Trusted By” on homepage |
| 27 | + - Status: Backlog |
| 28 | + - Notes: |
| 29 | + - Reuse `TrustedByMarquee` but upgrade to support logos + links + tooltip proof. |
| 30 | + - Create a central data source `src/data/trustedBy.ts` (or `content/trusted-by.json`) with: `{ id, name, logoLight, logoDark, link, proofUrl, proofType }`. |
| 31 | + - Only include publicly confirmed adopters; store proof URLs (tweets, case studies, repos). |
| 32 | + - Add hover tooltips with proof text and click-through to proof. |
| 33 | + - Placement: in `src/routes/_libraries/index.tsx`, below the hero and above library grid. |
| 34 | + - Acceptance: |
| 35 | + - Renders without CLS, loops smoothly, accessible (ARIA, alt text). Logos swap dark/light. |
| 36 | + - All entries have a proof link; no unverified brands. |
| 37 | + - Links: `src/components/TrustedByMarquee.tsx`, `src/routes/_libraries/index.tsx`. |
| 38 | + - Owner: |
| 39 | + |
| 40 | +- [ ] Add Real-Time Metrics Counters (per-library + org rollup) |
| 41 | + - Status: Partial (org rollup live via `OpenSourceStats`) |
| 42 | + - Notes: |
| 43 | + - Extend counters to per-library pages using existing Convex endpoints or add repo-level endpoints via `convex-oss-stats` if needed. |
| 44 | + - Display: npm weekly/monthly downloads and GitHub stars per library. |
| 45 | + - Consider compact display component `components/MetricsBadge.tsx` (new) for reuse. |
| 46 | + - Performance: hydrate safely (avoid locale formatting mismatch noted in `OpenSourceStats.tsx`). |
| 47 | + - Acceptance: |
| 48 | + - Per-library counters render on each library landing page (e.g., `query.$version.index.tsx`, etc.). |
| 49 | + - Numbers update without layout shift; links to npm and GitHub. |
| 50 | + - Links: `src/components/OpenSourceStats.tsx`, `convex/stats.ts`, library routes under `src/routes/_libraries/*.$version.index.tsx`. |
| 51 | + - Owner: |
| 52 | + |
| 53 | +- [ ] Create “State of TanStack” page |
| 54 | + - Status: Backlog |
| 55 | + - Notes: |
| 56 | + - Route: `src/routes/state-of-tanstack.tsx`. |
| 57 | + - 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`). |
| 58 | + - 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). |
| 59 | + - Ecosystem counts: integrations/partners (derive from `src/utils/partners.tsx`), plugins/tools (manual list or content collection). |
| 60 | + - CTA to GitHub org. |
| 61 | + - Acceptance: |
| 62 | + - Page loads instantly with cached metrics; charts are responsive and accessible. |
| 63 | + - Sources and last-updated timestamps shown. |
| 64 | + - Links: `src/components/NpmStatsChart.tsx`, `src/components/OpenSourceStats.tsx`, `src/routes/stats/npm/index.tsx`, `src/utils/partners.tsx`. |
| 65 | + - Owner: |
| 66 | + |
| 67 | +### Tech/context |
| 68 | +- 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. |
| 69 | +- Secrets: Configure any tokens via Netlify/Convex env; never expose client-side. |
| 70 | +- Accessibility: Ensure counters/animations are readable and respect `prefers-reduced-motion`. |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +## 2. Founder & Team Story |
| 75 | +**Goal:** Frame the team as visionary and credible. |
| 76 | + |
| 77 | +### Audit snapshot |
| 78 | +- Ethos page exists: `src/routes/_libraries/ethos.tsx` (narrative and positioning). |
| 79 | +- Maintainers directory page exists: `src/routes/_libraries/maintainers.tsx` with `MaintainerCard` variants and filters; bios sourced from `src/libraries/maintainers`. |
| 80 | +- No dedicated "About" route; no speaking engagements index; no curated endorsements/tweets. |
| 81 | + |
| 82 | +### Tasks |
| 83 | +- [ ] Redesign/Create “About” page |
| 84 | + - Status: Backlog |
| 85 | + - Notes: |
| 86 | + - Route: `src/routes/about.tsx`. |
| 87 | + - Include founder bio (photo, key achievements, notable talks), milestones timeline, and key contributor mini-bios (reuse `MaintainerCard` in compact mode). |
| 88 | + - Timeline: create `src/data/milestones.ts` (date, title, link, type: release/adoption/partnership). |
| 89 | + - Acceptance: Page showcases founder, timeline, top contributors; links to `maintainers` page. |
| 90 | + - Links: `src/components/MaintainerCard.tsx`, `src/routes/_libraries/maintainers.tsx`. |
| 91 | + |
| 92 | +- [ ] Speaking Engagements section |
| 93 | + - Status: Backlog |
| 94 | + - Notes: |
| 95 | + - Add to About or standalone `src/routes/speaking.tsx`. |
| 96 | + - Data: `src/data/talks.ts` with title, event, date, videoUrl, slidesUrl, tags. |
| 97 | + - Embed YouTube/Vimeo or slides (oEmbed). |
| 98 | + - Acceptance: Grid/list of talks with playable embeds and links. |
| 99 | + |
| 100 | +- [ ] Highlight Industry Influence (quotes + tweets) |
| 101 | + - Status: Backlog |
| 102 | + - Notes: |
| 103 | + - Quotes: `src/data/endorsements.ts` with person, title, quote, avatar, link. |
| 104 | + - Tweets: a curated list using embed script by URL to avoid API complexity; if API required, add server function with token. |
| 105 | + - Component: `components/Endorsements.tsx` and `components/TweetsWall.tsx` (new). |
| 106 | + - Acceptance: Renders endorsements with attribution and embedded tweets with proper theming. |
| 107 | + |
| 108 | +### Tech/context |
| 109 | +- Reuse `MaintainerCard` and existing images in `src/images/`. |
| 110 | +- Avoid fetching social embeds at build if rate-limited; hydrate on client or cache server-side. |
| 111 | + |
| 112 | +--- |
| 113 | + |
| 114 | +## 3. Strategic Integrations Showcase |
| 115 | +**Goal:** Show tight ecosystem ties. |
| 116 | + |
| 117 | +### Audit snapshot |
| 118 | +- Partners/Integrations content exists: `src/utils/partners.tsx` with logos, copy, status flags. |
| 119 | +- Partners page exists: `src/routes/_libraries/partners.tsx` with filters and "previous partners" link. |
| 120 | +- `PartnersSection` component available to spotlight on pages. |
| 121 | + |
| 122 | +### Tasks |
| 123 | +- [ ] Build “Integrations Hub” page |
| 124 | + - Status: Partial (Partners page exists) |
| 125 | + - Notes: |
| 126 | + - Decide whether to repurpose `partners` route as Integrations Hub or create `src/routes/integrations.tsx` displaying items from `partners`. |
| 127 | + - For each integration: show logo, short benefit description, links to docs/examples. |
| 128 | + - Ensure entries can link out to official docs (add `docsUrl` field to data if missing). |
| 129 | + - Acceptance: Grid of integrations with filter by library; each card links to docs/examples. |
| 130 | + - Links: `src/utils/partners.tsx`, `src/components/PartnersSection.tsx`, `src/routes/_libraries/partners.tsx`. |
| 131 | + |
| 132 | +- [ ] Integration Callouts in Docs |
| 133 | + - Status: Backlog |
| 134 | + - Notes: |
| 135 | + - Create `components/IntegrationSpotlight.tsx` to render a small callout sourced from a central dataset. |
| 136 | + - Data: add `src/data/integrations.ts` or reuse `partners` with an additional lightweight `spotlight` field. |
| 137 | + - Inject into docs pages via `components/DocsLayout.tsx` or specific docs MDX where relevant. |
| 138 | + - Acceptance: Callout appears on relevant docs pages with consistent styling and links. |
| 139 | + |
| 140 | +- [ ] Write blog posts highlighting integrations |
| 141 | + - Status: Partial (e.g., `src/blog/ag-grid-partnership.md`, `src/blog/netlify-partnership.md` exist) |
| 142 | + - Notes: |
| 143 | + - Create one post per major integration explaining benefits and use cases; include code snippets and screenshots. |
| 144 | + - Cross-link from Integration Hub and docs. |
| 145 | + - Acceptance: Posts published and linked from integration cards. |
| 146 | + |
| 147 | +--- |
| 148 | + |
| 149 | +## 4. Commercial Hooks |
| 150 | +**Goal:** Show monetizable pathways. |
| 151 | + |
| 152 | +### Audit snapshot |
| 153 | +- Enterprise/Support: `src/routes/_libraries/paid-support.tsx` exists with HubSpot script and CTAs. Partial substitute for "Enterprise" page. |
| 154 | +- No dedicated Partner Program or Premium Tooling pages. |
| 155 | + |
| 156 | +### Tasks |
| 157 | +- [ ] “Enterprise” page |
| 158 | + - Status: Partial |
| 159 | + - Notes: |
| 160 | + - Option 1: Rename and expand `paid-support` into `enterprise` (route alias + updated copy) while keeping legacy route. |
| 161 | + - Content: packages, priority support, consulting, integration assistance; lead capture form (HubSpot already wired via `useScript`). |
| 162 | + - Acceptance: Clear tiers/benefits, contact CTA, form submission tracked. |
| 163 | + - Links: `src/routes/_libraries/paid-support.tsx`. |
| 164 | + |
| 165 | +- [ ] Partner Program page |
| 166 | + - Status: Backlog |
| 167 | + - Notes: |
| 168 | + - Route: `src/routes/partners-program.tsx`. |
| 169 | + - Tiers: Integration Partner, Strategic Partner; benefits: co-marketing, spotlight, early access. |
| 170 | + - Link to existing Partners/Integrations Hub. |
| 171 | + - Acceptance: Published page with clear application CTA. |
| 172 | + |
| 173 | +- [ ] Premium Tooling Teaser |
| 174 | + - Status: Backlog |
| 175 | + - Notes: |
| 176 | + - Route: `src/routes/premium.tsx` with Coming Soon + waitlist form. |
| 177 | + - Form: HubSpot or simple server action collecting email. |
| 178 | + - Showcase conceptual offerings (dashboard, hosted version) as non-committal teasers. |
| 179 | + - Acceptance: Waitlist form works and data captured. |
| 180 | + |
| 181 | +--- |
| 182 | + |
| 183 | +## 5. Future Vision Page |
| 184 | +**Goal:** Show long-term upside. |
| 185 | + |
| 186 | +### Audit snapshot |
| 187 | +- No public roadmap found; ethos narrative exists but not a vision statement page. |
| 188 | + |
| 189 | +### Tasks |
| 190 | +- [ ] Public Roadmap page |
| 191 | + - Status: Backlog |
| 192 | + - Notes: |
| 193 | + - Route: `src/routes/roadmap.tsx`. |
| 194 | + - Source: GitHub Projects (read-only) or Notion API (curated). Avoid sensitive IP; create server fetch with caching. |
| 195 | + - Columns: Now, Next, Future. |
| 196 | + - Acceptance: Roadmap renders from source with manual override fallback. |
| 197 | + |
| 198 | +- [ ] Vision Statement page |
| 199 | + - Status: Backlog |
| 200 | + - Notes: |
| 201 | + - Route: `src/routes/vision.tsx`. |
| 202 | + - Narrative: “The Future of Web Tooling”; diagrams showing TanStack as connective tissue. |
| 203 | + - Assets: add diagrams to `public/vision/*` or `media/`. |
| 204 | + - Acceptance: Page published with visuals and links to roadmap. |
| 205 | + |
| 206 | +--- |
| 207 | + |
| 208 | +## 6. Media & Momentum |
| 209 | +**Goal:** Make hype and credibility easy to digest. |
| 210 | + |
| 211 | +### Audit snapshot |
| 212 | +- No dedicated media kit, in-the-news, or social proof feeds found. |
| 213 | + |
| 214 | +### Tasks |
| 215 | +- [ ] Press/Media Kit page |
| 216 | + - Status: Backlog |
| 217 | + - Notes: |
| 218 | + - Route: `src/routes/media-kit.tsx`. |
| 219 | + - Include logo assets (light/dark SVG/PNG), founder bio, product screenshots, downloadable one-pager PDF/zip. |
| 220 | + - Store assets under `public/brand/*` or `media/` and provide usage guidelines. |
| 221 | + - Acceptance: Page provides direct downloads and usage rules. |
| 222 | + |
| 223 | +- [ ] In the News page |
| 224 | + - Status: Backlog |
| 225 | + - Notes: |
| 226 | + - Route: `src/routes/news.tsx`. |
| 227 | + - Data: `src/data/news.ts` with `{ year, outlet, title, url, logo }`. |
| 228 | + - Group by year with outlet logos. |
| 229 | + - Acceptance: List renders with working links; new items easy to add. |
| 230 | + |
| 231 | +- [ ] Social Proof section |
| 232 | + - Status: Backlog |
| 233 | + - Notes: |
| 234 | + - Component: `components/SocialProof.tsx` (new) consuming curated data `src/data/social-proof.ts` (tweets, GH discussions, testimonials). |
| 235 | + - Tweets: prefer embed by URL; if API needed, add server function and cache. |
| 236 | + - Acceptance: Mixed feed renders, accessible, themable. |
| 237 | + |
| 238 | +--- |
| 239 | + |
| 240 | +### Shared implementation notes |
| 241 | +- Routing: New pages should be added under `src/routes/*` using TanStack Start conventions; update nav/footers as needed. |
| 242 | +- Data placement: Prefer `src/data/*.ts` (typed) or `content/*.(json|yaml)` for editorial lists. Avoid hardcoding in components unless small. |
| 243 | +- Theming: Provide dark/light logo variants; `public/` is ideal for static assets. |
| 244 | +- Performance: Use suspense-friendly server fetches and cache. Respect `prefers-reduced-motion` for marquees/counters. |
| 245 | +- Accessibility: Alt text for logos, focus states for carousels, keyboard operability. |
| 246 | +- SEO: Use `utils/seo` to set titles/descriptions on new routes. |
| 247 | +- Analytics: Add outbound link tracking if available (future). |
| 248 | + |
| 249 | +### Potential blockers |
| 250 | +- External API limits (GitHub GraphQL, Discord member count, X/Twitter API). Prefer server-side fetch with caching or public embed widgets. |
| 251 | +- Legal/branding approvals for “Trusted By” logos—require proof links. |
| 252 | + |
| 253 | +### Quick links to relevant code |
| 254 | +- Homepage: `src/routes/_libraries/index.tsx` |
| 255 | +- Metrics: `src/components/OpenSourceStats.tsx`, `convex/stats.ts`, `src/components/NpmStatsChart.tsx`, `src/routes/stats/npm/index.tsx` |
| 256 | +- Trusted By: `src/components/TrustedByMarquee.tsx` |
| 257 | +- Integrations: `src/utils/partners.tsx`, `src/components/PartnersSection.tsx`, `src/routes/_libraries/partners.tsx` |
| 258 | +- Team/Ethos: `src/routes/_libraries/ethos.tsx`, `src/routes/_libraries/maintainers.tsx`, `src/components/MaintainerCard.tsx` |
| 259 | +- SEO helper: `src/utils/seo` |
| 260 | + |
| 261 | +### Ownership & tracking |
| 262 | +- For each task above, fill in: |
| 263 | + - Owner: |
| 264 | + - Issue/PR links: |
| 265 | + - Status: |
| 266 | + - Next step: |
0 commit comments