Interactive lessons on databases and computer networks. Each lesson is a self-contained HTML page with diagrams and recall questions.
Live site: https://iamadheil.github.io/learning-book/
<topic>/
index.html topic landing page
assets/style.css shared stylesheet
entries/<slug>/
index.html the lesson page
source.md the lesson source
global-index.html all topics, with search
- Add or change a lesson in
<topic>/entries/<slug>/. - Commit and push to
main. - GitHub Actions runs
scripts/build_site.pyand deploys the result.
scripts/build_site.py copies only the pages that can be served:
- A lesson is published only if its folder contains
index.html. A folder with onlysource.mdis skipped, and every link to it is removed from the topic page and the landing page. Render the page and the next push publishes it. .mdfiles stay in the repository but do not go to the site.- The build fails if any published page links to a file that is absent.
The build generates the landing page. It does not copy global-index.html.
The landing page shows one card per notebook (topic) with its lesson count. The
card links to the topic page, which lists the lessons.
The generated page is written to both index.html and global-index.html, so
the "All topics" link on each topic page reaches it.
Generating the page means the teach-me skill cannot overwrite it. To change a
notebook description or its glyph, edit NOTEBOOKS in scripts/build_site.py.
A topic that is absent from NOTEBOOKS gets a card built from its top tags.
Run it locally to see what would be published:
python3 scripts/build_site.py && open _site/index.html