Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions data/quests.json
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,33 @@
"difficulty": "Medium",
"status": "live"
},
{
"id": "glassblowers-immutable-forge",
"name": "Glassblower's Immutable Forge",
"shortDescription": "A glass studio simulation teaching JavaScript mutability vs. immutability, object/array mutation, and Object.freeze() through physical shaping and shattering.",
"longDescription": "## Glassblower's Immutable Forge\n\nStep into a hot glass workshop where variables, objects, and arrays are literal works of glass. In this interactive programming quest, you will master the vital distinction between mutable data (soft, reshapable glass you can bend live) and immutable architecture. Learn how `const` protects bindings, how spread syntax creates safe copies, and how `Object.freeze()` hardens structures so that improper mutations cause dramatic, visible shattering rather than silent bugs.\n\n### Features\n\n- **Physical State Manipulation:** Stretch, blow, and modify properties of objects and arrays rendered as glowing, malleable glass artifacts.\n- **Kiln-Cooled Immutability:** Run the kiln-cooling phase to apply `Object.freeze()`, transforming flexible vessels into rigid pieces that shatter if modified improperly.\n- **Modern Immutability Workflows:** Practice safe state updates using spread syntax (`...`) and non-mutating array methods.\n- **Web Audio Soundscapes:** Custom glassblowing hisses, shaping crunches, and physics-based shattering sounds synthesized entirely via the Web Audio API.\n- **Zero-Dependency Architecture:** A completely self-contained browser quest built natively using Vanilla JS and HTML5 Canvas.",
"category": "js-fundamentals",
"tags": [
"arrays",
"freeze",
"immutability",
"interactive",
"javascript",
"mutability",
"objects",
"quest",
"web-audio-api"
],
"techStack": [
"Canvas API",
"CSS3",
"HTML5",
"Vanilla JS",
"Web Audio API"
],
"difficulty": "Medium",
"status": "live"
},
{
"id": "yugen-trail",
"name": "Lantern & Rope — The Yūgen Trail",
Expand Down
Loading
Loading