Open-source project
nilbuild/developer-roadmap avatar
nilbuild/developer-roadmap

nilbuild/developer-roadmap: the roadmap.sh content repository, and what you actually get

Interactive roadmaps, guides and other educational content to help developers grow in their careers.

368,420 stars45,004 forksTypeScriptNOASSERTION

At a glance

What is it?
The repository behind roadmap.sh holds the TypeScript content pipeline and the roadmap source files, not the website's application code. It is useful if you want to fix or extend a roadmap, and close to useless if you wanted to self-host the site.
Who is it for?
Adopt it if you want to correct or extend the content behind roadmap.sh, because the roadmap files and the sync scripts are the whole product here. Do not adopt it if you expected a self-hostable copy of the site: package.json declares the package private, ships only prettier, tsx and three markdown libraries, and contains no web framework or server.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What nilbuild/developer-roadmap is, and what it is not

The README opens with a one-line description: "Community-driven roadmaps, articles and resources for developers." The repository is the content side of roadmap.sh. Its package.json describes itself as "Roadmap content for roadmap.sh" and sets private to true. That single field tells you more than the topic list does: this is not a published package and not the application that serves roadmap.sh.

The repository root contains .github/, roadmaps/, scripts/, package.json, pnpm-lock.yaml, pnpm-workspace.yaml, tsconfig.json, a Prettier config, and the usual community files. There is no server directory, no framework dependency, no Dockerfile, and no deployment configuration. The dependencies are markdown-it, node-html-parser and turndown, which are parsing and conversion libraries. Everything here is about turning roadmap content into a form that can be synced into a database.

Who it is for, then, is narrow. Someone who has spotted a wrong node on the backend roadmap and wants to fix it. Someone adding a topic to an existing roadmap. Someone on the roadmap.sh team running the content sync. It is not for a developer who wants to run roadmap.sh on their own domain, and it is not a learning resource in itself. The learning resource is the website; this is the source of its text.

How the content pipeline works: markdown in, database out

The scripts in package.json name the two directions of data flow. sync:content-to-repo runs tsx ./scripts/sync-content-to-repo.ts. sync:repo-to-database runs tsx ./scripts/sync-repo-to-database.ts. There is also cleanup:orphaned-content, which runs tsx ./scripts/cleanup-orphaned-content.ts.

The names imply a database as the system of record and the roadmaps/ directory as a checked-in mirror. Content moves from the database into the repository so that changes are reviewable as files, and moves back from the repository into the database once merged. The third script handles the case where a roadmap node was deleted upstream and its file is now orphaned in the repository.

The dependency list supports that reading. markdown-it parses markdown, node-html-parser walks HTML trees, and turndown converts HTML back into markdown. A pipeline that has to round-trip content between a database representation and markdown files would need exactly those three, and it would need nothing else. The TypeScript entry points are run through tsx rather than compiled, so there is no build step and no dist directory.

What the repository does not state is the database engine, the connection configuration, or the credentials the sync scripts expect. Those live in the application repository, not this one. Anyone running the sync scripts locally will hit that gap immediately.

Installing it and making a first content change

The repository uses pnpm: pnpm-lock.yaml and pnpm-workspace.yaml are both at the root. The README gives no install instructions of its own, so the package.json scripts are the only documented entry points. Install dependencies first.

bash
pnpm install

After that, formatting is the one operation that needs no database. The format script runs Prettier across the repository.

bash
pnpm format

A first real use is editing a roadmap file. The roadmaps/ directory holds the content, and the README lists the corresponding pages on roadmap.sh, for example https://roadmap.sh/backend and https://roadmap.sh/frontend. Open the file for the roadmap you care about, change the node text or add a topic, then run pnpm format so the edit matches the repository's Prettier configuration.

bash
pnpm sync:repo-to-database

That command is where the local workflow stops for most people. It runs tsx ./scripts/sync-repo-to-database.ts, and the repository does not document the database connection it needs. Expect to read the script before it will run. The reverse direction, pnpm sync:content-to-repo, is what a maintainer would use to pull current content down before editing. The cleanup script exists for orphaned files.

bash
pnpm cleanup:orphaned-content

One practical note: the repository is a pnpm workspace, so running npm install instead of pnpm install may produce a different dependency tree than the lockfile describes. Use pnpm.

The maintenance picture: steady pushes, a stale release tag

The last push to the default branch was on 2026-09-10, six days before this writing, and the repository is not archived. Content is being touched regularly. That is the honest signal available, and it is a good one for a content repository, where the work is incremental edits rather than versioned releases.

The release history tells a different story. The most recent release listed is 4.0, tagged 2023-01-05. Nearly three years separate that tag from the latest commit. If you are looking for a stable, versioned snapshot of the roadmap content to pin against, this repository does not offer one. The master branch is the artifact. That is a real constraint for anyone who wants reproducibility, and it is worth stating plainly rather than treating the commit stream as a substitute.

The README says the list of roadmaps has "more being actively worked upon," which matches the push cadence. But the README also lists roadmaps whose pages are the product of the website, and the repository only holds their source. A roadmap appearing in the README is not evidence that its content files are complete or current in this repository; that would require checking roadmaps/ directly.

What it does not solve, and where it is the wrong tool

The most common mismatch is expecting the website. The homepage is https://roadmap.sh, and the README links to it throughout, but nothing in this repository serves that site. There is no HTTP server, no routing, no frontend framework, and no static site generator in the dependency list. Cloning this repository gives you markdown and three Node libraries. If your goal is an internal roadmap site behind your company firewall, this is the wrong starting point, and the repository does not claim otherwise.

A second limitation is the database coupling. Two of the three scripts are named for synchronizing with a database, and the repository does not document that database's schema, host, or authentication. The scripts are TypeScript source, so they are readable, but reading them is the only route the repository offers. A contributor who only wants to fix a typo in a roadmap node may find that the review path runs through tooling they cannot run locally.

A third is licensing. The repository's license file is present at the root, but the machine-readable license identifier is NOASSERTION, meaning GitHub could not map the file to a known license. The README itself carries no license statement. If you intend to reuse roadmap content in your own product, resolve that question before you build on it; the repository as published does not answer it for you.

Alternatives, and the difference in approach

The closest alternative is the website itself. roadmap.sh presents the roadmaps as interactive pages where, per the README, "you can click the nodes to read more about the topics." That interactivity is the application layer, and it is not in this repository. If you want to consume the roadmaps, the site is the finished product; this repository is the raw material behind it.

A second alternative is writing your own roadmap from scratch. That sounds like more work, and for a single team it often is not. A markdown file in your own repository, reviewed by the people who will follow it, has no sync scripts, no database, and no license ambiguity. The trade-off is that you lose the breadth: the README lists well over a hundred roadmaps and best-practice pages, from frontend and backend to Kubernetes, Terraform, and AI agents. Nobody reproduces that list by hand.

A third path is consuming roadmap.sh as a reference while contributing fixes back. That is what the repository is built for. The difference from the alternatives is that your edits land in a shared, community-reviewed content set rather than in a private document, which is either the point or a reason to stay away, depending on whether you want your internal curriculum to be public.

Questions people actually ask about developer-roadmap

The search data around this project clusters on definitional questions rather than setup questions. People want to know what a developer roadmap is, what the roadmap.sh repository contains, and which roadmap applies to their situation. The README answers the last one directly by pointing at the get started page, which it says "might help you pick up a path." That is the right first stop for anyone deciding between the frontend and backend tracks, or between a full roadmap and its beginner variant, since the README lists both forms for several subjects.

The definitional questions are harder to answer from the repository alone, because the repository is the content store rather than the explanation. What it does establish is the shape of the answer: a roadmap here is a set of ordered topics with linked resources, rendered as a clickable graph. Whether that matches what you mean by a roadmap is a judgement the repository cannot make for you.

Editorial conclusion

Adopt it if you want to correct or extend the content behind roadmap.sh, because the roadmap files and the sync scripts are the whole product here. Do not adopt it if you expected a self-hostable copy of the site: package.json declares the package private, ships only prettier, tsx and three markdown libraries, and contains no web framework or server. Before you clone, open roadmaps/ and read scripts/sync-content-to-repo.ts to confirm the file layout matches the roadmap you intend to edit.

Frequently asked questions

What is the purpose of a roadmap?

In this project, a roadmap is an ordered set of topics and resources for a developer role or technology, published on roadmap.sh and stored as content in this repository. The README describes the site as "community-driven roadmaps, articles and resources for developers."

What does roadmap mean?

The README does not define the word itself. It describes the roadmaps as interactive, with clickable nodes that link to further reading on each topic, and lists them by subject such as frontend, backend, and DevOps.

What is an application developer roadmap?

The repository does not define that term, but its README lists roadmaps for application-adjacent roles such as full stack, frontend, backend, and software architect. Each is a page on roadmap.sh with clickable nodes that link to further reading.

What is an example of a roadmap?

The README lists concrete examples, including the Frontend Roadmap at https://roadmap.sh/frontend and the Backend Roadmap at https://roadmap.sh/backend. Several subjects have both a full and a beginner variant, such as the Frontend Beginner Roadmap.

What is the full stack developer roadmap?

The README lists a Full Stack Roadmap at https://roadmap.sh/full-stack alongside separate frontend and backend roadmaps. The repository holds the content for these pages rather than the site that renders them.

What is a developer roadmap?

The repository's package.json describes its own contents as "Roadmap content for roadmap.sh," and the README frames the roadmaps as community-driven learning paths for developers. The rendered versions live on roadmap.sh, not in this repository.

Official sources

  1. Issues
  2. nilbuild/developer-roadmap on GitHub
  3. Project website
  4. README
  5. Releases
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nilbuild-developer-roadmap.svg)](https://hysenlabs.com/projects/nilbuild-developer-roadmap)
Community notes

Community notes