2.3 KiB
cateconners-eec-courses
Course content for eec, the
self-paced email course engine — this instance served at
eec.cateconners.com. 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 whole funnel: landing page signup → subscriber is
added to the cateconners.com Listmonk list immediately
(signup_list_name in course.yml, no click required) → the story email
goes out ({{.CTALink}} in day-0.md is meant to be a direct download
link, not a webpage) → a day-1 follow-up email 24h later with no
list/conversion mechanics of its own.
signup_list_name in course.yml must exactly match a list that already
exists in Listmonk — create it there first, then push. Sync rejects the
course outright if the name doesn't resolve to exactly one list.
Status: stubbed, active: false. Cate's manuscript, title, and cover
art aren't in hand yet, so day-0.md/day-1.md are placeholder copy and
course.yml's download_url/redirect_url point at a bucket path that
doesn't have a real file behind it yet. Once the real story, cover, and
epub are ready:
- Upload the epub/cover via
reground-tools(./download-upload.sh --site cateconners --slug reader-magnet story.epub cover.jpg). - Replace the placeholder copy in
day-0.md/day-1.mdand this repo'scourse.ymlname:. - Update
will/cateconners-site'scontent/gift/index.mdandcontent/gift-thanks/index.mdthe same way. - Flip
course.yml'sactivetotrueand push.
Deploying
Push to master → .gitea/workflows/sync.yml tars up courses/ and
POSTs it to this domain's eec-cateconners container over the internal
Docker network, authenticated with CATECONNERS_EEC_SYNC_TOKEN (a Gitea
Actions secret shared with the eec-cateconners Ansible role's copy). No
separate deploy step, no staging — a push here goes live immediately.