I love Jekyll, especially the Datafiles[0] feature, which lets you use CSV/JSON/YAML files and iterate through them. Mixed with the Jekyll Data Pages generator[1], which lets you create a page for every row in your dataset, it is a very powerful combination.
However, Liquid is a terrible language for data-mangling, and simple filtering/sorting/merging can become very annoying. So I wrote a Jekyll SQLite plugin that lets you use the same data interface in Jekyll/Liquid, but backed by a SQLite file(s).
It gives you the simplicity of the Baked Data pattern[2], and the flexibility of using SQL for data-wrangling, within a static site generator.
As a demo, I took the northwind dataset, and generated a site[3] with a few sample queries[4]. It demos both site-level, and page-level queries alongside data-pages generator to generate a page for every product/category/customer.
I've been using this across a few sites in production for almost a year, looking for feedback on usage semantics and feature suggestions.
[0]: https://jekyllrb.com/docs/datafiles/
[1]: https://github.com/avillafiorita/jekyll-datapage_gen
[2]: https://simonwillison.net/2021/Jul/28/baked-data/
[3]: https://northwind.captnemo.in/
[4]: https://github.com/captn3m0/northwind
Quick FYI on Jekyll performance:
I noticed slow generation times on one of my sites and traced it to a plugin that was spawning a git process to get the last commit info for every page. I wrote a drop-in replacement called jekyll-last-commit[0] that uses the ruby libgit2 wrapper for improved performance. Details on its origins are in an old HN comment[1] if you are interested!
[0]: https://github.com/klandergren/jekyll-last-commit
[1]: https://news.ycombinator.com/item?id=34331663