|
| 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: 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 | + |
| 115 | + |
| 116 | +## 4. Commercial Hooks |
| 117 | +**Goal:** Show monetizable pathways. |
| 118 | + |
| 119 | +### Audit snapshot |
| 120 | +- Enterprise/Support: `src/routes/_libraries/paid-support.tsx` exists with HubSpot script and CTAs. Partial substitute for "Enterprise" page. |
| 121 | +- No dedicated Partner Program page. |
| 122 | + |
| 123 | +### Tasks |
| 124 | +- [ ] “Enterprise” page |
| 125 | + - Status: Partial |
| 126 | + - Notes: |
| 127 | + - Option 1: Rename and expand `paid-support` into `enterprise` (route alias + updated copy) while keeping legacy route. |
| 128 | + - Content: packages, priority support, consulting, integration assistance; lead capture form (HubSpot already wired via `useScript`). |
| 129 | + - Acceptance: Clear tiers/benefits, contact CTA, form submission tracked. |
| 130 | + - Links: `src/routes/_libraries/paid-support.tsx`. |
| 131 | + |
| 132 | +- [ ] Partner Program page |
| 133 | + - Status: Backlog |
| 134 | + - Notes: |
| 135 | + - Route: `src/routes/partners-program.tsx`. |
| 136 | + - Tiers: Integration Partner, Strategic Partner; benefits: co-marketing, spotlight, early access. |
| 137 | + - Link to Partners page. |
| 138 | + - Acceptance: Published page with clear application CTA. |
| 139 | + |
| 140 | + |
| 141 | + |
| 142 | +--- |
| 143 | + |
| 144 | +## 5. Future Vision Page |
| 145 | +**Goal:** Show long-term upside. |
| 146 | + |
| 147 | +### Audit snapshot |
| 148 | +- No public roadmap found; ethos narrative exists but not a vision statement page. |
| 149 | + |
| 150 | +### Tasks |
| 151 | +- [ ] Public Roadmap page |
| 152 | + - Status: Backlog |
| 153 | + - Notes: |
| 154 | + - Route: `src/routes/roadmap.tsx`. |
| 155 | + - Source: GitHub Projects (read-only) or Notion API (curated). Avoid sensitive IP; create server fetch with caching. |
| 156 | + - Columns: Now, Next, Future. |
| 157 | + - Acceptance: Roadmap renders from source with manual override fallback. |
| 158 | + |
| 159 | +- [ ] Vision Statement page |
| 160 | + - Status: Backlog |
| 161 | + - Notes: |
| 162 | + - Route: `src/routes/vision.tsx`. |
| 163 | + - Narrative: “The Future of Web Tooling”; diagrams showing TanStack as connective tissue. |
| 164 | + - Assets: add diagrams to `public/vision/*` or `media/`. |
| 165 | + - Acceptance: Page published with visuals and links to roadmap. |
| 166 | + |
| 167 | +--- |
| 168 | + |
| 169 | +## 6. Media & Momentum |
| 170 | +**Goal:** Make hype and credibility easy to digest. |
| 171 | + |
| 172 | +### Audit snapshot |
| 173 | +- No dedicated media kit, in-the-news, or social proof feeds found. |
| 174 | + |
| 175 | +### Tasks |
| 176 | +- [ ] Press/Media Kit page |
| 177 | + - Status: Backlog |
| 178 | + - Notes: |
| 179 | + - Route: `src/routes/media-kit.tsx`. |
| 180 | + - Include logo assets (light/dark SVG/PNG), founder bio, product screenshots, downloadable one-pager PDF/zip. |
| 181 | + - Store assets under `public/brand/*` or `media/` and provide usage guidelines. |
| 182 | + - Acceptance: Page provides direct downloads and usage rules. |
| 183 | + |
| 184 | +- [ ] In the News page |
| 185 | + - Status: Backlog |
| 186 | + - Notes: |
| 187 | + - Route: `src/routes/news.tsx`. |
| 188 | + - Data: `src/data/news.ts` with `{ year, outlet, title, url, logo }`. |
| 189 | + - Group by year with outlet logos. |
| 190 | + - Acceptance: List renders with working links; new items easy to add. |
| 191 | + |
| 192 | +- [ ] Social Proof section |
| 193 | + - Status: Backlog |
| 194 | + - Notes: |
| 195 | + - Component: `components/SocialProof.tsx` (new) consuming curated data `src/data/social-proof.ts` (tweets, GH discussions, testimonials). |
| 196 | + - Tweets: prefer embed by URL; if API needed, add server function and cache. |
| 197 | + - Acceptance: Mixed feed renders, accessible, themable. |
| 198 | + |
| 199 | +--- |
| 200 | + |
| 201 | +### Shared implementation notes |
| 202 | +- Routing: New pages should be added under `src/routes/*` using TanStack Start conventions; update nav/footers as needed. |
| 203 | +- Data placement: Prefer `src/data/*.ts` (typed) or `content/*.(json|yaml)` for editorial lists. Avoid hardcoding in components unless small. |
| 204 | +- Theming: Provide dark/light logo variants; `public/` is ideal for static assets. |
| 205 | +- Performance: Use suspense-friendly server fetches and cache. Respect `prefers-reduced-motion` for marquees/counters. |
| 206 | +- Accessibility: Alt text for logos, focus states for carousels, keyboard operability. |
| 207 | +- SEO: Use `utils/seo` to set titles/descriptions on new routes. |
| 208 | +- Analytics: Add outbound link tracking if available (future). |
| 209 | + |
| 210 | +### Potential blockers |
| 211 | +- External API limits (GitHub GraphQL, Discord member count, X/Twitter API). Prefer server-side fetch with caching or public embed widgets. |
| 212 | +- Legal/branding approvals for “Trusted By” logos—require proof links. |
| 213 | + |
| 214 | +### Quick links to relevant code |
| 215 | +- Homepage: `src/routes/_libraries/index.tsx` |
| 216 | +- Metrics: `src/components/OpenSourceStats.tsx`, `convex/stats.ts`, `src/components/NpmStatsChart.tsx`, `src/routes/stats/npm/index.tsx` |
| 217 | +- Trusted By: `src/components/TrustedByMarquee.tsx` |
| 218 | +- Team/Ethos: `src/routes/_libraries/ethos.tsx`, `src/routes/_libraries/maintainers.tsx`, `src/components/MaintainerCard.tsx` |
| 219 | +- SEO helper: `src/utils/seo` |
| 220 | + |
| 221 | +### Ownership & tracking |
| 222 | +- For each task above, fill in: |
| 223 | + - Owner: |
| 224 | + - Issue/PR links: |
| 225 | + - Status: |
| 226 | + - Next step: |
0 commit comments