DevDocs packs third party API references into one offline browser, and refuses everything that is not a reference
API Documentation Browser
At a glance
- What is it?
- DevDocs is a freeCodeCamp operated documentation browser that merges many third party API references into a single client side interface with instant search, offline support, and a metadata index. It is built for looking up identifiers and signatures, not for finding tutorials, and it publishes no tagged releases.
- Who is it for?
- DevDocs fits developers who already know what they are looking for and want one fast, offline place to confirm a property name, a method signature, or a version list, and the Docker image is the cheapest way to get there. It does not fit anyone who needs guided material, because tutorials and guides are declared outside the scope the maintainers accept, and a self hosted copy ages on a manual update loop with no releases to pin.
- Can I use it commercially?
- Yes, with conditions. MPL-2.0 is a weak copyleft licence: you can use it inside commercial and closed-source software, but if you distribute changes to its own files, you must publish those changes under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 2 days ago.
- What is it written in?
- Mainly Ruby, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Two images, one port, and the whole corpus baked in at build time
The container path is a single detached run against a published image:
docker run --name devdocs -d -p 9292:9292 ghcr.io/freecodecamp/devdocs:latestTwo tags are published, `ghcr.io/freecodecamp/devdocs:latest` for the standard image and `ghcr.io/freecodecamp/devdocs:latest-alpine` for a smaller Alpine based build, and both answer on localhost:9292. Neither image ships empty. The build recipe downloads the entire documentation set and compiles assets before the image is finished, running `thor docs:download --all` and `thor assets:compile`, then exposes 9292 and starts rackup bound to 0.0.0.0. Images are rebuilt and updated monthly with the latest documentation, which is what keeps a self hosted copy reasonably current without work from you. Building locally instead takes a clone, `docker build -t devdocs .`, and the same run command.
Ruby 4.0.6 and four system packages stand between you and rackup
Manual installation is the path the project reserves for contributors, and it opens with a pinned interpreter. DevDocs requires Ruby 4.0.6 as defined in the Gemfile, plus libcurl and bsdtar, which macOS already includes and Debian and Alpine supply through the libarchive-tools package, plus a JavaScript runtime that ExecJS supports, bundled on macOS and Windows and requiring Node.js on Linux. On Arch the whole prerequisite list is one line, `pacman -S ruby ruby-bundler ruby-erb ruby-irb`. After that the sequence is `gem install bundler`, `bundle install`, `thor docs:download --default`, and `rackup`. The first request to localhost:9292 stalls while assets compile, so a slow first load is expected rather than a broken install.
thor is the only lever for adding or refreshing a documentation set
Content is not discovered at runtime. The Ruby CLI decides what exists, and four modes cover the surface. `bundle exec thor docs:download --default` pulls the default set on a fresh install, `thor docs:download html css` fetches named documentations individually, `thor docs:download --all` grabs everything available, and `thor docs:download --installed` refreshes only what you already have. `thor docs:list` shows the available documentations and their versions. The project states there is no update mechanism other than `git pull origin main` for the code plus `thor docs:download --installed` for content, and the repository publishes no GitHub releases, so there is no release feed to schedule against. Keeping a local copy current is a loop you have to remember to run.
The scraper strips markup and prefixes every CSS class with an underscore
Pages are produced before a browser ever sees them. The Ruby scraper, written under the Docs module, has two flavors, UrlScraper for HTTP sources and FileScraper for local files, and both copy HTML documents, follow links that match a set of rules, and build an index of files and metadata while parsing with Nokogiri. Modifications happen along the way: document structure such as the html and head elements, comments, and empty nodes are stripped; links are fixed to remove duplicates; external URLs that were not scraped are rewritten to their fully qualified counterpart; and internal scraped URLs are rewritten as well. The app then prefixes all CSS class names with an underscore, because XHR injects content straight into the main frame and any unprefixed class could collide with the surrounding shell.
Metadata is the backbone, so tutorials and guides stay out of scope
This is a reference browser with a stated border. The project says outright that it is neither a programming guide nor a search engine, that all content is pulled from third party sources, and that its backbone is metadata, with every piece of content identified by a unique, obvious, short string. Anything that does not fit that, meaning tutorials, guides, and long form material, is outside the scope the maintainers accept. The consequence is concrete. If what you are missing is a walkthrough rather than an API reference, it is not a configuration problem, because no flag turns on tutorial indexing. Adding one would mean writing a scraper that mints those short identifiers, and a contribution that ignored the rule would be turned down rather than merged.
Search is a simple algorithm that has to stay fast over 100,000 strings
Search is built for speed over reach, and the design note is explicit that the algorithm is kept simple because it needs to be fast even when searching through 100,000 strings. The vision section names improving the quality, speed, and order of results as a goal, but the scope note is narrower: the project indexes only the minimum useful to most developers and does not intend to compete with full text search engines. Practically, a question a general engine would answer by reading prose across the web is not the kind of query this index is built for. Treat DevDocs as lookup for identifiers, properties, and method signatures, and expect to fall back to a real search engine when you need to find something by concept rather than by name.
Safari 16.4, Edge 89, and iOS 16.4 come from the import map
The browser floor is set by one architectural decision. The app is all client side JavaScript served as ES modules resolved through an import map, which the project names as the newest thing it relies on and the direct reason for its version requirements. Recent Firefox, Chrome, and Opera are supported, and the hard floors are Safari 16.4+, Edge 89+, and iOS 16.4+. Offline support rides on a service worker and localStorage to shorten boot time, and the project is candid that the service worker comes with its own set of constraints. Memory stays bounded because you choose your own set of documentations instead of loading all of them, so a first run with everything installed is the configuration most likely to feel heavy.
No tagged releases and an open search for maintainers
Two facts about the project's state are worth knowing before you depend on it. The repository publishes no GitHub releases, so there is no version history to pin, diff, or roll back to, and staying informed means watching the repository for new releases instead. The README also states plainly that the team is currently searching for maintainers, with a Discord invite as the way in, and the project was created by Thibaut Courouble and is operated by freeCodeCamp under the MPL-2.0 license. The last push to the main branch landed on 29 September 2026, so the code is moving, but with no releases on offer you should read any image tag as a snapshot rather than a version you can reason about.
Editorial conclusion
DevDocs fits developers who already know what they are looking for and want one fast, offline place to confirm a property name, a method signature, or a version list, and the Docker image is the cheapest way to get there. It does not fit anyone who needs guided material, because tutorials and guides are declared outside the scope the maintainers accept, and a self hosted copy ages on a manual update loop with no releases to pin. Before switching, check that the documentation sets you care about are actually in `thor docs:list`, that the oldest browser you must support clears the Safari 16.4 and Edge 89 floors, and that you are comfortable owning a service worker and a locally cached corpus that the project refreshes monthly.
Frequently asked questions
Is DevDocs legit?
DevDocs was created by Thibaut Courouble and is operated by freeCodeCamp, and the source is public under the MPL-2.0 license. The project recommends the hosted version at devdocs.io unless you intend to contribute to the code.
Is DevDocs up to date?
The published Docker images are rebuilt and updated monthly with the latest documentation. A local install has no release feed to follow, since the repository has no GitHub releases, so updating means `git pull origin main` and then `thor docs:download --installed`.
how to use devdocs offline
Being fully functional offline is one of the app's stated goals, implemented with a service worker and localStorage to speed up boot time, and the hosted version at devdocs.io works offline out of the box. A self hosted copy behaves the same way once its documentation has been downloaded.
What is DevDocs API documentation?
DevDocs is an API documentation browser that combines multiple developer documentations in one web interface, with instant search, offline support, a mobile version, a dark theme, and keyboard shortcuts. All content is pulled from third party sources.
devdocs vs zeal
The repository contains no feature comparison with Zeal. The README links a related projects section, and DevDocs also has a separate desktop project, but the docs cover the web app at devdocs.io and the scraper that feeds it.
Official sources
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.
[](https://hysenlabs.com/projects/freecodecamp-devdocs)