Skip to content

erseco/talks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

talks

Presentaciones y materiales de charlas, talleres y sesiones formativas.

Public archive and browsable catalogue of Ernesto Serrano's talks. Each talk is an eXeLearning unit (a self-contained, multi-page HTML learning object), and the repository publishes a static catalogue that lists and serves them.

The website is in Spanish; the code, comments and this document are in English.

How it works

Each talk lives in its own folder and is described by a talk.yml (the single source of truth for metadata). Every talk declares an engine:

engine what it is served as
exelearning (default) the committed, unzipped .elpx (content.xml + rendered index.html/html/libs/theme) the unit, under charlas/<id>/unit/
external slides hosted elsewhere (link only) links from the card

The eXeLearning units are pre-rendered and committed — the catalogue build just validates metadata and copies each unit. So CI needs nothing but Node:

  1. scripts/validate-talks.js validates every talk.yml.
  2. scripts/generate-site.js builds the catalogue (cards, filters, search, per-talk pages, index.json) and copies each unit under charlas/<id>/unit/.

Regenerating a unit (Markdown spec → .elp → eXeLearning CLI → unzip) is a local step — see Authoring and scripts/exe/.

Repository structure

talks/
├── .github/workflows/      # ci.yml, pages.yml, release.yml
├── assets/
│   ├── images/             # shared images
│   └── exe-themes/         # custom eXeLearning themes (jacquenetta…)
├── data/site.yml           # site-level config (title, author, links…)
├── scripts/
│   ├── validate-talks.js
│   ├── generate-site.js
│   ├── import-external-talks.js
│   └── exe/                # exelib.py (spec→.elp), build.sh, specs/*.json
├── site/static/            # catalogue style.css + app.js + theme.js + fonts
├── talks/<year>/<id>/      # one folder per talk:
│   ├── talk.yml            #   metadata (required)
│   ├── README.md
│   ├── notes.md            #   speaker notes (recovered / authored)
│   ├── index.html, html/, libs/, content/, theme/, content.xml …  ← the unit
│   └── external.md         #   provenance (for talks adapted from elsewhere)
├── output/                 # generated site (gitignored, .gitkeep only)
├── Makefile · package.json · LICENSE

Local commands

Requires Node.js ≥ 20 and make.

make install   # install Node deps (js-yaml)
make           # default: validate + build the static site (output/site/)
make validate  # check every talk.yml
make site      # (re)generate output/site/
make serve     # serve the site locally (http://localhost:8080)
make clean     # remove generated artifacts

Regenerating the eXeLearning units (local only, needs the eXeLearning CLI):

# Requires python3 + `pip install markdown` and the eXeLearning CLI (Bun) repo.
EXE_DIR=/path/to/exelearning_5 make exe    # rebuilds every unit from its spec

Authoring a talk

A talk's content is a small JSON spec in scripts/exe/specs/<id>.json: pages → blocks → Markdown. scripts/exe/exelib.py turns it into an eXeLearning .elp (Markdown iDevices), and scripts/exe/build.sh exports it with its theme and unzips the unit into the talk folder.

  1. Create talks/<year>/<id>/talk.yml with engine: exelearning.
  2. Write scripts/exe/specs/<id>.json (set "theme" to base or jacquenetta).
  3. Custom themes live in assets/exe-themes/; symlink them where the CLI looks ($EXE_DIR/public/files/perm/themes/base/<theme>).
  4. make exe to render, then make build and commit the generated unit.

External / link-only talks use engine: external and the external: block.

Themes

  • base — eXeLearning's default theme (used for the recent talks).
  • jeanette (assets/exe-themes/jeanette/) — a minimalist black & white theme built on base; the working theme for our talks. Used by the older talks, whose pages are the rendered slide captures (one page per slide).
  • jacquenetta (assets/exe-themes/jacquenetta/) — a faithful take on the Jacquenetta SlidesCarnival template (Arial, black/white + teal #158158 accent, black title box), for HTML-text talks that should look like the original slides without captures. Set "theme": "jacquenetta" in a spec.

Releases and pre-release

release.yml uses ncipollo/release-action. On push to main (or manual dispatch) it refreshes a rolling pre-release with the site bundle (site.zip) and index.json; on a published release it attaches the same artifacts. Pull requests only build.

pages.yml deploys output/site to GitHub Pages on every push to main (minimal permissions). One-time setup: Settings → Pages → Source: GitHub Actions.

Licensing

This repository — code and original presentation content — is licensed under CC BY-SA 4.0 (see LICENSE). Every talk is CC BY-SA 4.0. Bundled eXeLearning runtime files and third-party themes keep their own licenses.

Author

Ernesto Serranohttps://ernesto.es · https://github.com/erseco

About

Presentaciones y materiales de charlas, talleres y sesiones formativas

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors