The shared template and reference for DataTalks.Club Zoomcamps — ML, MLOps, Data Engineering, LLM, and any new camp.
This repo collects the shared template, scripts, and skills used to build and maintain Zoomcamps. It exists so every Zoomcamp is organized the same way and so we stop re-inventing the same production workflows in each one.
Use it two ways:
- Starting a new Zoomcamp - use the template package and follow the checklist.
- Maintaining an existing Zoomcamp - use the shared scripts and skills, then bring its READMEs and lessons in line with the conventions here.
| Path | What it is |
|---|---|
STRUCTURE.md |
The canonical repo layout, unit page rules, and the checker's rule index |
docs/curriculum-contract.md |
What the website's ingestion parser requires, field by field |
docs/conventions.md |
Prose and presentation: headings, banner block, section patterns |
template/ |
Template-facing guidance, including the illustration rubric |
docs/new-zoomcamp-checklist.md |
Step-by-step to spin up a new camp from these templates |
templates/ |
Copy-paste templates: unit, module, cohort, root README, CI workflow |
scripts/check-zoomcamp/ |
The conformance checker every course repo runs on pull requests |
scripts/ |
Reusable helper scripts collected from all camps (index) |
skills/ |
Reusable skills for homework, video, and illustration workflows |
docs/ |
Operational guides (video pipeline, workshop best practices) |
The new cohort workflow keeps the current numbered module folders at the
repository root. Live and self-paced cohorts reference those lessons; different
historical curricula are archived under cohorts/<identifier>/ for reading on
GitHub. Creating a cohort does not copy unchanged lessons.
Use bootstrap-zoomcamp-cohort and
scripts/bootstrap-cohort/ for local preview and
apply. The command README identifies its schema prerequisites. The older
cohort-copy conventions and templates below describe the v1 migration baseline;
they must not be applied to the new shared-root workflow. Website consumer and
checker support must be verified before publishing converted course sources.
The rollout plan records ownership and cutover gates. Its website task breakdown provides the staged files, interfaces, tests and browser scenarios for implementation.
This is the existing v1 layout. Use it only for sources that still target the v1 website contract; the shared-root workflow above has a separate rollout.
# 1. copy the templates into your new repo
cp templates/root-README.md <new-camp>/README.md
cp templates/cohorts-README.md <new-camp>/cohorts/README.md
cp templates/cohort-README.md <new-camp>/cohorts/2026/README.md
cp templates/module-README.md <new-camp>/cohorts/2026/01-intro/README.md
cp templates/unit.md <new-camp>/cohorts/2026/01-intro/01-what-is-it.md
cp templates/workflows/curriculum-check.yml <new-camp>/.github/workflows/
# 2. fill in the {{PLACEHOLDERS}}, then follow:
# docs/new-zoomcamp-checklist.md
# 3. check it before pushing
uv run https://raw.githubusercontent.com/DataTalksClub/zoomcamp-ops/main/scripts/check-zoomcamp/check_zoomcamp.py <new-camp>The four camps drifted apart over the years — different heading names ("How to Join" vs "How to Take" vs "How to Enroll"), emoji in some and not others, table-of-contents in one, badges in another, and copies of the same thumbnail/video scripts in each repo with small variations. This repo is the single source of truth so new camps start consistent and old ones converge.
Writing a convention down turned out not to be enough: the camps also diverged
in the curriculum layout the website ingests, and nothing checked. So the spec
now comes with scripts/check-zoomcamp, which every
course repository runs on pull requests. A rule and its check live in the same
commit here, and a course repo pins one SHA to get both.
See STRUCTURE.md for the full spec.