# sunfloweracres-eec-courses Course content for [eec](https://gitea.reground.org/will/eec), the self-paced email course engine — this instance served at eec.sunfloweracressoaps.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/ welcome/ course.yml day-0.md day-1.md day-2.md day-3.md ``` `welcome` is Sunflower Acres' welcome/nurture sequence, and doubles as the site's mailing-list signup mechanism — the course's own public signup form at eec.sunfloweracressoaps.com adds the subscriber to the `sunfloweracres-list` Listmonk list immediately (`signup_list_name` in `course.yml`, no click required), then sends four emails over the following days: the current bar lineup, the cold-process/six-week-cure story, and a soft close pointing back at the shop. **Status: live, `active: true`.** All four steps have real content — no placeholders. Update copy in place as the product lineup or stock status changes; the emails currently reflect the lineup as of this course's launch, so revisit them if bars are added, discontinued, or restocked in a way that's stale here. ## Deploying Push to `master` → `.gitea/workflows/sync.yml` tars up `courses/` and `POST`s it to this domain's `eec-sunfloweracres` container over the internal Docker network, authenticated with `SUNFLOWERACRES_EEC_SYNC_TOKEN` (a Gitea Actions secret shared with the `eec-sunfloweracres` Ansible role's copy). No separate deploy step, no staging — a push here goes live immediately.