-
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
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
-
The other last-modified-plugin is now archived, and no longer included in the default Jekyll, but the sitemap and seo plugin still seem to rely on the page.last_modified_at property, albeit undocumented (https://github.com/jekyll/jekyll/issues/9702), so might be worth getting the implementation switched upstream perhaps?
We show the last-modified date on endoflife.date products (https://endoflife.date/jekyll), but I'm not sure how we have the property set right now, since I don't remember including either plugin. Thanks for creating this, I have a few other sites where this will be quite helpful.
-
-
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
-
TinaCMS, fka Forestry is trying to do this. It's been a while since I've tried them out, but I love the idea.
https://tina.io/
-
evidence
Business intelligence as code: build fast, interactive data visualizations in SQL and markdown
This is really cool. We use a similar “baked data” approach with Duck DB + a static site generator in evidence
https://github.com/evidence-dev/evidence
-
Really appreciate you keeping it up! endoflife.date has been an amazing resource ever since you put it up. This has been a great open source success story that I share with people to explain why open source can be great. It's also a great example of the power of crowd-sourcing data. I originally added Ruby[1], Fedora[2], and Alma Linux[3] to endoflife.date and it's rewarded me with years of ability to reference. Prior to this I kept my own notes for the projects I cared most about, but keeping those up to date was a PITA. The best ideas seem obvious in hindsight, and endoflife.date definitely seems obvious :-D
[1] https://github.com/endoflife-date/endoflife.date/commit/7dae...
[2] https://github.com/endoflife-date/endoflife.date/commit/ab16...
[3] https://github.com/endoflife-date/endoflife.date/commit/12a7...
-
This is quite interesting. I always wanted to build something similar using SteamPipe (which can pretend to be sqlite/postgres) alongside Querybook.
THe craziest production with this approach that I've seen is the crt.sh website, which builds a full dynamic website with postgres and sql: https://github.com/crtsh/certwatch_db/blob/master/fnc/web_ap...
-
jekyll-admin
A Jekyll plugin that provides users with a traditional CMS-style graphical interface to author content and administer Jekyll sites.
-
Hugo got a WASM based plugin system, but real scripting plugins that would be needed for SQLite are still a feature request: https://github.com/gohugoio/hugo/issues/5510
-
-
As others have said, the plug-in system for Hugo is weaker than Jekyll. I think preprocessing is a viable alternative. I built something that generates markdown (especially the preambles) from a sqlite database. As a separate step, Hugo generates the web pages.
My code is messy, but it's here: https://github.com/ralexander-phi/rss-blogroll-network/blob/...