Of course, nbdev (docs) itself is written using nbdev – including the fancy landing page! It’s all open source, and we often use cutting edge features from both nbdev and Quarto, so the source is a useful place to learn about both.
I’ve also created a couple small exploratory projects using nbdev. Since its so easy to setup a new project, I use it as a sandbox to test new ideas:
fastdaemon (docs): Host a tiny socketserver to speed up repeated runs of the same Python script. This was my attempt at implementing an idea of Jeremy’s. Pretty cool educational project to attempt yourself since it brings together a bunch of useful & interesting software tools and Python standard libraries like: sockets, socketserver, threading, and parallel processing.
nbdev-sqlite-utils (docs): Port of some of the docs of Simon Willison’s sqlite-utils package. I noticed that their docs looked a lot like a notebook, so made an attempt to see what it would look like in nbdev. I think it was a positive experiment! There’s also a tiny restructured text to ipynb converter.
sketch-tmpdir (docs): Sketch of a tempdir interface better suited to notebook-driven development. The standard library’s context manager approach doesn’t work well since you can’t split it across cells.
I created DS Blocks based on nbdev, please check it here:
The objective of this library is to facilitate writing modular, compact, and decoupled data science pipelines, while getting rid of boiler-plate associated with common operations such as chekpointing, profiling, data conversion, and other functionalities. In particular, it also contains extensions to nbdev that allow to build a test suite to be consumed by pytest, as explained here:
and to freeze and unfreeze code cells to avoid re-running them, while preserving their outputs.