diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..15a7e17
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,6 @@
+all: README.md
+
+README.md: README.md.njk render-template.ts Makefile data/projects.toml
+ ./render-template.ts README.md.njk data/projects.toml > $@
+
+.PHONY: all
diff --git a/README.md b/README.md
index d0e6c85..9685e21 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,6 @@ This is a list of classless CSS themes and frameworks. "Classless" means a styl
## Contents
- [Classless CSS](#classless-css)
- * [Contents](#contents)
* [Classless](#classless)
+ [Almond.CSS](#almondcss)
+ [attriCSS](#attricss)
@@ -373,6 +372,7 @@ This is a list of classless CSS themes and frameworks. "Classless" means a styl
These are frameworks that do not force you to apply their classes to many elements but require something like `
` or a bit of your own CSS for a page to look right. They may offer optional classes to style your content.
+
### Chota
* [Repository](https://github.com/jenil/chota) ![GitHub stars](https://img.shields.io/github/stars/jenil/chota?style=flat-square) ![GitHub contributors](https://img.shields.io/github/contributors-anon/jenil/chota?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/jenil/chota?style=flat-square) ![GitHub open issues](https://img.shields.io/github/issues-raw/jenil/chota?style=flat-square) ![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/jenil/chota?style=flat-square)
diff --git a/README.md.njk b/README.md.njk
new file mode 100644
index 0000000..7c638c4
--- /dev/null
+++ b/README.md.njk
@@ -0,0 +1,60 @@
+# Classless CSS
+
+This is a list of classless CSS themes and frameworks. "Classless" means a style sheet does not define special classes you must add to your HTML elements to style these elements. As a result, you can style any plain-HTML page just by linking to the style sheet. This is useful, for example, in prototyping.
+
+
+## Contents
+
+{{ toc }}
+
+{% macro item(proj) %}
+### {{ proj.name }}
+
+{% if proj.note %}
+{{ proj.note }}
+
+{% endif %}
+{% if proj.website %}
+* [Website]({{ proj.website }})
+{% endif %}
+{% if proj.github %}
+* [Repository](https://github.com/{{ proj.github }}) ![GitHub stars](https://img.shields.io/github/stars/{{ proj.github }}?style=flat-square) ![GitHub contributors](https://img.shields.io/github/contributors-anon/{{ proj.github }}?style=flat-square) ![Last commit](https://img.shields.io/github/last-commit/{{ proj.github }}?style=flat-square) ![GitHub open issues](https://img.shields.io/github/issues-raw/{{ proj.github }}?style=flat-square) ![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/{{ proj.github }}?style=flat-square)
+{% endif %}
+{% if proj.demo %}
+* [Demo]({{ proj.demo }})
+{% endif %}
+
+{% for filename in proj.screenshots %}
+[![{{ filename }}](thumbnail/{{ filename }})](screenshot/{{ filename }})
+{% endfor %}
+{% endmacro %}
+
+## Classless
+
+{% for proj in projects %}
+{% if proj.tags.indexOf("classless") > -1 %}
+{{ item(proj) }}
+
+{% endif %}
+{% endfor %}
+## Class-light
+
+These are frameworks that do not force you to apply their classes to many elements but require something like `
` or a bit of your own CSS for a page to look right. They may offer optional classes to style your content.
+
+{% for proj in projects %}
+{% if proj.tags.indexOf("class-light") > -1 %}
+
+{{ item(proj) }}
+{% endif %}
+{% endfor %}
+
+## See also
+
+* [Drop-in switcher for previewing minimal CSS frameworks](https://github.com/dohliam/dropin-minimal-css)
+
+
+## License
+
+[![CC0](https://i.creativecommons.org/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)
+
+To the extent possible under law, D. Bohdan has waived all copyright and related or neighboring rights to this work. By contributing, you agree to release your contribution under the same terms.
diff --git a/data/class-light/chota/demo b/data/class-light/chota/demo
deleted file mode 100644
index 167e20d..0000000
--- a/data/class-light/chota/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://jenil.github.io/chota/
\ No newline at end of file
diff --git a/data/class-light/chota/github b/data/class-light/chota/github
deleted file mode 100644
index 1cadcc9..0000000
--- a/data/class-light/chota/github
+++ /dev/null
@@ -1 +0,0 @@
-jenil/chota
\ No newline at end of file
diff --git a/data/class-light/chota/name b/data/class-light/chota/name
deleted file mode 100644
index 812f169..0000000
--- a/data/class-light/chota/name
+++ /dev/null
@@ -1 +0,0 @@
-Chota
\ No newline at end of file
diff --git a/data/class-light/chota/screenshots b/data/class-light/chota/screenshots
deleted file mode 100644
index fafacd8..0000000
--- a/data/class-light/chota/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-chota.png
\ No newline at end of file
diff --git a/data/class-light/milligram/demo b/data/class-light/milligram/demo
deleted file mode 100644
index 7dbccdc..0000000
--- a/data/class-light/milligram/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://milligram.io/
\ No newline at end of file
diff --git a/data/class-light/milligram/github b/data/class-light/milligram/github
deleted file mode 100644
index c31f5cf..0000000
--- a/data/class-light/milligram/github
+++ /dev/null
@@ -1 +0,0 @@
-milligram/milligram
\ No newline at end of file
diff --git a/data/class-light/milligram/name b/data/class-light/milligram/name
deleted file mode 100644
index 8f09c02..0000000
--- a/data/class-light/milligram/name
+++ /dev/null
@@ -1 +0,0 @@
-Milligram
\ No newline at end of file
diff --git a/data/class-light/milligram/screenshots b/data/class-light/milligram/screenshots
deleted file mode 100644
index 8b37fe7..0000000
--- a/data/class-light/milligram/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-milligram.png
\ No newline at end of file
diff --git a/data/class-light/minicss/demo b/data/class-light/minicss/demo
deleted file mode 100644
index bd86065..0000000
--- a/data/class-light/minicss/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://minicss.org/docs
\ No newline at end of file
diff --git a/data/class-light/minicss/github b/data/class-light/minicss/github
deleted file mode 100644
index 744d868..0000000
--- a/data/class-light/minicss/github
+++ /dev/null
@@ -1 +0,0 @@
-Chalarangelo/mini.css
\ No newline at end of file
diff --git a/data/class-light/minicss/name b/data/class-light/minicss/name
deleted file mode 100644
index f2e1c87..0000000
--- a/data/class-light/minicss/name
+++ /dev/null
@@ -1 +0,0 @@
-mini.css
\ No newline at end of file
diff --git a/data/class-light/minicss/screenshots b/data/class-light/minicss/screenshots
deleted file mode 100644
index 7000b29..0000000
--- a/data/class-light/minicss/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-minicss.png
\ No newline at end of file
diff --git a/data/class-light/picnic/demo b/data/class-light/picnic/demo
deleted file mode 100644
index b1b1cb0..0000000
--- a/data/class-light/picnic/demo
+++ /dev/null
@@ -1 +0,0 @@
-http://picnicss.com/
\ No newline at end of file
diff --git a/data/class-light/picnic/github b/data/class-light/picnic/github
deleted file mode 100644
index 9969503..0000000
--- a/data/class-light/picnic/github
+++ /dev/null
@@ -1 +0,0 @@
-franciscop/picnic
\ No newline at end of file
diff --git a/data/class-light/picnic/name b/data/class-light/picnic/name
deleted file mode 100644
index 83bbebf..0000000
--- a/data/class-light/picnic/name
+++ /dev/null
@@ -1 +0,0 @@
-Picnic CSS
\ No newline at end of file
diff --git a/data/class-light/picnic/screenshots b/data/class-light/picnic/screenshots
deleted file mode 100644
index 105410a..0000000
--- a/data/class-light/picnic/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-picnic.png
\ No newline at end of file
diff --git a/data/class-light/sass-zero/github b/data/class-light/sass-zero/github
deleted file mode 100644
index c72783f..0000000
--- a/data/class-light/sass-zero/github
+++ /dev/null
@@ -1 +0,0 @@
-lazaronixon/sass-zero
diff --git a/data/class-light/sass-zero/name b/data/class-light/sass-zero/name
deleted file mode 100644
index 1891643..0000000
--- a/data/class-light/sass-zero/name
+++ /dev/null
@@ -1 +0,0 @@
-SASS-ZERO (Breadboard)
diff --git a/data/class-light/sass-zero/note b/data/class-light/sass-zero/note
deleted file mode 100644
index 78f4f1b..0000000
--- a/data/class-light/sass-zero/note
+++ /dev/null
@@ -1 +0,0 @@
-A class-light variant of a CSS framework with classes. Made for Ruby on Rails.
diff --git a/data/class-light/sass-zero/screenshots b/data/class-light/sass-zero/screenshots
deleted file mode 100644
index f8208ef..0000000
--- a/data/class-light/sass-zero/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-sass-zero.png
diff --git a/data/class-light/wing/demo b/data/class-light/wing/demo
deleted file mode 100644
index 434e719..0000000
--- a/data/class-light/wing/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://kbrsh.github.io/wing/
\ No newline at end of file
diff --git a/data/class-light/wing/github b/data/class-light/wing/github
deleted file mode 100644
index e0054c9..0000000
--- a/data/class-light/wing/github
+++ /dev/null
@@ -1 +0,0 @@
-kbrsh/wing
\ No newline at end of file
diff --git a/data/class-light/wing/name b/data/class-light/wing/name
deleted file mode 100644
index 2c1492a..0000000
--- a/data/class-light/wing/name
+++ /dev/null
@@ -1 +0,0 @@
-Wing
\ No newline at end of file
diff --git a/data/class-light/wing/screenshots b/data/class-light/wing/screenshots
deleted file mode 100644
index 3d19f9c..0000000
--- a/data/class-light/wing/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-wing.png
\ No newline at end of file
diff --git a/data/classless/almond.css/demo b/data/classless/almond.css/demo
deleted file mode 100644
index df5a1b7..0000000
--- a/data/classless/almond.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://alvaromontoro.github.io/almond.css/demo/
diff --git a/data/classless/almond.css/github b/data/classless/almond.css/github
deleted file mode 100644
index ee57fc1..0000000
--- a/data/classless/almond.css/github
+++ /dev/null
@@ -1 +0,0 @@
-alvaromontoro/almond.css
diff --git a/data/classless/almond.css/name b/data/classless/almond.css/name
deleted file mode 100644
index 79a28de..0000000
--- a/data/classless/almond.css/name
+++ /dev/null
@@ -1 +0,0 @@
-Almond.CSS
diff --git a/data/classless/almond.css/screenshots b/data/classless/almond.css/screenshots
deleted file mode 100644
index d8d657c..0000000
--- a/data/classless/almond.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-almond-css.png
diff --git a/data/classless/attricss/demo b/data/classless/attricss/demo
deleted file mode 100644
index 306b2e2..0000000
--- a/data/classless/attricss/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://raj457036.github.io/attriCSS/
\ No newline at end of file
diff --git a/data/classless/attricss/github b/data/classless/attricss/github
deleted file mode 100644
index 91ad497..0000000
--- a/data/classless/attricss/github
+++ /dev/null
@@ -1 +0,0 @@
-raj457036/attriCSS
\ No newline at end of file
diff --git a/data/classless/attricss/name b/data/classless/attricss/name
deleted file mode 100644
index 36da610..0000000
--- a/data/classless/attricss/name
+++ /dev/null
@@ -1 +0,0 @@
-attriCSS
\ No newline at end of file
diff --git a/data/classless/attricss/screenshots b/data/classless/attricss/screenshots
deleted file mode 100644
index c8947ee..0000000
--- a/data/classless/attricss/screenshots
+++ /dev/null
@@ -1,5 +0,0 @@
-attricss-0-brightlight-green.png
-attricss-1-midnight-green.png
-attricss-2-darkforest-green.png
-attricss-3-darkfairy-pink.png
-attricss-4-lightfairy-pink.png
\ No newline at end of file
diff --git a/data/classless/awsm.css/demo b/data/classless/awsm.css/demo
deleted file mode 100644
index fb28987..0000000
--- a/data/classless/awsm.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://igoradamenko.com/awsm.css/v2/elements.html
diff --git a/data/classless/awsm.css/name b/data/classless/awsm.css/name
deleted file mode 100644
index 812ac81..0000000
--- a/data/classless/awsm.css/name
+++ /dev/null
@@ -1 +0,0 @@
-awsm.css
\ No newline at end of file
diff --git a/data/classless/awsm.css/screenshots b/data/classless/awsm.css/screenshots
deleted file mode 100644
index f7f51a1..0000000
--- a/data/classless/awsm.css/screenshots
+++ /dev/null
@@ -1,8 +0,0 @@
-awsm.css-0.png
-awsm.css-1-gondola.png
-awsm.css-2-mischka.png
-awsm.css-3-big-stone.png
-awsm.css-4-black.png
-awsm.css-5-tasman.png
-awsm.css-6-pastel-pink.png
-awsm.css-7-pearl-lusta.png
\ No newline at end of file
diff --git a/data/classless/awsm.css/website b/data/classless/awsm.css/website
deleted file mode 100644
index ac0a82b..0000000
--- a/data/classless/awsm.css/website
+++ /dev/null
@@ -1 +0,0 @@
-https://igoradamenko.com/awsm.css/v2/
diff --git a/data/classless/axist/demo b/data/classless/axist/demo
deleted file mode 100644
index 1c5d6d9..0000000
--- a/data/classless/axist/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://ruanmartinelli.github.io/axist/
\ No newline at end of file
diff --git a/data/classless/axist/github b/data/classless/axist/github
deleted file mode 100644
index 62255a4..0000000
--- a/data/classless/axist/github
+++ /dev/null
@@ -1 +0,0 @@
-ruanmartinelli/axist
\ No newline at end of file
diff --git a/data/classless/axist/name b/data/classless/axist/name
deleted file mode 100644
index f258e67..0000000
--- a/data/classless/axist/name
+++ /dev/null
@@ -1 +0,0 @@
-axist
\ No newline at end of file
diff --git a/data/classless/axist/screenshots b/data/classless/axist/screenshots
deleted file mode 100644
index f605463..0000000
--- a/data/classless/axist/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-axist.png
\ No newline at end of file
diff --git a/data/classless/bahunya/demo b/data/classless/bahunya/demo
deleted file mode 100644
index 4a70f6f..0000000
--- a/data/classless/bahunya/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://kimeiga.github.io/bahunya/
\ No newline at end of file
diff --git a/data/classless/bahunya/github b/data/classless/bahunya/github
deleted file mode 100644
index 91ca741..0000000
--- a/data/classless/bahunya/github
+++ /dev/null
@@ -1 +0,0 @@
-Kimeiga/bahunya
\ No newline at end of file
diff --git a/data/classless/bahunya/name b/data/classless/bahunya/name
deleted file mode 100644
index bf65108..0000000
--- a/data/classless/bahunya/name
+++ /dev/null
@@ -1 +0,0 @@
-Bahunya
\ No newline at end of file
diff --git a/data/classless/bahunya/screenshots b/data/classless/bahunya/screenshots
deleted file mode 100644
index 3b0eccd..0000000
--- a/data/classless/bahunya/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-bahunya.png
\ No newline at end of file
diff --git a/data/classless/bamboo/demo b/data/classless/bamboo/demo
deleted file mode 100644
index 3a8ebb9..0000000
--- a/data/classless/bamboo/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://rilwis.github.io/bamboo/demo/
\ No newline at end of file
diff --git a/data/classless/bamboo/github b/data/classless/bamboo/github
deleted file mode 100644
index 99fc25e..0000000
--- a/data/classless/bamboo/github
+++ /dev/null
@@ -1 +0,0 @@
-rilwis/bamboo
\ No newline at end of file
diff --git a/data/classless/bamboo/name b/data/classless/bamboo/name
deleted file mode 100644
index 9908e77..0000000
--- a/data/classless/bamboo/name
+++ /dev/null
@@ -1 +0,0 @@
-Bamboo CSS
\ No newline at end of file
diff --git a/data/classless/bamboo/screenshots b/data/classless/bamboo/screenshots
deleted file mode 100644
index c94dc60..0000000
--- a/data/classless/bamboo/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-bamboo-css.png
\ No newline at end of file
diff --git a/data/classless/barecss/demo b/data/classless/barecss/demo
deleted file mode 100644
index 5c28b2e..0000000
--- a/data/classless/barecss/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://web.archive.org/web/20191010034508/http://barecss.com/
\ No newline at end of file
diff --git a/data/classless/barecss/github b/data/classless/barecss/github
deleted file mode 100644
index 7265287..0000000
--- a/data/classless/barecss/github
+++ /dev/null
@@ -1 +0,0 @@
-longsien/BareCSS
\ No newline at end of file
diff --git a/data/classless/barecss/name b/data/classless/barecss/name
deleted file mode 100644
index b8b1e96..0000000
--- a/data/classless/barecss/name
+++ /dev/null
@@ -1 +0,0 @@
-BareCSS
\ No newline at end of file
diff --git a/data/classless/barecss/screenshots b/data/classless/barecss/screenshots
deleted file mode 100644
index 937a07c..0000000
--- a/data/classless/barecss/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-barecss.png
\ No newline at end of file
diff --git a/data/classless/basic.css/demo b/data/classless/basic.css/demo
deleted file mode 100644
index 70380f9..0000000
--- a/data/classless/basic.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://vladocar.github.io/Basic.css/
\ No newline at end of file
diff --git a/data/classless/basic.css/github b/data/classless/basic.css/github
deleted file mode 100644
index 02f8e43..0000000
--- a/data/classless/basic.css/github
+++ /dev/null
@@ -1 +0,0 @@
-vladocar/Basic.css
\ No newline at end of file
diff --git a/data/classless/basic.css/name b/data/classless/basic.css/name
deleted file mode 100644
index 93f3a55..0000000
--- a/data/classless/basic.css/name
+++ /dev/null
@@ -1 +0,0 @@
-Basic.css
\ No newline at end of file
diff --git a/data/classless/basic.css/screenshots b/data/classless/basic.css/screenshots
deleted file mode 100644
index dfef618..0000000
--- a/data/classless/basic.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-basic.css.png
\ No newline at end of file
diff --git a/data/classless/bolt.css/demo b/data/classless/bolt.css/demo
deleted file mode 100644
index 7aa6447..0000000
--- a/data/classless/bolt.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://boltcss.com/
diff --git a/data/classless/bolt.css/github b/data/classless/bolt.css/github
deleted file mode 100644
index a576767..0000000
--- a/data/classless/bolt.css/github
+++ /dev/null
@@ -1 +0,0 @@
-tbolt/boltcss
diff --git a/data/classless/bolt.css/name b/data/classless/bolt.css/name
deleted file mode 100644
index 7df8748..0000000
--- a/data/classless/bolt.css/name
+++ /dev/null
@@ -1 +0,0 @@
-Bolt.css
diff --git a/data/classless/bolt.css/screenshots b/data/classless/bolt.css/screenshots
deleted file mode 100644
index 1356921..0000000
--- a/data/classless/bolt.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-bolt.css.png
diff --git a/data/classless/classless.css/demo b/data/classless/classless.css/demo
deleted file mode 100644
index 157a0a4..0000000
--- a/data/classless/classless.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-http://classless.de/
\ No newline at end of file
diff --git a/data/classless/classless.css/github b/data/classless/classless.css/github
deleted file mode 100644
index 2d7204d..0000000
--- a/data/classless/classless.css/github
+++ /dev/null
@@ -1 +0,0 @@
-emareg/classlesscss
\ No newline at end of file
diff --git a/data/classless/classless.css/name b/data/classless/classless.css/name
deleted file mode 100644
index 0de43c3..0000000
--- a/data/classless/classless.css/name
+++ /dev/null
@@ -1 +0,0 @@
-Classless.css
\ No newline at end of file
diff --git a/data/classless/classless.css/screenshots b/data/classless/classless.css/screenshots
deleted file mode 100644
index 6e00e98..0000000
--- a/data/classless/classless.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-classless.css.png
\ No newline at end of file
diff --git a/data/classless/concrete.css/demo b/data/classless/concrete.css/demo
deleted file mode 100644
index 48f988c..0000000
--- a/data/classless/concrete.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://concrete.style/
\ No newline at end of file
diff --git a/data/classless/concrete.css/github b/data/classless/concrete.css/github
deleted file mode 100644
index 11d55e9..0000000
--- a/data/classless/concrete.css/github
+++ /dev/null
@@ -1 +0,0 @@
-louismerlin/concrete.css
\ No newline at end of file
diff --git a/data/classless/concrete.css/name b/data/classless/concrete.css/name
deleted file mode 100644
index b3b24fa..0000000
--- a/data/classless/concrete.css/name
+++ /dev/null
@@ -1 +0,0 @@
-concrete.css
\ No newline at end of file
diff --git a/data/classless/concrete.css/screenshots b/data/classless/concrete.css/screenshots
deleted file mode 100644
index dbc9c06..0000000
--- a/data/classless/concrete.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-concrete.css.png
\ No newline at end of file
diff --git a/data/classless/downstyler/demo b/data/classless/downstyler/demo
deleted file mode 100644
index 216a9d2..0000000
--- a/data/classless/downstyler/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://waldyrious.github.io/downstyler
\ No newline at end of file
diff --git a/data/classless/downstyler/github b/data/classless/downstyler/github
deleted file mode 100644
index 68982a9..0000000
--- a/data/classless/downstyler/github
+++ /dev/null
@@ -1 +0,0 @@
-waldyrious/downstyler
\ No newline at end of file
diff --git a/data/classless/downstyler/name b/data/classless/downstyler/name
deleted file mode 100644
index 0472452..0000000
--- a/data/classless/downstyler/name
+++ /dev/null
@@ -1 +0,0 @@
-Downstyler
\ No newline at end of file
diff --git a/data/classless/downstyler/screenshots b/data/classless/downstyler/screenshots
deleted file mode 100644
index 28a84ee..0000000
--- a/data/classless/downstyler/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-downstyler.png
\ No newline at end of file
diff --git a/data/classless/holiday.css/demo b/data/classless/holiday.css/demo
deleted file mode 100644
index 9f22bab..0000000
--- a/data/classless/holiday.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://holidaycss.js.org/
\ No newline at end of file
diff --git a/data/classless/holiday.css/github b/data/classless/holiday.css/github
deleted file mode 100644
index 9b15b1e..0000000
--- a/data/classless/holiday.css/github
+++ /dev/null
@@ -1 +0,0 @@
-EvgenyOrekhov/holiday.css
\ No newline at end of file
diff --git a/data/classless/holiday.css/name b/data/classless/holiday.css/name
deleted file mode 100644
index 6af62a2..0000000
--- a/data/classless/holiday.css/name
+++ /dev/null
@@ -1 +0,0 @@
-holiday.css
\ No newline at end of file
diff --git a/data/classless/holiday.css/screenshots b/data/classless/holiday.css/screenshots
deleted file mode 100644
index 66cd333..0000000
--- a/data/classless/holiday.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-holiday.css.png
\ No newline at end of file
diff --git a/data/classless/latex/demo b/data/classless/latex/demo
deleted file mode 100644
index ecdb5a2..0000000
--- a/data/classless/latex/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://davidrzs.github.io/latexcss/
\ No newline at end of file
diff --git a/data/classless/latex/github b/data/classless/latex/github
deleted file mode 100644
index b9e989e..0000000
--- a/data/classless/latex/github
+++ /dev/null
@@ -1 +0,0 @@
-davidrzs/latexcss
\ No newline at end of file
diff --git a/data/classless/latex/name b/data/classless/latex/name
deleted file mode 100644
index b4468a9..0000000
--- a/data/classless/latex/name
+++ /dev/null
@@ -1 +0,0 @@
-LatexCSS
\ No newline at end of file
diff --git a/data/classless/latex/screenshots b/data/classless/latex/screenshots
deleted file mode 100644
index 7f27c26..0000000
--- a/data/classless/latex/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-latex.png
\ No newline at end of file
diff --git a/data/classless/markdowncss-air/demo b/data/classless/markdowncss-air/demo
deleted file mode 100644
index f68d905..0000000
--- a/data/classless/markdowncss-air/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://markdowncss.github.io/air/
diff --git a/data/classless/markdowncss-air/github b/data/classless/markdowncss-air/github
deleted file mode 100644
index 7125fbb..0000000
--- a/data/classless/markdowncss-air/github
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss/air
diff --git a/data/classless/markdowncss-air/name b/data/classless/markdowncss-air/name
deleted file mode 100644
index 8e28317..0000000
--- a/data/classless/markdowncss-air/name
+++ /dev/null
@@ -1 +0,0 @@
-Markdown CSS — Air
diff --git a/data/classless/markdowncss-air/screenshots b/data/classless/markdowncss-air/screenshots
deleted file mode 100644
index eeedc1b..0000000
--- a/data/classless/markdowncss-air/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss-air.png
diff --git a/data/classless/markdowncss-modest/demo b/data/classless/markdowncss-modest/demo
deleted file mode 100644
index 76af399..0000000
--- a/data/classless/markdowncss-modest/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://markdowncss.github.io/modest/
diff --git a/data/classless/markdowncss-modest/github b/data/classless/markdowncss-modest/github
deleted file mode 100644
index 1781158..0000000
--- a/data/classless/markdowncss-modest/github
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss/modest
diff --git a/data/classless/markdowncss-modest/name b/data/classless/markdowncss-modest/name
deleted file mode 100644
index 6223f7e..0000000
--- a/data/classless/markdowncss-modest/name
+++ /dev/null
@@ -1 +0,0 @@
-Markdown CSS — Modest
diff --git a/data/classless/markdowncss-modest/screenshots b/data/classless/markdowncss-modest/screenshots
deleted file mode 100644
index 3565b3c..0000000
--- a/data/classless/markdowncss-modest/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss-modest.png
diff --git a/data/classless/markdowncss-retro/demo b/data/classless/markdowncss-retro/demo
deleted file mode 100644
index 5dfe3a6..0000000
--- a/data/classless/markdowncss-retro/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://markdowncss.github.io/retro/
diff --git a/data/classless/markdowncss-retro/github b/data/classless/markdowncss-retro/github
deleted file mode 100644
index 52422f5..0000000
--- a/data/classless/markdowncss-retro/github
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss/retro
diff --git a/data/classless/markdowncss-retro/name b/data/classless/markdowncss-retro/name
deleted file mode 100644
index 25bd827..0000000
--- a/data/classless/markdowncss-retro/name
+++ /dev/null
@@ -1 +0,0 @@
-Markdown CSS — Retro
diff --git a/data/classless/markdowncss-retro/screenshots b/data/classless/markdowncss-retro/screenshots
deleted file mode 100644
index 64342c6..0000000
--- a/data/classless/markdowncss-retro/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss-retro.png
diff --git a/data/classless/markdowncss-splendor/demo b/data/classless/markdowncss-splendor/demo
deleted file mode 100644
index 5a45753..0000000
--- a/data/classless/markdowncss-splendor/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://markdowncss.github.io/splendor/
\ No newline at end of file
diff --git a/data/classless/markdowncss-splendor/github b/data/classless/markdowncss-splendor/github
deleted file mode 100644
index ce58897..0000000
--- a/data/classless/markdowncss-splendor/github
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss/splendor
\ No newline at end of file
diff --git a/data/classless/markdowncss-splendor/name b/data/classless/markdowncss-splendor/name
deleted file mode 100644
index 604454e..0000000
--- a/data/classless/markdowncss-splendor/name
+++ /dev/null
@@ -1 +0,0 @@
-Markdown CSS — Splendor
diff --git a/data/classless/markdowncss-splendor/screenshots b/data/classless/markdowncss-splendor/screenshots
deleted file mode 100644
index c3298b6..0000000
--- a/data/classless/markdowncss-splendor/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-markdowncss-splendor.png
\ No newline at end of file
diff --git a/data/classless/marx/demo b/data/classless/marx/demo
deleted file mode 100644
index edbb43a..0000000
--- a/data/classless/marx/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://codepen.io/mblode/details/JdYbJj
\ No newline at end of file
diff --git a/data/classless/marx/github b/data/classless/marx/github
deleted file mode 100644
index f7cfa09..0000000
--- a/data/classless/marx/github
+++ /dev/null
@@ -1 +0,0 @@
-mblode/marx
\ No newline at end of file
diff --git a/data/classless/marx/name b/data/classless/marx/name
deleted file mode 100644
index c26595c..0000000
--- a/data/classless/marx/name
+++ /dev/null
@@ -1 +0,0 @@
-Marx
\ No newline at end of file
diff --git a/data/classless/marx/screenshots b/data/classless/marx/screenshots
deleted file mode 100644
index 3eafae0..0000000
--- a/data/classless/marx/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-marx.png
\ No newline at end of file
diff --git a/data/classless/mercurycss/demo b/data/classless/mercurycss/demo
deleted file mode 100644
index 6db0892..0000000
--- a/data/classless/mercurycss/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://wmeredith.github.io/MercuryCSS/
\ No newline at end of file
diff --git a/data/classless/mercurycss/github b/data/classless/mercurycss/github
deleted file mode 100644
index 73fe0b4..0000000
--- a/data/classless/mercurycss/github
+++ /dev/null
@@ -1 +0,0 @@
-wmeredith/MercuryCSS
\ No newline at end of file
diff --git a/data/classless/mercurycss/name b/data/classless/mercurycss/name
deleted file mode 100644
index 7927345..0000000
--- a/data/classless/mercurycss/name
+++ /dev/null
@@ -1 +0,0 @@
-MercuryCSS
\ No newline at end of file
diff --git a/data/classless/mercurycss/screenshots b/data/classless/mercurycss/screenshots
deleted file mode 100644
index 44ad62a..0000000
--- a/data/classless/mercurycss/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-mercurycss.png
\ No newline at end of file
diff --git a/data/classless/mvp.css/demo b/data/classless/mvp.css/demo
deleted file mode 100644
index 301f9c6..0000000
--- a/data/classless/mvp.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://andybrewer.github.io/mvp/
\ No newline at end of file
diff --git a/data/classless/mvp.css/github b/data/classless/mvp.css/github
deleted file mode 100644
index fafdd1a..0000000
--- a/data/classless/mvp.css/github
+++ /dev/null
@@ -1 +0,0 @@
-andybrewer/mvp
\ No newline at end of file
diff --git a/data/classless/mvp.css/name b/data/classless/mvp.css/name
deleted file mode 100644
index d4bf753..0000000
--- a/data/classless/mvp.css/name
+++ /dev/null
@@ -1 +0,0 @@
-MVP.css
\ No newline at end of file
diff --git a/data/classless/mvp.css/screenshots b/data/classless/mvp.css/screenshots
deleted file mode 100644
index 7bfb9f9..0000000
--- a/data/classless/mvp.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-mvp.css.png
\ No newline at end of file
diff --git a/data/classless/new.css/demo b/data/classless/new.css/demo
deleted file mode 100644
index 810e841..0000000
--- a/data/classless/new.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://newcss.net/demo/
\ No newline at end of file
diff --git a/data/classless/new.css/github b/data/classless/new.css/github
deleted file mode 100644
index 6af77d8..0000000
--- a/data/classless/new.css/github
+++ /dev/null
@@ -1 +0,0 @@
-xz/new.css
\ No newline at end of file
diff --git a/data/classless/new.css/name b/data/classless/new.css/name
deleted file mode 100644
index aead7f5..0000000
--- a/data/classless/new.css/name
+++ /dev/null
@@ -1 +0,0 @@
-new.css
\ No newline at end of file
diff --git a/data/classless/new.css/screenshots b/data/classless/new.css/screenshots
deleted file mode 100644
index 5d871cb..0000000
--- a/data/classless/new.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-new.css.png
\ No newline at end of file
diff --git a/data/classless/no-class/demo b/data/classless/no-class/demo
deleted file mode 100644
index ffb69dd..0000000
--- a/data/classless/no-class/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://davidpaulsson.se/no-class/
\ No newline at end of file
diff --git a/data/classless/no-class/github b/data/classless/no-class/github
deleted file mode 100644
index da58a70..0000000
--- a/data/classless/no-class/github
+++ /dev/null
@@ -1 +0,0 @@
-davidpaulsson/no-class
\ No newline at end of file
diff --git a/data/classless/no-class/name b/data/classless/no-class/name
deleted file mode 100644
index d0a9dc9..0000000
--- a/data/classless/no-class/name
+++ /dev/null
@@ -1 +0,0 @@
-no-class.css
\ No newline at end of file
diff --git a/data/classless/no-class/screenshots b/data/classless/no-class/screenshots
deleted file mode 100644
index ca9711a..0000000
--- a/data/classless/no-class/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-no-class.css.png
\ No newline at end of file
diff --git a/data/classless/pico/demo b/data/classless/pico/demo
deleted file mode 100644
index dd40f7c..0000000
--- a/data/classless/pico/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://picocss.com/examples/preview/
\ No newline at end of file
diff --git a/data/classless/pico/github b/data/classless/pico/github
deleted file mode 100644
index 330149d..0000000
--- a/data/classless/pico/github
+++ /dev/null
@@ -1 +0,0 @@
-picocss/pico
\ No newline at end of file
diff --git a/data/classless/pico/name b/data/classless/pico/name
deleted file mode 100644
index cb66e1e..0000000
--- a/data/classless/pico/name
+++ /dev/null
@@ -1 +0,0 @@
-Pico.css
\ No newline at end of file
diff --git a/data/classless/pico/screenshots b/data/classless/pico/screenshots
deleted file mode 100644
index e5a6d87..0000000
--- a/data/classless/pico/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-pico-css.png
\ No newline at end of file
diff --git a/data/classless/ridge/demo b/data/classless/ridge/demo
deleted file mode 100644
index a92e04d..0000000
--- a/data/classless/ridge/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://ridgecss.com/
\ No newline at end of file
diff --git a/data/classless/ridge/github b/data/classless/ridge/github
deleted file mode 100644
index 0243f38..0000000
--- a/data/classless/ridge/github
+++ /dev/null
@@ -1 +0,0 @@
-swlkr/ridgecss
\ No newline at end of file
diff --git a/data/classless/ridge/name b/data/classless/ridge/name
deleted file mode 100644
index c8684e3..0000000
--- a/data/classless/ridge/name
+++ /dev/null
@@ -1 +0,0 @@
-ridge.css
\ No newline at end of file
diff --git a/data/classless/ridge/screenshots b/data/classless/ridge/screenshots
deleted file mode 100644
index 10b7de1..0000000
--- a/data/classless/ridge/screenshots
+++ /dev/null
@@ -1,2 +0,0 @@
-ridge.css-light.png
-ridge.css-dark.png
\ No newline at end of file
diff --git a/data/classless/sakura/demo b/data/classless/sakura/demo
deleted file mode 100644
index bedefde..0000000
--- a/data/classless/sakura/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://oxal.org/projects/sakura/demo/
\ No newline at end of file
diff --git a/data/classless/sakura/github b/data/classless/sakura/github
deleted file mode 100644
index 8f003e4..0000000
--- a/data/classless/sakura/github
+++ /dev/null
@@ -1 +0,0 @@
-oxalorg/sakura
\ No newline at end of file
diff --git a/data/classless/sakura/name b/data/classless/sakura/name
deleted file mode 100644
index ab97e32..0000000
--- a/data/classless/sakura/name
+++ /dev/null
@@ -1 +0,0 @@
-sakura
\ No newline at end of file
diff --git a/data/classless/sakura/screenshots b/data/classless/sakura/screenshots
deleted file mode 100644
index ffc5d30..0000000
--- a/data/classless/sakura/screenshots
+++ /dev/null
@@ -1,5 +0,0 @@
-sakura-normalize-0.png
-sakura-normalize-1-earthly.png
-sakura-normalize-2-vader.png
-sakura-normalize-3-dark.png
-sakura-normalize-4-dark-solarized.png
\ No newline at end of file
diff --git a/data/classless/simple/demo b/data/classless/simple/demo
deleted file mode 100644
index 41b9ef4..0000000
--- a/data/classless/simple/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://simplecss.org/demo
\ No newline at end of file
diff --git a/data/classless/simple/github b/data/classless/simple/github
deleted file mode 100644
index 5cf50c2..0000000
--- a/data/classless/simple/github
+++ /dev/null
@@ -1 +0,0 @@
-kevquirk/simple.css
\ No newline at end of file
diff --git a/data/classless/simple/name b/data/classless/simple/name
deleted file mode 100644
index 2d20f85..0000000
--- a/data/classless/simple/name
+++ /dev/null
@@ -1 +0,0 @@
-Simple.css
\ No newline at end of file
diff --git a/data/classless/simple/screenshots b/data/classless/simple/screenshots
deleted file mode 100644
index 2a75697..0000000
--- a/data/classless/simple/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-simple-css.png
\ No newline at end of file
diff --git a/data/classless/spcss/demo b/data/classless/spcss/demo
deleted file mode 100644
index cebf90c..0000000
--- a/data/classless/spcss/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://susam.github.io/spcss/
\ No newline at end of file
diff --git a/data/classless/spcss/github b/data/classless/spcss/github
deleted file mode 100644
index f4a9b86..0000000
--- a/data/classless/spcss/github
+++ /dev/null
@@ -1 +0,0 @@
-susam/spcss
\ No newline at end of file
diff --git a/data/classless/spcss/name b/data/classless/spcss/name
deleted file mode 100644
index f9682aa..0000000
--- a/data/classless/spcss/name
+++ /dev/null
@@ -1 +0,0 @@
-SPCSS
\ No newline at end of file
diff --git a/data/classless/spcss/screenshots b/data/classless/spcss/screenshots
deleted file mode 100644
index 49c3c6f..0000000
--- a/data/classless/spcss/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-spcss.png
\ No newline at end of file
diff --git a/data/classless/style.css/demo b/data/classless/style.css/demo
deleted file mode 100644
index 5b53e40..0000000
--- a/data/classless/style.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://css-pkg.github.io/style.css/
\ No newline at end of file
diff --git a/data/classless/style.css/github b/data/classless/style.css/github
deleted file mode 100644
index 79b2203..0000000
--- a/data/classless/style.css/github
+++ /dev/null
@@ -1 +0,0 @@
-css-pkg/style.css
\ No newline at end of file
diff --git a/data/classless/style.css/name b/data/classless/style.css/name
deleted file mode 100644
index f6b71cc..0000000
--- a/data/classless/style.css/name
+++ /dev/null
@@ -1 +0,0 @@
-style.css
\ No newline at end of file
diff --git a/data/classless/style.css/screenshots b/data/classless/style.css/screenshots
deleted file mode 100644
index a5ec372..0000000
--- a/data/classless/style.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-style.css.png
\ No newline at end of file
diff --git a/data/classless/stylize.css/demo b/data/classless/stylize.css/demo
deleted file mode 100644
index 6eb8e21..0000000
--- a/data/classless/stylize.css/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://vasanthv.github.io/stylize.css/demo.html
\ No newline at end of file
diff --git a/data/classless/stylize.css/github b/data/classless/stylize.css/github
deleted file mode 100644
index a751477..0000000
--- a/data/classless/stylize.css/github
+++ /dev/null
@@ -1 +0,0 @@
-vasanthv/stylize.css
\ No newline at end of file
diff --git a/data/classless/stylize.css/name b/data/classless/stylize.css/name
deleted file mode 100644
index dc47e0c..0000000
--- a/data/classless/stylize.css/name
+++ /dev/null
@@ -1 +0,0 @@
-Stylize.css
\ No newline at end of file
diff --git a/data/classless/stylize.css/screenshots b/data/classless/stylize.css/screenshots
deleted file mode 100644
index 4b2702c..0000000
--- a/data/classless/stylize.css/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-stylize.css.png
\ No newline at end of file
diff --git a/data/classless/tacit/demo b/data/classless/tacit/demo
deleted file mode 100644
index 257ba98..0000000
--- a/data/classless/tacit/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://yegor256.github.io/tacit/
\ No newline at end of file
diff --git a/data/classless/tacit/github b/data/classless/tacit/github
deleted file mode 100644
index a39c09c..0000000
--- a/data/classless/tacit/github
+++ /dev/null
@@ -1 +0,0 @@
-yegor256/tacit
\ No newline at end of file
diff --git a/data/classless/tacit/name b/data/classless/tacit/name
deleted file mode 100644
index b818453..0000000
--- a/data/classless/tacit/name
+++ /dev/null
@@ -1 +0,0 @@
-tacit
\ No newline at end of file
diff --git a/data/classless/tacit/screenshots b/data/classless/tacit/screenshots
deleted file mode 100644
index fd2d7d1..0000000
--- a/data/classless/tacit/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-tacit.png
\ No newline at end of file
diff --git a/data/classless/tufte/demo b/data/classless/tufte/demo
deleted file mode 100644
index 75cd66c..0000000
--- a/data/classless/tufte/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://edwardtufte.github.io/tufte-css/
\ No newline at end of file
diff --git a/data/classless/tufte/github b/data/classless/tufte/github
deleted file mode 100644
index 1d8701d..0000000
--- a/data/classless/tufte/github
+++ /dev/null
@@ -1 +0,0 @@
-edwardtufte/tufte-css
\ No newline at end of file
diff --git a/data/classless/tufte/name b/data/classless/tufte/name
deleted file mode 100644
index b85541b..0000000
--- a/data/classless/tufte/name
+++ /dev/null
@@ -1 +0,0 @@
-Tufte CSS
\ No newline at end of file
diff --git a/data/classless/tufte/screenshots b/data/classless/tufte/screenshots
deleted file mode 100644
index c414cbc..0000000
--- a/data/classless/tufte/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-tufte-css.png
\ No newline at end of file
diff --git a/data/classless/w3c/demo b/data/classless/w3c/demo
deleted file mode 100644
index b4c3373..0000000
--- a/data/classless/w3c/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://www.w3.org/StyleSheets/Core/preview
\ No newline at end of file
diff --git a/data/classless/w3c/name b/data/classless/w3c/name
deleted file mode 100644
index a86f8d8..0000000
--- a/data/classless/w3c/name
+++ /dev/null
@@ -1 +0,0 @@
-W3C Core Styles
\ No newline at end of file
diff --git a/data/classless/w3c/screenshots b/data/classless/w3c/screenshots
deleted file mode 100644
index b454095..0000000
--- a/data/classless/w3c/screenshots
+++ /dev/null
@@ -1,8 +0,0 @@
-w3c-core-styles-0-oldstyle.png
-w3c-core-styles-1-modernist.png
-w3c-core-styles-2-midnight.png
-w3c-core-styles-3-ultramarine.png
-w3c-core-styles-4-swiss.png
-w3c-core-styles-5-chocolate.png
-w3c-core-styles-6-traditional.png
-w3c-core-styles-7-steely.png
\ No newline at end of file
diff --git a/data/classless/w3c/website b/data/classless/w3c/website
deleted file mode 100644
index 324629c..0000000
--- a/data/classless/w3c/website
+++ /dev/null
@@ -1 +0,0 @@
-https://www.w3.org/StyleSheets/Core/Overview
\ No newline at end of file
diff --git a/data/classless/water/demo b/data/classless/water/demo
deleted file mode 100644
index e48601f..0000000
--- a/data/classless/water/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://kognise.github.io/water.css/
\ No newline at end of file
diff --git a/data/classless/water/github b/data/classless/water/github
deleted file mode 100644
index e55d4f5..0000000
--- a/data/classless/water/github
+++ /dev/null
@@ -1 +0,0 @@
-kognise/water.css
\ No newline at end of file
diff --git a/data/classless/water/name b/data/classless/water/name
deleted file mode 100644
index 45917c8..0000000
--- a/data/classless/water/name
+++ /dev/null
@@ -1 +0,0 @@
-water.css
\ No newline at end of file
diff --git a/data/classless/water/screenshots b/data/classless/water/screenshots
deleted file mode 100644
index 2d4f475..0000000
--- a/data/classless/water/screenshots
+++ /dev/null
@@ -1,2 +0,0 @@
-water.css-0-dark.png
-water.css-1-light.png
\ No newline at end of file
diff --git a/data/classless/writ/demo b/data/classless/writ/demo
deleted file mode 100644
index 144dd2e..0000000
--- a/data/classless/writ/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://writ.cmcenroe.me/
\ No newline at end of file
diff --git a/data/classless/writ/github b/data/classless/writ/github
deleted file mode 100644
index 83622c3..0000000
--- a/data/classless/writ/github
+++ /dev/null
@@ -1 +0,0 @@
-programble/writ
\ No newline at end of file
diff --git a/data/classless/writ/name b/data/classless/writ/name
deleted file mode 100644
index 034010f..0000000
--- a/data/classless/writ/name
+++ /dev/null
@@ -1 +0,0 @@
-Writ
\ No newline at end of file
diff --git a/data/classless/writ/screenshots b/data/classless/writ/screenshots
deleted file mode 100644
index 4081e0e..0000000
--- a/data/classless/writ/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-writ.png
\ No newline at end of file
diff --git a/data/classless/yorha/demo b/data/classless/yorha/demo
deleted file mode 100644
index aac5d99..0000000
--- a/data/classless/yorha/demo
+++ /dev/null
@@ -1 +0,0 @@
-https://metakirby5.github.io/yorha/
\ No newline at end of file
diff --git a/data/classless/yorha/github b/data/classless/yorha/github
deleted file mode 100644
index 9162925..0000000
--- a/data/classless/yorha/github
+++ /dev/null
@@ -1 +0,0 @@
-metakirby5/yorha
\ No newline at end of file
diff --git a/data/classless/yorha/name b/data/classless/yorha/name
deleted file mode 100644
index de034a0..0000000
--- a/data/classless/yorha/name
+++ /dev/null
@@ -1 +0,0 @@
-YoRHa
\ No newline at end of file
diff --git a/data/classless/yorha/screenshots b/data/classless/yorha/screenshots
deleted file mode 100644
index 620b84e..0000000
--- a/data/classless/yorha/screenshots
+++ /dev/null
@@ -1 +0,0 @@
-yorha.png
\ No newline at end of file
diff --git a/data/projects.toml b/data/projects.toml
new file mode 100644
index 0000000..ab42c18
--- /dev/null
+++ b/data/projects.toml
@@ -0,0 +1,365 @@
+["Almond.CSS"]
+demo = "https://alvaromontoro.github.io/almond.css/demo/"
+github = "alvaromontoro/almond.css"
+note = ""
+website = ""
+screenshots = ["almond-css.png"]
+tags = ["classless"]
+
+[attriCSS]
+demo = "https://raj457036.github.io/attriCSS/"
+github = "raj457036/attriCSS"
+note = ""
+website = ""
+screenshots = [
+ "attricss-0-brightlight-green.png",
+ "attricss-1-midnight-green.png",
+ "attricss-2-darkforest-green.png",
+ "attricss-3-darkfairy-pink.png",
+ "attricss-4-lightfairy-pink.png",
+]
+tags = ["classless"]
+
+["awsm.css"]
+demo = "https://igoradamenko.com/awsm.css/v2/elements.html"
+github = ""
+note = ""
+website = "https://igoradamenko.com/awsm.css/v2/"
+screenshots = [
+ "awsm.css-0.png",
+ "awsm.css-1-gondola.png",
+ "awsm.css-2-mischka.png",
+ "awsm.css-3-big-stone.png",
+ "awsm.css-4-black.png",
+ "awsm.css-5-tasman.png",
+ "awsm.css-6-pastel-pink.png",
+ "awsm.css-7-pearl-lusta.png",
+]
+tags = ["classless"]
+
+[axist]
+demo = "https://ruanmartinelli.github.io/axist/"
+github = "ruanmartinelli/axist"
+note = ""
+website = ""
+screenshots = ["axist.png"]
+tags = ["classless"]
+
+[Bahunya]
+demo = "https://kimeiga.github.io/bahunya/"
+github = "Kimeiga/bahunya"
+note = ""
+website = ""
+screenshots = ["bahunya.png"]
+tags = ["classless"]
+
+["Bamboo CSS"]
+demo = "https://rilwis.github.io/bamboo/demo/"
+github = "rilwis/bamboo"
+note = ""
+website = ""
+screenshots = ["bamboo-css.png"]
+tags = ["classless"]
+
+[BareCSS]
+demo = "https://web.archive.org/web/20191010034508/http://barecss.com/"
+github = "longsien/BareCSS"
+note = ""
+website = ""
+screenshots = ["barecss.png"]
+tags = ["classless"]
+
+["Basic.css"]
+demo = "https://vladocar.github.io/Basic.css/"
+github = "vladocar/Basic.css"
+note = ""
+website = ""
+screenshots = ["basic.css.png"]
+tags = ["classless"]
+
+["Bolt.css"]
+demo = "https://boltcss.com/"
+github = "tbolt/boltcss"
+note = ""
+website = ""
+screenshots = ["bolt.css.png"]
+tags = ["classless"]
+
+["Classless.css"]
+demo = "http://classless.de/"
+github = "emareg/classlesscss"
+note = ""
+website = ""
+screenshots = ["classless.css.png"]
+tags = ["classless"]
+
+["concrete.css"]
+demo = "https://concrete.style/"
+github = "louismerlin/concrete.css"
+note = ""
+website = ""
+screenshots = ["concrete.css.png"]
+tags = ["classless"]
+
+[Downstyler]
+demo = "https://waldyrious.github.io/downstyler"
+github = "waldyrious/downstyler"
+note = ""
+website = ""
+screenshots = ["downstyler.png"]
+tags = ["classless"]
+
+["holiday.css"]
+demo = "https://holidaycss.js.org/"
+github = "EvgenyOrekhov/holiday.css"
+note = ""
+website = ""
+screenshots = ["holiday.css.png"]
+tags = ["classless"]
+
+[LatexCSS]
+demo = "https://davidrzs.github.io/latexcss/"
+github = "davidrzs/latexcss"
+note = ""
+website = ""
+screenshots = ["latex.png"]
+tags = ["classless"]
+
+["Markdown CSS — Air"]
+demo = "https://markdowncss.github.io/air/"
+github = "markdowncss/air"
+note = ""
+website = ""
+screenshots = ["markdowncss-air.png"]
+tags = ["classless"]
+
+["Markdown CSS — Modest"]
+demo = "https://markdowncss.github.io/modest/"
+github = "markdowncss/modest"
+note = ""
+website = ""
+screenshots = ["markdowncss-modest.png"]
+tags = ["classless"]
+
+["Markdown CSS — Retro"]
+demo = "https://markdowncss.github.io/retro/"
+github = "markdowncss/retro"
+note = ""
+website = ""
+screenshots = ["markdowncss-retro.png"]
+tags = ["classless"]
+
+["Markdown CSS — Splendor"]
+demo = "https://markdowncss.github.io/splendor/"
+github = "markdowncss/splendor"
+note = ""
+website = ""
+screenshots = ["markdowncss-splendor.png"]
+tags = ["classless"]
+
+[Marx]
+demo = "https://codepen.io/mblode/details/JdYbJj"
+github = "mblode/marx"
+note = ""
+website = ""
+screenshots = ["marx.png"]
+tags = ["classless"]
+
+[MercuryCSS]
+demo = "https://wmeredith.github.io/MercuryCSS/"
+github = "wmeredith/MercuryCSS"
+note = ""
+website = ""
+screenshots = ["mercurycss.png"]
+tags = ["classless"]
+
+["MVP.css"]
+demo = "https://andybrewer.github.io/mvp/"
+github = "andybrewer/mvp"
+note = ""
+website = ""
+screenshots = ["mvp.css.png"]
+tags = ["classless"]
+
+["new.css"]
+demo = "https://newcss.net/demo/"
+github = "xz/new.css"
+note = ""
+website = ""
+screenshots = ["new.css.png"]
+tags = ["classless"]
+
+["no-class.css"]
+demo = "https://davidpaulsson.se/no-class/"
+github = "davidpaulsson/no-class"
+note = ""
+website = ""
+screenshots = ["no-class.css.png"]
+tags = ["classless"]
+
+["Pico.css"]
+demo = "https://picocss.com/examples/preview/"
+github = "picocss/pico"
+note = ""
+website = ""
+screenshots = ["pico-css.png"]
+tags = ["classless"]
+
+["ridge.css"]
+demo = "https://ridgecss.com/"
+github = "swlkr/ridgecss"
+note = ""
+website = ""
+screenshots = ["ridge.css-light.png", "ridge.css-dark.png"]
+tags = ["classless"]
+
+[sakura]
+demo = "https://oxal.org/projects/sakura/demo/"
+github = "oxalorg/sakura"
+note = ""
+website = ""
+screenshots = [
+ "sakura-normalize-0.png",
+ "sakura-normalize-1-earthly.png",
+ "sakura-normalize-2-vader.png",
+ "sakura-normalize-3-dark.png",
+ "sakura-normalize-4-dark-solarized.png",
+]
+tags = ["classless"]
+
+["Simple.css"]
+demo = "https://simplecss.org/demo"
+github = "kevquirk/simple.css"
+note = ""
+website = ""
+screenshots = ["simple-css.png"]
+tags = ["classless"]
+
+[SPCSS]
+demo = "https://susam.github.io/spcss/"
+github = "susam/spcss"
+note = ""
+website = ""
+screenshots = ["spcss.png"]
+tags = ["classless"]
+
+["style.css"]
+demo = "https://css-pkg.github.io/style.css/"
+github = "css-pkg/style.css"
+note = ""
+website = ""
+screenshots = ["style.css.png"]
+tags = ["classless"]
+
+["Stylize.css"]
+demo = "https://vasanthv.github.io/stylize.css/demo.html"
+github = "vasanthv/stylize.css"
+note = ""
+website = ""
+screenshots = ["stylize.css.png"]
+tags = ["classless"]
+
+[tacit]
+demo = "https://yegor256.github.io/tacit/"
+github = "yegor256/tacit"
+note = ""
+website = ""
+screenshots = ["tacit.png"]
+tags = ["classless"]
+
+["Tufte CSS"]
+demo = "https://edwardtufte.github.io/tufte-css/"
+github = "edwardtufte/tufte-css"
+note = ""
+website = ""
+screenshots = ["tufte-css.png"]
+tags = ["classless"]
+
+["W3C Core Styles"]
+demo = "https://www.w3.org/StyleSheets/Core/preview"
+github = ""
+note = ""
+website = "https://www.w3.org/StyleSheets/Core/Overview"
+screenshots = [
+ "w3c-core-styles-0-oldstyle.png",
+ "w3c-core-styles-1-modernist.png",
+ "w3c-core-styles-2-midnight.png",
+ "w3c-core-styles-3-ultramarine.png",
+ "w3c-core-styles-4-swiss.png",
+ "w3c-core-styles-5-chocolate.png",
+ "w3c-core-styles-6-traditional.png",
+ "w3c-core-styles-7-steely.png",
+]
+tags = ["classless"]
+
+["water.css"]
+demo = "https://kognise.github.io/water.css/"
+github = "kognise/water.css"
+note = ""
+website = ""
+screenshots = ["water.css-0-dark.png", "water.css-1-light.png"]
+tags = ["classless"]
+
+[Writ]
+demo = "https://writ.cmcenroe.me/"
+github = "programble/writ"
+note = ""
+website = ""
+screenshots = ["writ.png"]
+tags = ["classless"]
+
+[YoRHa]
+demo = "https://metakirby5.github.io/yorha/"
+github = "metakirby5/yorha"
+note = ""
+website = ""
+screenshots = ["yorha.png"]
+tags = ["classless"]
+
+[Chota]
+demo = "https://jenil.github.io/chota/"
+github = "jenil/chota"
+note = ""
+website = ""
+screenshots = ["chota.png"]
+tags = ["class-light"]
+
+[Milligram]
+demo = "https://milligram.io/"
+github = "milligram/milligram"
+note = ""
+website = ""
+screenshots = ["milligram.png"]
+tags = ["class-light"]
+
+["mini.css"]
+demo = "https://minicss.org/docs"
+github = "Chalarangelo/mini.css"
+note = ""
+website = ""
+screenshots = ["minicss.png"]
+tags = ["class-light"]
+
+["Picnic CSS"]
+demo = "http://picnicss.com/"
+github = "franciscop/picnic"
+note = ""
+website = ""
+screenshots = ["picnic.png"]
+tags = ["class-light"]
+
+["SASS-ZERO (Breadboard)"]
+demo = ""
+github = "lazaronixon/sass-zero"
+note = "A class-light variant of a CSS framework with classes. Made for Ruby on Rails."
+website = ""
+screenshots = ["sass-zero.png"]
+tags = ["class-light"]
+
+[Wing]
+demo = "https://kbrsh.github.io/wing/"
+github = "kbrsh/wing"
+note = ""
+website = ""
+screenshots = ["wing.png"]
+tags = ["class-light"]
diff --git a/gen-readme.ts b/gen-readme.ts
deleted file mode 100755
index dbda954..0000000
--- a/gen-readme.ts
+++ /dev/null
@@ -1,109 +0,0 @@
-#! /usr/bin/env -S deno run --allow-read
-// Generate README.md from data/ and README.md.in.
-
-import markdownTOC from "npm:markdown-toc";
-
-const dataDir = "data";
-const readmeTemplateFile = "README.md.in";
-
-type Item = {
- demo: string;
- github: string;
- name: string;
- note: string;
- screenshots: string[];
- website: string;
-};
-
-if (Deno.args.length !== 0) {
- console.error("usage: generate-readme.ts");
- Deno.exit(1);
-}
-
-const readData = async (...args: string[]): Promise => {
- try {
- const text = await Deno.readTextFile([dataDir, ...args].join("/"));
- return text.replace(/\n+$/, "");
- } catch (e) {
- if (e instanceof Deno.errors.NotFound) {
- return "";
- }
- throw e;
- }
-};
-
-const renderItem = (
- { demo, github, name, note, screenshots, website }: Item,
-): string => {
- const screenshotMarkdown = screenshots.map((filename) =>
- `[![${filename}](thumbnail/${filename})](screenshot/${filename})`
- ).join("\n");
-
- const lines: string[] = [];
- lines.push(`### ${name}`, "");
- if (note !== "") {
- lines.push(note, "");
- }
- if (website !== "") lines.push(`* [Website](${website})`);
- if (github !== "") {
- lines.push(
- `* [Repository](https://github.com/${github}) ![GitHub stars](https://img.shields.io/github/stars/${github}?style=flat-square) ` +
- `![GitHub contributors](https://img.shields.io/github/contributors-anon/${github}?style=flat-square) ` +
- `![Last commit](https://img.shields.io/github/last-commit/${github}?style=flat-square) ` +
- `![GitHub open issues](https://img.shields.io/github/issues-raw/${github}?style=flat-square) ` +
- `![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/${github}?style=flat-square)`,
- );
- }
- if (demo !== "") lines.push(`* [Demo](${demo})`);
- lines.push("", screenshotMarkdown);
-
- return lines.join("\n");
-};
-
-try {
- const sections: { [key: string]: string } = {};
-
- for await (const entry of Deno.readDir(dataDir)) {
- if (!entry.isDirectory) continue;
- const sectionDir = entry.name;
- const items: Item[] = [];
-
- for await (const entry of Deno.readDir(`${dataDir}/${sectionDir}`)) {
- if (!entry.isDirectory) continue;
- const itemDir = entry.name;
-
- const data: Item = {
- demo: await readData(sectionDir, itemDir, "demo"),
- github: await readData(sectionDir, itemDir, "github"),
- name: await readData(sectionDir, itemDir, "name"),
- note: await readData(sectionDir, itemDir, "note"),
- screenshots: (await readData(sectionDir, itemDir, "screenshots")).split(
- "\n",
- ),
- website: await readData(sectionDir, itemDir, "website"),
- };
-
- items.push(data);
- }
-
- items.sort((a, b) =>
- a["name"].toLowerCase().localeCompare(b["name"].toLowerCase())
- );
- sections[sectionDir] = items.map(renderItem).join("\n\n\n");
- }
-
- const template = (await Deno.readTextFile(readmeTemplateFile)).replace(
- /\n+$/,
- "",
- );
- let readme = template;
-
- for (const [name, markup] of Object.entries(sections)) {
- readme = readme.replace(`%${name.toUpperCase()}%`, markup);
- }
- readme = readme.replace("%TOC%", markdownTOC(readme).content);
-
- console.log(readme);
-} catch (err) {
- console.error(err);
-}
diff --git a/render-template.ts b/render-template.ts
new file mode 100755
index 0000000..8bdbc93
--- /dev/null
+++ b/render-template.ts
@@ -0,0 +1,54 @@
+#! /usr/bin/env -S deno run --allow-read --check
+
+import markdownTOC from "npm:markdown-toc@1";
+import nunjucks from "npm:nunjucks@3";
+import TOML from "npm:@iarna/toml@3";
+
+if (Deno.args.length !== 2) {
+ console.error("usage: render-template.ts template.njk data.toml");
+ Deno.exit(1);
+}
+const [templatePath, dataPath] = Deno.args;
+
+interface INamedProject {
+ name: string;
+ [key: string]: string;
+}
+
+interface IProjects {
+ [key: string]: {
+ [key: string]: string;
+ };
+}
+
+const projList = (projects: IProjects): INamedProject[] =>
+ Object.entries(projects)
+ .map(([name, info]) =>
+ Object.assign({
+ name,
+ }, info)
+ );
+
+try {
+ const template = (await Deno.readTextFile(templatePath)).trim();
+ const data = TOML.parse(await Deno.readTextFile(dataPath));
+
+ const tocToken = `%TOC-${Math.random()}%`;
+ const env = new nunjucks.configure({
+ lstripBlocks: true,
+ trimBlocks: true,
+ }).addGlobal("toc", tocToken);
+ const doc = env.renderString(template, {
+ projects: projList( data),
+ });
+
+ const headingFilter = (str: string) => !str.match(/Contents/);
+ const toc = markdownTOC(doc, {
+ filter: headingFilter,
+ }).content;
+ const docWithTOC = doc.replace(tocToken, toc);
+
+ console.log(docWithTOC);
+} catch (err) {
+ console.error(err);
+}