Computer scientist Donald Knuth defined literate programming as a way of programming that allows developers to work in the order demanded by the logic and flow of their thoughts rather than an order dictated by the computer. According to GitHub, a subset of ideas from literate programming have shown up in tools like Swift Playgrounds, Jupyter, and Mathematica, but there is a lack of tooling to encompass the entire development life cycle.
Nbdev is built on top of Jupyter and attempts to fill those gaps and provides features like automated generation of docs from Jupyter notebooks and continuous integration through GitHub Actions. The nbdev environment consists of a web server for previewing a docs site, a Jupyter server for writing code, and a series of CLI tools that works with GitHub Codespaces.
Other features of nbdev include two-way sync between notebooks and source code, the ability to write tests directly in notebooks, tools for merge/conflict resolution, and utilities for automating the publishing of pypi and conda packages.
According to GitHub, while nbdev can be used to create Python software, it can also be used to create new tools. For example, GitHub recently used it to create fastpages, which is a blogging platform that developers can use to create blog posts from Jupyter notebooks.