{ "$schema": "../schemas/code-crispies-module-schema.json", "id": "welcome", "title": "Welcome", "description": "Learn how to use Code Crispies and get started with interactive web development lessons", "mode": "html", "difficulty": "beginner", "lessons": [ { "id": "what-is-code-crispies", "title": "What is Code Crispies?", "description": "Code Crispies is a free, open-source platform for learning web development through hands-on exercises.

You'll learn:
- HTML - Semantic markup and native elements
- CSS - Styling and layout techniques
- Tailwind - Utility-first CSS framework

No account required - just start coding!", "task": "Try it out! Type <h1>Hello World</h1> in the editor below and watch the preview update.", "previewHTML": "", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 20px; text-align: center; } h1 { color: #6366f1; }", "sandboxCSS": "", "initialCode": "", "solution": "

Hello World

", "previewContainer": "preview-area", "validations": [ { "type": "element_exists", "value": "h1", "message": "Add an <h1> heading element" }, { "type": "contains", "value": "Hello", "message": "Add the text 'Hello' inside your heading" } ] }, { "id": "how-lessons-work", "title": "How Lessons Work", "description": "Each lesson has:

1. Instructions - Read the task on the left
2. Editor - Write your code below the instructions
3. Preview - See results instantly on the right
4. Hints - Get feedback when you run your code

When all validations pass, you'll see a success message!", "task": "Create a paragraph with the text 'I am learning!' using <p> tags.", "previewHTML": "", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 20px; } p { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; border-radius: 8px; text-align: center; font-size: 1.2em; }", "sandboxCSS": "", "initialCode": "", "solution": "

I am learning!

", "previewContainer": "preview-area", "validations": [ { "type": "element_exists", "value": "p", "message": "Add a <p> paragraph element" }, { "type": "contains", "value": "learning", "message": "Include the word 'learning' in your paragraph" } ] }, { "id": "navigation-tips", "title": "Navigation Tips", "description": "Use these controls to navigate:

Menu button (top left) - Browse all lesson modules
Previous / Next buttons - Move between lessons
Show Expected - See the target result
Reset button - Start the lesson over

Keyboard shortcuts:
Ctrl+Enter - Run your code
Ctrl+Z - Undo
Ctrl+Shift+Z - Redo", "task": "Create a button element with the text 'Click me!' using <button> tags.", "previewHTML": "", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 20px; display: flex; justify-content: center; align-items: center; min-height: 80px; } button { background: #6366f1; color: white; border: none; padding: 12px 24px; border-radius: 6px; font-size: 1em; cursor: pointer; transition: transform 0.2s; } button:hover { transform: scale(1.05); }", "sandboxCSS": "", "initialCode": "", "solution": "", "previewContainer": "preview-area", "validations": [ { "type": "element_exists", "value": "button", "message": "Add a <button> element" }, { "type": "contains", "value": "Click", "message": "Add the text 'Click me!' inside the button" } ] }, { "id": "ready-to-learn", "title": "Ready to Learn!", "description": "You're all set! Here's what to explore next:

HTML Modules - Learn semantic elements, forms, tables
CSS Modules - Master selectors, box model, flexbox
Advanced Topics - Animations, responsive design

Open the menu to browse all available modules. Your progress is saved automatically!", "task": "Create a simple card with a heading and paragraph:
1. Add <h2> with 'Ready!'
2. Add <p> with 'Let's start learning.'", "previewHTML": "", "previewBaseCSS": "body { font-family: system-ui, sans-serif; padding: 20px; } h2, p { background: white; margin: 0; } h2 { color: #6366f1; padding: 20px 20px 10px; border-radius: 8px 8px 0 0; border: 2px solid #e5e7eb; border-bottom: none; } p { padding: 10px 20px 20px; border-radius: 0 0 8px 8px; border: 2px solid #e5e7eb; border-top: none; color: #4b5563; }", "sandboxCSS": "", "initialCode": "", "solution": "

Ready!

\n

Let's start learning.

", "previewContainer": "preview-area", "validations": [ { "type": "element_exists", "value": "h2", "message": "Add an <h2> heading" }, { "type": "element_exists", "value": "p", "message": "Add a <p> paragraph" }, { "type": "contains", "value": "Ready", "message": "Include 'Ready!' in your heading" } ] } ] }