Files
code-crispies/schemas/learning-path-schema.json
Michael Czechowski 6c65381fcb feat: add Guided Learning Paths feature
Implement PathManager to orchestrate multi-module learning journeys:
- Add PathManager class with start/pause/resume functionality
- Create learning-paths.json config with CSS Fundamentals path
- Integrate path progress tracking with LessonEngine
- Add path selection UI to homepage and navigation
- Include JSON schema for learning path validation
- Add comprehensive test suite for PathManager
2026-01-12 20:30:09 +01:00

57 lines
1.6 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Code Crispies Learning Path Schema",
"description": "Schema for guided learning paths that organize modules into structured learning sequences",
"type": "object",
"required": ["id", "title", "goal", "estimatedTime", "difficulty", "modules"],
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the learning path",
"pattern": "^[a-z0-9-]+$"
},
"title": {
"type": "string",
"description": "Display title of the learning path",
"minLength": 1,
"maxLength": 100
},
"goal": {
"type": "string",
"description": "Clear description of what the learner will achieve by completing this path",
"minLength": 1,
"maxLength": 500
},
"estimatedTime": {
"type": "integer",
"description": "Estimated time to complete the path in minutes",
"minimum": 1
},
"difficulty": {
"type": "string",
"enum": ["beginner", "intermediate", "advanced"],
"description": "Overall difficulty level of the learning path"
},
"modules": {
"type": "array",
"description": "Ordered array of module IDs that comprise this learning path",
"minItems": 1,
"items": {
"type": "string",
"description": "Module ID that references an existing module",
"pattern": "^[a-z0-9-]+$"
}
},
"prerequisites": {
"type": "array",
"description": "Optional array of learning path IDs that should be completed before this one",
"default": [],
"items": {
"type": "string",
"description": "Learning path ID that should be completed first",
"pattern": "^[a-z0-9-]+$"
}
}
}
}