DEV Community

Kim
Kim

Posted on

I Analyzed 17 Popular GitHub Repos — Here's What Their Codebases Are Actually Made Of

I wanted to answer a simple question: what are popular open source projects actually made of?

Not what their README says. Not what their marketing page claims. What does the code itself reveal?

So I pointed RepoCrunch — a deterministic repo analyzer I built — at 17 well-known GitHub repositories and collected the data.

Here's what I found.

🦀 Rust is quietly eating JavaScript tooling

This was the biggest surprise. Three "JavaScript ecosystem" tools have significant Rust codebases:

Project You'd think it's... Actually...
Next.js JavaScript 13.5% Rust
Tailwind CSS CSS/JS 16.0% Rust
Deno JavaScript runtime 59.4% Rust

Next.js — the React meta-framework — is 13.5% Rust. Tailwind CSS is 16% Rust. These aren't Rust projects. They're JavaScript tools that have quietly moved performance-critical paths to Rust.

And then there's Deno: marketed as a JavaScript/TypeScript runtime, but it's actually a Rust project (59.4%) that happens to run JavaScript.

Meanwhile, uv — Python's fastest package manager — is 98.1% Rust. A Python tool with essentially zero Python.

The pattern is clear: Rust is becoming the systems language behind dynamic language ecosystems. If you're building dev tools in 2026, Rust is the performance layer you reach for.

📦 Dependency counts tell very different stories

Project Direct Dependencies Stars
Django 3 87K ⭐
FastAPI 5 96K ⭐
Flask 6 71K ⭐
NestJS 19 75K ⭐
Express 28 69K ⭐
VS Code 49 182K ⭐
Angular 104 100K ⭐

Django runs on 3 dependencies. The most popular Python web framework, powering Instagram and Spotify, depends on just three external packages.

Compare that to Angular's 104 direct dependencies. That's not inherently bad — they're a full framework with more surface area. But it's a fundamentally different philosophy: own everything vs. compose from parts.

The Python ecosystem clearly leans minimal. FastAPI (5 deps) and Flask (6 deps) follow the same pattern. Node.js frameworks consistently pull in more.

🏥 Open issues don't mean what you think

Project Open Issues Stars Ratio
Flask 3 71K 1 per 23,777 ⭐
NestJS 42 75K 1 per 1,783 ⭐
Tailwind 84 94K 1 per 1,118 ⭐
FastAPI 145 96K 1 per 662 ⭐
Angular 1,131 100K 1 per 88 ⭐
Prisma 2,505 45K 1 per 18 ⭐
uv 2,716 80K 1 per 30 ⭐
Rust 12,155 111K 1 per 9 ⭐
VS Code 14,704 182K 1 per 12 ⭐

Flask has 3 open issues. VS Code has 14,704.

Does that mean Flask is better maintained? Not exactly. Flask is a mature, stable project with a narrow scope. VS Code is an IDE used by millions — every edge case becomes an issue.

Issue count scales with surface area and user base, not with code quality. Rust (the language) has 12K open issues because building a compiler for millions of developers generates a lot of edge cases.

The interesting outlier is Prisma — 2,505 open issues against just 45K stars. That's one of the highest issue-to-star ratios in this dataset. It suggests either a broader surface area than its star count implies, or maintenance challenges.

🧬 TypeScript won — but not everywhere

Primary Language Projects
TypeScript Angular, VS Code, NestJS, Vue, Prisma, Supabase
JavaScript React, Svelte, Express, Next.js
Python Django, Flask, FastAPI
Rust uv, Deno, Rust-lang

TypeScript is the plurality leader for large-scale projects. But look more closely:

  • React is still primarily JavaScript (68.1%) — Facebook's flagship UI library hasn't fully migrated
  • Svelte is 71.8% JavaScript — Rich Harris chose to keep the compiler in JS
  • Vue went all-in on TypeScript (96.6%) — a deliberate rewrite choice for v3

The JS-vs-TS split often comes down to project age and rewrite ambition. Vue rewrote from scratch for v3 → TypeScript. React is incrementally migrating → still mostly JavaScript.

👥 Who actually builds these things?

Project Contributors Age (years)
Rust 8,257 15.7
Next.js 4,060 9.4
Django 3,405 19.1
VS Code 2,940 10.4
Angular 2,577 11.5
React 1,971 12.8
Supabase 1,852 5.6
Express 377 14.6
Tailwind 344 8.5
Prisma 355 5.7

Express — the backbone of Node.js servers — has been maintained by just 377 contributors over 14.6 years. Compare that to Next.js with 4,060 contributors in under 10 years.

Supabase stands out: 1,852 contributors in just 5.6 years. That's community velocity.

And Tailwind CSS — used on millions of websites — has just 344 contributors. A small team can build something with massive reach.

How I got this data

All of this came from RepoCrunch — a tool I built that analyzes GitHub repos into structured JSON. No AI, no LLMs, fully deterministic.

pip install repocrunch
repocrunch analyze vercel/next.js --pretty
Enter fullscreen mode Exit fullscreen mode

It parses real repo data — languages, dependencies, CI setup, health metrics — and gives you structured facts. I built it because I was tired of asking ChatGPT "what's this repo built with?" and getting hallucinated answers.

It also works as an MCP server, so your AI coding assistant can look up real repo data instead of guessing.


The raw data is what it is. Next.js is 13.5% Rust. Django has 3 dependencies. Flask has 3 open issues. These aren't opinions — they're measurements.

What surprised you most? I'd love to hear what repos you'd want to analyze next.


Originally published at getjustgo.com


Top comments (0)