Repository navigation
feat: interactive learning paths (spec 006) - #40
Merged
Merged
Conversation
…s need Adds 41 checked entries (all HTTP 200): - mobile: official Android, Apple, SwiftUI, Flutter, React Native, Expo, Firebase, Material 3 and Human Interface Guidelines resources, plus the Kotlin and Swift docs; - Python: the official tutorial, Python for Everybody, Automate the Boring Stuff and PEP 8; - DevOps (mainly pt-BR, which lacked them): Terraform, GitHub Actions, GitLab CI/CD, Docker Get Started and the Kubernetes docs in Portuguese. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- _plugins/learning_paths.rb creates /<lang>/learning-paths/<slug>/ from _data/<lang>/learning-paths/*.yaml, plus an index per language. It resolves each step's resource URLs to IPL's curated entries; an unknown URL fails the build outside production. - _layouts/learning-path.html: stages and numbered steps as <details>, so the path reads without JavaScript. javascript/learning-path.js adds per-step checkboxes, a progress bar and a polite status message, with progress kept in localStorage under the path key. - Subcategory pages list their paths, and the footer links the index. - 12 paths per language (frontend, backend, JavaScript, Python, data analysis, machine learning, DevOps, cybersecurity, databases, UX, mobile, computer science), written for IPL from IPL's curated resources; pt-BR is written natively. No external roadmap was used: roadmap.sh roadmaps appear only as credited "see also" links. - test/learning_paths_test.rb: same paths in both languages, schema, source: ipl, and every step resource is a curated IPL URL. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Deploying iplibrary-website with
|
| Latest commit: |
cbfe957
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://ca1100c6.iplibrary-website.pages.dev |
| Branch Preview URL: | https://feat-learning-paths.iplibrary-website.pages.dev |
Commit security review: "see also" URLs came from YAML and went into href unchecked, so a javascript: URL would have survived HTML escaping. The generator now accepts only plain https URLs for see_also and for resolved resources, and requires lowercase-hyphen slugs. The progress key attribute is escaped. The data test enforces the same rules. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts: # _data/en-US/development/development-environment/learn.yaml # _data/en-US/development/plataforms/learn.yaml # _data/en-US/development/programming-languages/learn.yaml # _data/pt-BR/development/development-environment/learn.yaml # _data/pt-BR/development/plataforms/learn.yaml # _data/pt-BR/development/programming-languages/learn.yaml
Review of #40: resource_stats and the search index walked every data key except menu and translations, so each path's "see also" links counted as curated resources and were indexed as resources. Both now skip learning-paths, as the learning paths generator already does. Also from review: without JavaScript every step is open, so its resources are readable. With JavaScript, only the next unfinished step stays open. A learning path file that is empty or not a mapping is ignored instead of failing the build. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements spec 006: IPL's own interactive learning paths.
Pages
/<lang>/learning-paths/lists every path, grouped by level./<lang>/learning-paths/<slug>/shows one path:<details>, so the page reads as an ordered list without JavaScript;localStorage;Content
12 paths per language: frontend, backend, JavaScript, Python, data analysis, machine learning, DevOps, cybersecurity, databases, UX design, mobile and computer science, with 9 to 14 steps each.
How it works
_plugins/learning_paths.rbresolves each step URL to its curated entry. An unknown URL fails the build outside production.test/learning_paths_test.rb(2,326 assertions) checks that both languages have the same paths, the schema,source: ipl, and that every step resource is curated.Checked
test/resources_data_test.rbandtest/learning_paths_test.rbpass.Still open (spec 006)
🤖 Generated with Claude Code