# __CLIENT__-eec-courses Course content for [eec](https://gitea.reground.org/will/eec), the self-paced email course engine — this instance served at eec.__DOMAIN__. 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/ / course.yml day-0.md day-1.md ... ``` ## Deploying Push to `master` → `.gitea/workflows/sync.yml` tars up `courses/` and `POST`s it to this domain's `eec-__CLIENT__` container over the internal Docker network, authenticated with `__CLIENT___EEC_SYNC_TOKEN` (a Gitea Actions secret shared with the `eec-__CLIENT__` Ansible role's copy). No separate deploy step, no staging — a push here goes live immediately. --- **Generating a new client repo from this template:** 1. Gitea → "Generate Repo" from this template repo's page, named `-eec-courses`. 2. Find/replace `__CLIENT__` → the client's slug (must match the `eec-` container name) and `__DOMAIN__` → the client's domain, in this README and in `.gitea/workflows/sync.yml`. 3. Add the `_EEC_SYNC_TOKEN` Actions secret to the new repo (Gitea does not carry secrets over from a template) — value must match the `eec-` Ansible role's copy. 4. Delete this "Generating a new client repo" section from the new repo's README once done.