Skip to content

thedaviddias/stackmatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stackmatch

License: MIT Built with Next.js Powered by Convex Package manager: pnpm All Contributors

Find developers who build with your stack.

Stackmatch scans public GitHub package.json files, builds dependency fingerprints for developers and organizations, and surfaces stackmates: people whose real project stacks overlap with yours.

Live site: stackmatch.dev

Docs: stackmatch.dev/docs

Stackmatch preview

Why Stackmatch Exists

GitHub is rich with signals, but most developer discovery still starts from bios, follower counts, or keyword search. Stackmatch starts from what people actually build with.

The project maps developers, packages, languages, topics, and communities through dependency overlap. That makes it easier to find peers using similar tools, spot emerging package communities, and turn shared technical context into collaboration.

What Stackmatch Does

  • Builds public stack fingerprints from root and nested package.json files.
  • Finds stackmates using shared package counts and stack similarity scoring.
  • Creates public profile pages for indexed developers and organizations.
  • Surfaces package pages, package leaderboards, language pages, and topic communities.
  • Supports GitHub sign-in so developers can claim their profile.
  • Offers optional private stack sync through separate GitHub App consent.
  • Keeps private analysis aggregate-only: dependency names and counts, not source code.

Architecture

Stackmatch is a TypeScript monorepo built around a Next.js web app and a Convex backend.

Area Technology
Web app Next.js App Router, React, Tailwind CSS
Backend/data Convex queries, mutations, actions, scheduled jobs
Auth Better Auth with GitHub OAuth
UI Shared @stackmatch/ui package, Lucide icons, Radix primitives
Tooling pnpm, Turborepo, Biome, TypeScript
Testing Vitest, Testing Library, jsdom accessibility tests

Repository Layout

apps/web                 Next.js app, Convex functions, routes, UI surfaces
packages/api             Shared API-facing contracts and helpers
packages/config          Site config, routes, themes, shared app config
packages/constants       Centralized policy and product constants
packages/localization    User-facing copy and metadata strings
packages/ui              Shared UI primitives
packages/utils           Shared scoring and utility logic
docs                     Architecture notes, governance docs, planning docs

Getting Started

Prerequisites

  • Node.js compatible with the version expected by the repo tooling.
  • pnpm 10.x.
  • Convex configured for this repo; local development uses the bundled Convex watcher.
  • A GitHub token for public repository reads.

Install

pnpm install

Configure Environment

Create .env.local at the repo root or apps/web/.env.local with the values required by the web app and Convex backend:

CONVEX_DEPLOYMENT=...
NEXT_PUBLIC_CONVEX_URL=...
GITHUB_TOKEN=...
ANALYZE_API_KEY=...
BETTER_AUTH_SECRET=...
SITE_URL=http://stackmatch-web.localhost:1355
NEXT_PUBLIC_SITE_URL=http://stackmatch-web.localhost:1355
NEXT_PUBLIC_BASE_URL=http://stackmatch-web.localhost:1355

Use a dedicated Convex project/database for Stackmatch. Do not point local development at another product's Convex deployment.

Run Locally

pnpm --filter @stackmatch/web dev

This starts the correct local development pair: portless for Next.js plus the Convex local backend watcher. Use the portless URL printed by the command, usually:

http://stackmatch-web.localhost:1355

Do not run next dev, pnpm --filter @stackmatch/web dev:next, or a raw localhost-only server for profile or data-backed pages.

Validation

Run the quick repo verification before opening a pull request:

pnpm verify:quick

Useful targeted checks:

pnpm --filter @stackmatch/web typecheck
pnpm --filter @stackmatch/web test
pnpm --filter @stackmatch/web test:a11y
pnpm check:constants
pnpm check:data-boundary

Run the full verification, including build, when the change is broad or release-facing:

pnpm verify

Contributing

Stackmatch is opening publicly and welcomes focused contributions that improve developer discovery, stack analysis, product quality, documentation, and reliability.

Good first areas:

  • Improve onboarding and documentation.
  • Add tests around stack scoring, profile rendering, and data boundary behavior.
  • Improve package, topic, language, and profile discovery flows.
  • Tighten accessibility and performance for public pages.
  • Refine Convex ingestion and sync reliability.
  • Strengthen sponsor transparency, package ecosystem briefs, and contributor recognition.

Before contributing, read CONTRIBUTING.md. This repo uses pnpm, Conventional Commits, Lefthook, centralized constants governance, and data-boundary rules for Convex access.

Data And Privacy

Stackmatch reads public GitHub repository metadata and package.json manifests to build public dependency fingerprints. Source code is not cloned or stored for public stack analysis.

Private repository analysis is optional and requires a separate GitHub App installation where the user chooses which repositories to grant. For private sync, Stackmatch stores aggregate dependency names/counts and sync status keyed to the GitHub login. It does not store private source code, private file paths, private repository names, commit messages, or commit SHAs.

Roadmap Themes

  • Better stackmate explanations and match transparency.
  • Richer package and ecosystem pages.
  • More contributor-friendly development docs.
  • Stronger profile claiming, moderation, and privacy controls.
  • Community surfaces for maintainers, OSS projects, and DevRel teams.

Contributors

Thanks goes to these people:

David Dias
David Dias

💻 🎨 🤔

This project follows the All Contributors specification. Contributions of any kind are welcome.

License

MIT © 2026 David Dias Digital. See LICENSE.

Sponsor this project

  •  

Contributors