Files
thistleandmoth-eec-courses/README.md
T
will 6768489072
Sync courses / sync (push) Failing after 5s
Initial scaffold: reader-magnet course stub for thistleandmoth.org
Mirrors michaelferrara-eec-courses. course.yml is active: false and
all copy is TODO until the real reader-magnet file/cover art are
ready and the thistleandmoth-list Listmonk list exists.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 13:21:31 -04:00

2.5 KiB

thistleandmoth-eec-courses

Course content for eec, the self-paced email course engine — this instance served at eec.thistleandmoth.org. Push to master and CI syncs courses/ straight to production — there's no staging step, so treat a push here the same as a push to eec itself.

Full reference for course/step file format, course.yml fields, the readiness step, drip-triggered courses, and sync guardrails lives in the eec-courses README — the format is identical, only the target instance differs.

Layout

courses/
  reader-magnet/
    course.yml
    day-0.md
    day-1.md

reader-magnet is the funnel for thistleandmoth.org's /gift page (see the thistleandmoth-site repo). Same shape as michaelferrara.org's: landing page signup → subscriber added to the thistleandmoth.org Listmonk list immediately (signup_list_name in course.yml, no click required) → the reader-magnet file email goes out ({{.CTALink}} in day-0.md is a direct download link, not a webpage) → a day-1 follow-up email 24h later with no list/conversion mechanics of its own.

Stub — two things need to happen before this goes live

  1. course.yml is active: false. All the content below is a placeholder (TODO subject lines, TODO body copy, and a redirect_url pointing at a file that doesn't exist yet in the thistleandmoth-downloads bucket — see thistleandmoth-site's /gift page, which is the same kind of stub). Replace the TODOs with real copy once the reader-magnet file and cover art are ready, then flip active: true.
  2. signup_list_name: "thistleandmoth-list" doesn't exist yet in Listmonk. Sync rejects the course outright if the name doesn't resolve to exactly one list — create that list in the Listmonk admin UI first (matching the naming convention of michaelferrara-list / Two Squirrels Press), then push.

Until both of those are done, CI runs against this repo will fail sync with a clear error — that's expected, not a sign anything's broken.

Deploying

Push to master.gitea/workflows/sync.yml tars up courses/ and POSTs it to this domain's eec-thistleandmoth container over the internal Docker network, authenticated with THISTLEANDMOTH_EEC_SYNC_TOKEN (a Gitea Actions secret shared with the eec-thistleandmoth Ansible role's copy). No separate deploy step, no staging — a push here goes live immediately (once active: true and the Listmonk list exist).