Stub reader-magnet welcome course, active: false pending Cate's story
Sync courses / sync (push) Failing after 6s
Sync courses / sync (push) Failing after 6s
Placeholder welcome-email copy in Cate's voice (Fantasy Michigan), wired end-to-end but not enrollable until the real manuscript/cover/epub land.
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# cateconners-eec-courses
|
||||
|
||||
Course content for [eec](https://gitea.reground.org/will/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`](https://gitea.reground.org/will/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:
|
||||
|
||||
1. Upload the epub/cover via `downloads-uploader`
|
||||
(`./upload.sh --site cateconners --slug reader-magnet story.epub cover.jpg`).
|
||||
2. Replace the placeholder copy in `day-0.md`/`day-1.md` and this repo's
|
||||
`course.yml` `name:`.
|
||||
3. Update `will/cateconners-site`'s `content/gift/index.md` and
|
||||
`content/gift-thanks/index.md` the same way.
|
||||
4. Flip `course.yml`'s `active` to `true` and push.
|
||||
|
||||
## Deploying
|
||||
|
||||
Push to `master` → `.gitea/workflows/sync.yml` tars up `courses/` and
|
||||
`POST`s 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.
|
||||
Reference in New Issue
Block a user