DTC: adopt repository-derived course hierarchy and homework units
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start with community-base#306 and the existing #398/#399 work, then inspect _docs/compatibility/course-route-contracts.json and the current course, cohort, homework, and route entry points. Validate flat and nested fixtures, YAML-plus-Markdown homework re-imports, preserved identities and learner state, compatibility routes, and report package, AISL, and DTC test results separately.
Written by the indexing model from the issue text.
Description
Goal
Adopt the generic course repository hierarchy and YAML-backed homework contract from community-base#306 in DataTalks.Club. The site's code should adapt its existing course/cohort records and policies to the shared graph, not re-parse or flatten curriculum structure locally.
Scope
- Register the community-base course parser/projection for DTC course sources. Where existing DTC sources express child sections inside manifest lists, convert them to the package's physical directory convention as part of source migration;
module.yamldirectories define modules and their parentage. - Use
homework.yamlplus companionhomework.mdfor a structured homework unit where the course tree authors it. Keep stable unit/question IDs in YAML and instructions prose in Markdown. Keep cohort-specific assignment manifests and bindings separate; adapt those to package coursework bindings without confusing them with the course-tree unit manifest. - Remove duplicate local module/submodule parsing and hierarchy projection once the package contract covers it. Re-scope open #398/#399 to retain only genuinely DTC-owned cohort placement/binding behavior; do not maintain a second generic directory parser or a second renderer for the same hierarchy.
- Keep DTC-owned course access, cohort flow, registration and URL compatibility through thin adapters. Resolve project-to-module references from source identity/path, not course slug or module title conditionals.
- Preserve existing Course/Module/Unit/Shared* identities and all homework, project, review, submission, answer, progress and certificate rows through the package cutover. Update existing rows in place by stable content identity and provide one-hop redirects for route changes. Keep
_docs/compatibility/course-route-contracts.jsonpassing.
Acceptance criteria
- A flat course and a nested course fixture import according to the physical repository tree; one-unit modules remain modules and are not flattened by a site rule.
- A YAML homework directory with its Markdown companion imports as one unit; stable IDs, cohort binding, submissions and learner state survive re-import without duplicate rows.
- DTC-only cohort flow and homework binding semantics still work through a thin adapter; malformed hierarchy fails validation before a DB constraint error.
- The generic parser/renderer and shared templates come from community-base. DTC templates contain no course-specific hierarchy flattening, title/slug/path exceptions, or duplicate recursive parser.
- Existing public and compatibility route contracts pass; any changed canonical paths have one-hop redirects preserving valid cohort selection.
- Package checks plus the affected DTC tests pass; run and report the package, AISL, and DTC results separately before closing.
Dependencies and related work
- Depends on DataTalksClub/community-base#306.
- Blocks DataTalksClub/website#414 (D5.1 shared course-model adoption) and #415 (D5.2 cutover).
- Coordinate the existing submodule work in #398/#399 with this package contract before either duplicates generic parser/rendering logic.
- Dominant language
- Python
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from DataTalksClub/website
-
bug infra operations P1 testing
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
DataTalksClub/website#329 ·
-
bug content data-migration documentation events operations P1
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
DataTalksClub/website#327 ·
-
bug frontend P0 testing
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
DataTalksClub/website#300 · 7 comments ·
-
bug data-migration events P0 testing
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
DataTalksClub/website#295 · 6 comments ·
-
admin bug needs grooming P2
Difficulty 4/5 3-5 days Newbie friendliness 45/100
DataTalksClub/website#435 ·
All issues in DataTalksClub/website
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 88/100
qgis/QGIS-Plugins-Website#459 ·
-
bug severity:medium
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 2 days
-
bot-found bug priority: P3
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
madenvel/KalinkaPlayer#179 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ls1intum/edutelligence#1098 ·
Maintainers usually reply within 1 day