@shaykec/bridge 0.4.24 → 0.4.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/journeys/ai-engineer.yaml +34 -0
  2. package/journeys/backend-developer.yaml +36 -0
  3. package/journeys/business-analyst.yaml +37 -0
  4. package/journeys/devops-engineer.yaml +37 -0
  5. package/journeys/engineering-manager.yaml +44 -0
  6. package/journeys/frontend-developer.yaml +41 -0
  7. package/journeys/fullstack-developer.yaml +49 -0
  8. package/journeys/mobile-developer.yaml +42 -0
  9. package/journeys/product-manager.yaml +35 -0
  10. package/journeys/qa-engineer.yaml +37 -0
  11. package/journeys/ux-designer.yaml +43 -0
  12. package/modules/README.md +52 -0
  13. package/modules/accessibility-fundamentals/content.md +126 -0
  14. package/modules/accessibility-fundamentals/exercises.md +88 -0
  15. package/modules/accessibility-fundamentals/module.yaml +43 -0
  16. package/modules/accessibility-fundamentals/quick-ref.md +71 -0
  17. package/modules/accessibility-fundamentals/quiz.md +100 -0
  18. package/modules/accessibility-fundamentals/resources.md +29 -0
  19. package/modules/accessibility-fundamentals/walkthrough.md +80 -0
  20. package/modules/adr-writing/content.md +121 -0
  21. package/modules/adr-writing/exercises.md +81 -0
  22. package/modules/adr-writing/module.yaml +41 -0
  23. package/modules/adr-writing/quick-ref.md +57 -0
  24. package/modules/adr-writing/quiz.md +73 -0
  25. package/modules/adr-writing/resources.md +29 -0
  26. package/modules/adr-writing/walkthrough.md +64 -0
  27. package/modules/ai-agents/content.md +120 -0
  28. package/modules/ai-agents/exercises.md +82 -0
  29. package/modules/ai-agents/module.yaml +42 -0
  30. package/modules/ai-agents/quick-ref.md +60 -0
  31. package/modules/ai-agents/quiz.md +103 -0
  32. package/modules/ai-agents/resources.md +30 -0
  33. package/modules/ai-agents/walkthrough.md +85 -0
  34. package/modules/ai-assisted-research/content.md +136 -0
  35. package/modules/ai-assisted-research/exercises.md +80 -0
  36. package/modules/ai-assisted-research/module.yaml +42 -0
  37. package/modules/ai-assisted-research/quick-ref.md +67 -0
  38. package/modules/ai-assisted-research/quiz.md +73 -0
  39. package/modules/ai-assisted-research/resources.md +33 -0
  40. package/modules/ai-assisted-research/walkthrough.md +85 -0
  41. package/modules/ai-pair-programming/content.md +105 -0
  42. package/modules/ai-pair-programming/exercises.md +98 -0
  43. package/modules/ai-pair-programming/module.yaml +39 -0
  44. package/modules/ai-pair-programming/quick-ref.md +58 -0
  45. package/modules/ai-pair-programming/quiz.md +73 -0
  46. package/modules/ai-pair-programming/resources.md +34 -0
  47. package/modules/ai-pair-programming/walkthrough.md +117 -0
  48. package/modules/ai-test-generation/content.md +125 -0
  49. package/modules/ai-test-generation/exercises.md +98 -0
  50. package/modules/ai-test-generation/module.yaml +39 -0
  51. package/modules/ai-test-generation/quick-ref.md +65 -0
  52. package/modules/ai-test-generation/quiz.md +74 -0
  53. package/modules/ai-test-generation/resources.md +41 -0
  54. package/modules/ai-test-generation/walkthrough.md +100 -0
  55. package/modules/api-design/content.md +189 -0
  56. package/modules/api-design/exercises.md +84 -0
  57. package/modules/api-design/game.yaml +113 -0
  58. package/modules/api-design/module.yaml +45 -0
  59. package/modules/api-design/quick-ref.md +73 -0
  60. package/modules/api-design/quiz.md +100 -0
  61. package/modules/api-design/resources.md +55 -0
  62. package/modules/api-design/walkthrough.md +88 -0
  63. package/modules/clean-code/content.md +136 -0
  64. package/modules/clean-code/exercises.md +137 -0
  65. package/modules/clean-code/game.yaml +172 -0
  66. package/modules/clean-code/module.yaml +44 -0
  67. package/modules/clean-code/quick-ref.md +44 -0
  68. package/modules/clean-code/quiz.md +105 -0
  69. package/modules/clean-code/resources.md +40 -0
  70. package/modules/clean-code/walkthrough.md +78 -0
  71. package/modules/clean-code/workshop.yaml +149 -0
  72. package/modules/code-review/content.md +130 -0
  73. package/modules/code-review/exercises.md +95 -0
  74. package/modules/code-review/game.yaml +83 -0
  75. package/modules/code-review/module.yaml +42 -0
  76. package/modules/code-review/quick-ref.md +77 -0
  77. package/modules/code-review/quiz.md +105 -0
  78. package/modules/code-review/resources.md +40 -0
  79. package/modules/code-review/walkthrough.md +106 -0
  80. package/modules/daily-workflow/content.md +81 -0
  81. package/modules/daily-workflow/exercises.md +50 -0
  82. package/modules/daily-workflow/module.yaml +33 -0
  83. package/modules/daily-workflow/quick-ref.md +37 -0
  84. package/modules/daily-workflow/quiz.md +65 -0
  85. package/modules/daily-workflow/resources.md +38 -0
  86. package/modules/daily-workflow/walkthrough.md +83 -0
  87. package/modules/debugging-systematically/content.md +139 -0
  88. package/modules/debugging-systematically/exercises.md +91 -0
  89. package/modules/debugging-systematically/module.yaml +46 -0
  90. package/modules/debugging-systematically/quick-ref.md +59 -0
  91. package/modules/debugging-systematically/quiz.md +105 -0
  92. package/modules/debugging-systematically/resources.md +42 -0
  93. package/modules/debugging-systematically/walkthrough.md +84 -0
  94. package/modules/debugging-systematically/workshop.yaml +127 -0
  95. package/modules/demo-test/content.md +68 -0
  96. package/modules/demo-test/exercises.md +28 -0
  97. package/modules/demo-test/game.yaml +171 -0
  98. package/modules/demo-test/module.yaml +41 -0
  99. package/modules/demo-test/quick-ref.md +54 -0
  100. package/modules/demo-test/quiz.md +74 -0
  101. package/modules/demo-test/resources.md +21 -0
  102. package/modules/demo-test/walkthrough.md +122 -0
  103. package/modules/demo-test/workshop.yaml +31 -0
  104. package/modules/design-critique/content.md +93 -0
  105. package/modules/design-critique/exercises.md +71 -0
  106. package/modules/design-critique/module.yaml +41 -0
  107. package/modules/design-critique/quick-ref.md +63 -0
  108. package/modules/design-critique/quiz.md +73 -0
  109. package/modules/design-critique/resources.md +27 -0
  110. package/modules/design-critique/walkthrough.md +68 -0
  111. package/modules/design-patterns/content.md +335 -0
  112. package/modules/design-patterns/exercises.md +82 -0
  113. package/modules/design-patterns/game.yaml +55 -0
  114. package/modules/design-patterns/module.yaml +45 -0
  115. package/modules/design-patterns/quick-ref.md +44 -0
  116. package/modules/design-patterns/quiz.md +101 -0
  117. package/modules/design-patterns/resources.md +40 -0
  118. package/modules/design-patterns/walkthrough.md +64 -0
  119. package/modules/exploratory-testing/content.md +133 -0
  120. package/modules/exploratory-testing/exercises.md +88 -0
  121. package/modules/exploratory-testing/module.yaml +41 -0
  122. package/modules/exploratory-testing/quick-ref.md +68 -0
  123. package/modules/exploratory-testing/quiz.md +75 -0
  124. package/modules/exploratory-testing/resources.md +39 -0
  125. package/modules/exploratory-testing/walkthrough.md +87 -0
  126. package/modules/git/content.md +128 -0
  127. package/modules/git/exercises.md +53 -0
  128. package/modules/git/game.yaml +190 -0
  129. package/modules/git/module.yaml +44 -0
  130. package/modules/git/quick-ref.md +67 -0
  131. package/modules/git/quiz.md +89 -0
  132. package/modules/git/resources.md +49 -0
  133. package/modules/git/walkthrough.md +92 -0
  134. package/modules/git/workshop.yaml +145 -0
  135. package/modules/hiring-interviews/content.md +130 -0
  136. package/modules/hiring-interviews/exercises.md +88 -0
  137. package/modules/hiring-interviews/module.yaml +41 -0
  138. package/modules/hiring-interviews/quick-ref.md +68 -0
  139. package/modules/hiring-interviews/quiz.md +73 -0
  140. package/modules/hiring-interviews/resources.md +36 -0
  141. package/modules/hiring-interviews/walkthrough.md +75 -0
  142. package/modules/hooks/content.md +97 -0
  143. package/modules/hooks/exercises.md +69 -0
  144. package/modules/hooks/module.yaml +39 -0
  145. package/modules/hooks/quick-ref.md +93 -0
  146. package/modules/hooks/quiz.md +81 -0
  147. package/modules/hooks/resources.md +34 -0
  148. package/modules/hooks/walkthrough.md +105 -0
  149. package/modules/hooks/workshop.yaml +64 -0
  150. package/modules/incident-response/content.md +124 -0
  151. package/modules/incident-response/exercises.md +82 -0
  152. package/modules/incident-response/game.yaml +132 -0
  153. package/modules/incident-response/module.yaml +45 -0
  154. package/modules/incident-response/quick-ref.md +53 -0
  155. package/modules/incident-response/quiz.md +103 -0
  156. package/modules/incident-response/resources.md +40 -0
  157. package/modules/incident-response/walkthrough.md +82 -0
  158. package/modules/llm-fundamentals/content.md +114 -0
  159. package/modules/llm-fundamentals/exercises.md +83 -0
  160. package/modules/llm-fundamentals/module.yaml +42 -0
  161. package/modules/llm-fundamentals/quick-ref.md +64 -0
  162. package/modules/llm-fundamentals/quiz.md +103 -0
  163. package/modules/llm-fundamentals/resources.md +30 -0
  164. package/modules/llm-fundamentals/walkthrough.md +91 -0
  165. package/modules/one-on-ones/content.md +133 -0
  166. package/modules/one-on-ones/exercises.md +81 -0
  167. package/modules/one-on-ones/module.yaml +44 -0
  168. package/modules/one-on-ones/quick-ref.md +67 -0
  169. package/modules/one-on-ones/quiz.md +73 -0
  170. package/modules/one-on-ones/resources.md +37 -0
  171. package/modules/one-on-ones/walkthrough.md +69 -0
  172. package/modules/package.json +9 -0
  173. package/modules/prioritization-frameworks/content.md +130 -0
  174. package/modules/prioritization-frameworks/exercises.md +93 -0
  175. package/modules/prioritization-frameworks/module.yaml +41 -0
  176. package/modules/prioritization-frameworks/quick-ref.md +77 -0
  177. package/modules/prioritization-frameworks/quiz.md +73 -0
  178. package/modules/prioritization-frameworks/resources.md +32 -0
  179. package/modules/prioritization-frameworks/walkthrough.md +69 -0
  180. package/modules/prompt-engineering/content.md +123 -0
  181. package/modules/prompt-engineering/exercises.md +82 -0
  182. package/modules/prompt-engineering/game.yaml +101 -0
  183. package/modules/prompt-engineering/module.yaml +45 -0
  184. package/modules/prompt-engineering/quick-ref.md +65 -0
  185. package/modules/prompt-engineering/quiz.md +105 -0
  186. package/modules/prompt-engineering/resources.md +36 -0
  187. package/modules/prompt-engineering/walkthrough.md +81 -0
  188. package/modules/rag-fundamentals/content.md +111 -0
  189. package/modules/rag-fundamentals/exercises.md +80 -0
  190. package/modules/rag-fundamentals/module.yaml +45 -0
  191. package/modules/rag-fundamentals/quick-ref.md +58 -0
  192. package/modules/rag-fundamentals/quiz.md +75 -0
  193. package/modules/rag-fundamentals/resources.md +34 -0
  194. package/modules/rag-fundamentals/walkthrough.md +75 -0
  195. package/modules/react-fundamentals/content.md +140 -0
  196. package/modules/react-fundamentals/exercises.md +81 -0
  197. package/modules/react-fundamentals/game.yaml +145 -0
  198. package/modules/react-fundamentals/module.yaml +45 -0
  199. package/modules/react-fundamentals/quick-ref.md +62 -0
  200. package/modules/react-fundamentals/quiz.md +106 -0
  201. package/modules/react-fundamentals/resources.md +42 -0
  202. package/modules/react-fundamentals/walkthrough.md +89 -0
  203. package/modules/react-fundamentals/workshop.yaml +112 -0
  204. package/modules/react-native-fundamentals/content.md +141 -0
  205. package/modules/react-native-fundamentals/exercises.md +79 -0
  206. package/modules/react-native-fundamentals/module.yaml +42 -0
  207. package/modules/react-native-fundamentals/quick-ref.md +60 -0
  208. package/modules/react-native-fundamentals/quiz.md +61 -0
  209. package/modules/react-native-fundamentals/resources.md +24 -0
  210. package/modules/react-native-fundamentals/walkthrough.md +84 -0
  211. package/modules/registry.yaml +1650 -0
  212. package/modules/risk-management/content.md +162 -0
  213. package/modules/risk-management/exercises.md +86 -0
  214. package/modules/risk-management/module.yaml +41 -0
  215. package/modules/risk-management/quick-ref.md +82 -0
  216. package/modules/risk-management/quiz.md +73 -0
  217. package/modules/risk-management/resources.md +40 -0
  218. package/modules/risk-management/walkthrough.md +67 -0
  219. package/modules/running-effective-standups/content.md +119 -0
  220. package/modules/running-effective-standups/exercises.md +79 -0
  221. package/modules/running-effective-standups/module.yaml +40 -0
  222. package/modules/running-effective-standups/quick-ref.md +61 -0
  223. package/modules/running-effective-standups/quiz.md +73 -0
  224. package/modules/running-effective-standups/resources.md +36 -0
  225. package/modules/running-effective-standups/walkthrough.md +76 -0
  226. package/modules/solid-principles/content.md +154 -0
  227. package/modules/solid-principles/exercises.md +107 -0
  228. package/modules/solid-principles/module.yaml +42 -0
  229. package/modules/solid-principles/quick-ref.md +50 -0
  230. package/modules/solid-principles/quiz.md +102 -0
  231. package/modules/solid-principles/resources.md +39 -0
  232. package/modules/solid-principles/walkthrough.md +84 -0
  233. package/modules/sprint-planning/content.md +142 -0
  234. package/modules/sprint-planning/exercises.md +79 -0
  235. package/modules/sprint-planning/game.yaml +84 -0
  236. package/modules/sprint-planning/module.yaml +44 -0
  237. package/modules/sprint-planning/quick-ref.md +76 -0
  238. package/modules/sprint-planning/quiz.md +102 -0
  239. package/modules/sprint-planning/resources.md +39 -0
  240. package/modules/sprint-planning/walkthrough.md +75 -0
  241. package/modules/sql-fundamentals/content.md +160 -0
  242. package/modules/sql-fundamentals/exercises.md +87 -0
  243. package/modules/sql-fundamentals/game.yaml +105 -0
  244. package/modules/sql-fundamentals/module.yaml +45 -0
  245. package/modules/sql-fundamentals/quick-ref.md +53 -0
  246. package/modules/sql-fundamentals/quiz.md +103 -0
  247. package/modules/sql-fundamentals/resources.md +42 -0
  248. package/modules/sql-fundamentals/walkthrough.md +92 -0
  249. package/modules/sql-fundamentals/workshop.yaml +109 -0
  250. package/modules/stakeholder-communication/content.md +186 -0
  251. package/modules/stakeholder-communication/exercises.md +87 -0
  252. package/modules/stakeholder-communication/module.yaml +38 -0
  253. package/modules/stakeholder-communication/quick-ref.md +89 -0
  254. package/modules/stakeholder-communication/quiz.md +73 -0
  255. package/modules/stakeholder-communication/resources.md +41 -0
  256. package/modules/stakeholder-communication/walkthrough.md +74 -0
  257. package/modules/system-design/content.md +149 -0
  258. package/modules/system-design/exercises.md +83 -0
  259. package/modules/system-design/game.yaml +95 -0
  260. package/modules/system-design/module.yaml +46 -0
  261. package/modules/system-design/quick-ref.md +59 -0
  262. package/modules/system-design/quiz.md +102 -0
  263. package/modules/system-design/resources.md +46 -0
  264. package/modules/system-design/walkthrough.md +90 -0
  265. package/modules/team-topologies/content.md +166 -0
  266. package/modules/team-topologies/exercises.md +85 -0
  267. package/modules/team-topologies/module.yaml +41 -0
  268. package/modules/team-topologies/quick-ref.md +61 -0
  269. package/modules/team-topologies/quiz.md +101 -0
  270. package/modules/team-topologies/resources.md +37 -0
  271. package/modules/team-topologies/walkthrough.md +76 -0
  272. package/modules/technical-debt/content.md +111 -0
  273. package/modules/technical-debt/exercises.md +92 -0
  274. package/modules/technical-debt/module.yaml +39 -0
  275. package/modules/technical-debt/quick-ref.md +60 -0
  276. package/modules/technical-debt/quiz.md +73 -0
  277. package/modules/technical-debt/resources.md +25 -0
  278. package/modules/technical-debt/walkthrough.md +94 -0
  279. package/modules/technical-mentoring/content.md +128 -0
  280. package/modules/technical-mentoring/exercises.md +84 -0
  281. package/modules/technical-mentoring/module.yaml +41 -0
  282. package/modules/technical-mentoring/quick-ref.md +74 -0
  283. package/modules/technical-mentoring/quiz.md +73 -0
  284. package/modules/technical-mentoring/resources.md +33 -0
  285. package/modules/technical-mentoring/walkthrough.md +65 -0
  286. package/modules/test-strategy/content.md +136 -0
  287. package/modules/test-strategy/exercises.md +84 -0
  288. package/modules/test-strategy/game.yaml +99 -0
  289. package/modules/test-strategy/module.yaml +45 -0
  290. package/modules/test-strategy/quick-ref.md +66 -0
  291. package/modules/test-strategy/quiz.md +99 -0
  292. package/modules/test-strategy/resources.md +60 -0
  293. package/modules/test-strategy/walkthrough.md +97 -0
  294. package/modules/test-strategy/workshop.yaml +96 -0
  295. package/modules/typescript-fundamentals/content.md +127 -0
  296. package/modules/typescript-fundamentals/exercises.md +79 -0
  297. package/modules/typescript-fundamentals/game.yaml +111 -0
  298. package/modules/typescript-fundamentals/module.yaml +45 -0
  299. package/modules/typescript-fundamentals/quick-ref.md +55 -0
  300. package/modules/typescript-fundamentals/quiz.md +104 -0
  301. package/modules/typescript-fundamentals/resources.md +42 -0
  302. package/modules/typescript-fundamentals/walkthrough.md +71 -0
  303. package/modules/typescript-fundamentals/workshop.yaml +146 -0
  304. package/modules/user-story-mapping/content.md +123 -0
  305. package/modules/user-story-mapping/exercises.md +87 -0
  306. package/modules/user-story-mapping/module.yaml +41 -0
  307. package/modules/user-story-mapping/quick-ref.md +64 -0
  308. package/modules/user-story-mapping/quiz.md +73 -0
  309. package/modules/user-story-mapping/resources.md +29 -0
  310. package/modules/user-story-mapping/walkthrough.md +86 -0
  311. package/modules/writing-prds/content.md +133 -0
  312. package/modules/writing-prds/exercises.md +93 -0
  313. package/modules/writing-prds/game.yaml +83 -0
  314. package/modules/writing-prds/module.yaml +44 -0
  315. package/modules/writing-prds/quick-ref.md +77 -0
  316. package/modules/writing-prds/quiz.md +103 -0
  317. package/modules/writing-prds/resources.md +30 -0
  318. package/modules/writing-prds/walkthrough.md +87 -0
  319. package/package.json +5 -3
  320. package/src/server.js +17 -7
@@ -0,0 +1,88 @@
1
+ # Accessibility Exercises
2
+
3
+ ## Exercise 1: Contrast Audit
4
+
5
+ **Task:** Audit a real site or design file. For body text, headings, and at least two buttons/links, measure contrast ratios. Document passes (AA) and failures. For each failure, propose a fix.
6
+
7
+ **Validation:**
8
+ - [ ] At least 5 elements measured
9
+ - [ ] Contrast ratios recorded (e.g., 4.2:1 fails; 4.5:1 passes)
10
+ - [ ] Each failure has a concrete fix (color change, size change, or background)
11
+ - [ ] Re-measurement shows passes after fixes
12
+
13
+ **Hints:**
14
+ 1. Use WebAIM Contrast Checker or browser DevTools
15
+ 2. Large text = 18pt+ or 14pt+ bold; different threshold (3:1 for AA)
16
+ 3. Buttons: contrast against both background and any border
17
+
18
+ ---
19
+
20
+ ## Exercise 2: Keyboard-Only Form
21
+
22
+ **Task:** Build a simple form (name, email, submit) that is fully usable with the keyboard. Ensure: tab order makes sense, focus is visible, errors are announced, and Enter submits.
23
+
24
+ **Validation:**
25
+ - [ ] All fields reachable and operable via Tab/Enter/Space
26
+ - [ ] Focus ring visible on all interactive elements
27
+ - [ ] Form can be submitted with Enter
28
+ - [ ] Validation errors are associated with fields (e.g., `aria-describedby`) and focus moves to first error
29
+
30
+ **Hints:**
31
+ 1. Use `<label for="id">` to associate labels
32
+ 2. Use `aria-describedby` for error messages
33
+ 3. Test with `:focus-visible` styles
34
+
35
+ ---
36
+
37
+ ## Exercise 3: Screen Reader Testing
38
+
39
+ **Task:** Use VoiceOver or NVDA to complete a task on a site (e.g., find and click a specific link, fill a field). Document: what was announced, what was confusing, and one change that would help.
40
+
41
+ **Validation:**
42
+ - [ ] Task completed with screen reader only
43
+ - [ ] At least 3 observations documented (announcements, confusion, gaps)
44
+ - [ ] One concrete improvement suggested with implementation note (e.g., add `aria-label`, fix heading order)
45
+
46
+ **Hints:**
47
+ 1. Use heading navigation (VoiceOver: VO+Cmd+H) to skim
48
+ 2. Use rotor/lists to jump to links or form controls
49
+ 3. Note redundant or missing announcements
50
+
51
+ ---
52
+
53
+ ## Exercise 4: Semantic HTML vs. ARIA
54
+
55
+ **Task:** Given this markup, fix it for accessibility. Use semantic HTML first; add ARIA only when needed.
56
+
57
+ ```html
58
+ <div onclick="submit()">Submit</div>
59
+ <div class="checkbox" onclick="toggle()"></div>
60
+ <img src="chart.png">
61
+ ```
62
+
63
+ **Validation:**
64
+ - [ ] "Submit" is a `<button>` or has `role="button"` + `tabindex="0"` + keyboard handler if not `<button>`
65
+ - [ ] Checkbox uses `<input type="checkbox">` or has `role="checkbox"`, `aria-checked`, and keyboard support
66
+ - [ ] Image has meaningful `alt` or `alt=""` if decorative
67
+ - [ ] No ARIA when native HTML suffices
68
+
69
+ **Hints:**
70
+ 1. `<button>` handles keyboard and focus automatically
71
+ 2. `<input type="checkbox">` is preferred over ARIA checkbox
72
+ 3. Ask: is the image meaningful? If not, `alt=""`
73
+
74
+ ---
75
+
76
+ ## Exercise 5: Run axe and Fix Issues
77
+
78
+ **Task:** Install axe DevTools (browser extension). Run it on a page. Fix all Critical and Serious issues. Document what you changed and why.
79
+
80
+ **Validation:**
81
+ - [ ] axe shows 0 Critical and 0 Serious issues (or documented exceptions)
82
+ - [ ] Each fix is documented (element, rule, fix applied)
83
+ - [ ] Manual spot-check: keyboard and screen reader still work
84
+
85
+ **Hints:**
86
+ 1. Common fixes: add `alt`, fix contrast, add `aria-label`, fix heading order
87
+ 2. Some issues require design changes—document and escalate
88
+ 3. Re-run axe after each fix to ensure no regressions
@@ -0,0 +1,43 @@
1
+ slug: accessibility-fundamentals
2
+ title: "Accessibility -- WCAG Fundamentals for Designers"
3
+ version: 1.0.0
4
+ description: "Learn WCAG principles, conformance levels, and practical a11y patterns for inclusive design."
5
+ category: ux-design
6
+ tags: [accessibility, wcag, a11y, inclusive-design, screen-readers, aria]
7
+ difficulty: beginner
8
+
9
+ xp:
10
+ read: 10
11
+ walkthrough: 30
12
+ exercise: 20
13
+ quiz: 15
14
+ quiz-perfect-bonus: 10
15
+
16
+ time:
17
+ quick: 5
18
+ read: 15
19
+ guided: 45
20
+
21
+ prerequisites: []
22
+ related: [design-critique, react-fundamentals]
23
+
24
+ triggers:
25
+ - "What are WCAG guidelines?"
26
+ - "How do I make my app accessible?"
27
+ - "What is ARIA and when should I use it?"
28
+ - "How do screen readers work?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-mermaid, diagram-flow]
32
+ quiz-types: [quiz-matching, quiz-timed-choice]
33
+ playground: bash
34
+ web-embeds: true
35
+ slides: true
36
+
37
+ sources:
38
+ - url: "https://www.w3.org/WAI/WCAG21/quickref/"
39
+ label: "WCAG 2.1 Quick Reference"
40
+ type: docs
41
+ - url: "https://webaim.org"
42
+ label: "WebAIM"
43
+ type: docs
@@ -0,0 +1,71 @@
1
+ # Accessibility Quick Reference
2
+
3
+ ## WCAG POUR
4
+
5
+ | Principle | Focus |
6
+ |-----------|-------|
7
+ | **Perceivable** | Text alternatives, captions, color not sole indicator |
8
+ | **Operable** | Keyboard, time, no seizure triggers |
9
+ | **Understandable** | Readable, predictable, input help |
10
+ | **Robust** | Valid markup, assistive-tech compatible |
11
+
12
+ ## Conformance Levels
13
+
14
+ | Level | Typical Use |
15
+ |-------|-------------|
16
+ | A | Minimum baseline |
17
+ | AA | Target for most sites; legal requirement in many places |
18
+ | AAA | Enhanced; not always feasible |
19
+
20
+ ## Contrast (AA)
21
+
22
+ | Content | Ratio |
23
+ |---------|-------|
24
+ | Normal text | 4.5:1 |
25
+ | Large text (18pt+ or 14pt+ bold) | 3:1 |
26
+ | UI components | 3:1 |
27
+
28
+ ## Semantic HTML
29
+
30
+ | Purpose | Element |
31
+ |---------|---------|
32
+ | Heading | `<h1>`–`<h6>` |
33
+ | Link | `<a href="">` |
34
+ | Button | `<button>` |
35
+ | Form | `<label>`, `<input>`, `<select>`, `<textarea>` |
36
+ | Landmarks | `<header>`, `<main>`, `<nav>`, `<footer>`, `<article>`, `<aside>` |
37
+
38
+ ## ARIA Quick Guide
39
+
40
+ | Use | Example |
41
+ |-----|---------|
42
+ | Label | `aria-label="Close dialog"` |
43
+ | Description | `aria-describedby="error-1"` |
44
+ | State | `aria-expanded`, `aria-selected`, `aria-checked` |
45
+ | Live region | `aria-live="polite"` |
46
+
47
+ **Rule:** Prefer HTML; use ARIA when HTML isn't enough.
48
+
49
+ ## Alt Text
50
+
51
+ | Image Type | Alt |
52
+ |------------|-----|
53
+ | Informative | Describe content/function |
54
+ | Decorative | `alt=""` |
55
+ | Complex | `alt` summary + long description |
56
+
57
+ ## Keyboard
58
+
59
+ - Tab order follows visual order
60
+ - Focus visible (ring)
61
+ - No keyboard traps
62
+ - Enter/Space activate buttons and links
63
+
64
+ ## Testing
65
+
66
+ | Tool | Purpose |
67
+ |------|---------|
68
+ | axe DevTools | In-browser WCAG audit |
69
+ | Lighthouse | Audit + performance |
70
+ | WAVE | Visual a11y feedback |
71
+ | Screen readers | NVDA, VoiceOver, TalkBack |
@@ -0,0 +1,100 @@
1
+ # Accessibility Quiz
2
+
3
+ ## Question 1
4
+
5
+ What does the "P" in POUR stand for?
6
+
7
+ A) Performance
8
+ B) Perceivable
9
+ C) Portable
10
+ D) Progressive
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: POUR stands for Perceivable, Operable, Understandable, Robust. Perceivable means information and UI must be presentable in ways users can perceive—e.g., text alternatives, captions, color not as the only indicator. -->
14
+
15
+ ## Question 2
16
+
17
+ What is the minimum contrast ratio for normal body text at WCAG AA?
18
+
19
+ A) 3:1
20
+ B) 4.5:1
21
+ C) 7:1
22
+ D) 2:1
23
+
24
+ <!-- ANSWER: B -->
25
+ <!-- EXPLANATION: WCAG AA requires 4.5:1 for normal text and 3:1 for large text (18pt+ or 14pt+ bold). AAA requires 7:1 for normal text. 3:1 is for large text and UI components. -->
26
+
27
+ ## Question 3
28
+
29
+ When should you use ARIA?
30
+
31
+ A) Always—it makes everything accessible
32
+ B) Only when native HTML doesn't provide the needed semantics or behavior
33
+ C) Never—ARIA is deprecated
34
+ D) Only for custom components
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: Use native HTML first (e.g., <button>, <label>). Add ARIA only when HTML isn't enough—e.g., for custom widgets, live regions, or complex interactions. Redundant or incorrect ARIA can hurt accessibility. -->
38
+
39
+ ## Question 4
40
+
41
+ For a decorative image (e.g., a background pattern or spacer), what should the alt attribute be?
42
+
43
+ A) "Decorative image"
44
+ B) "Image"
45
+ C) Empty: alt=""
46
+ D) Omit the alt attribute entirely
47
+
48
+ <!-- ANSWER: C -->
49
+ <!-- EXPLANATION: Decorative images should have alt="" (empty string) so screen readers skip them. Omitting alt entirely can cause the filename or URL to be announced. "Decorative image" or "Image" is redundant noise. -->
50
+
51
+ ## Question 5
52
+
53
+ What percentage of accessibility issues can automated tools reliably catch?
54
+
55
+ A) About 90%
56
+ B) About 50%
57
+ C) About 30%
58
+ D) Nearly 100%
59
+
60
+ <!-- ANSWER: C -->
61
+ <!-- EXPLANATION: Automated tools catch roughly 30% of accessibility issues. Many problems—keyboard traps, confusing focus order, unclear labels, cognitive overload—require manual testing with keyboard and screen readers. -->
62
+
63
+ ## Question 6
64
+
65
+ Which element is best for a button that triggers an action?
66
+
67
+ A) <div role="button" tabindex="0">
68
+ B) <a href="#">Click here</a>
69
+ C) <button>Submit</button>
70
+ D) <span class="button">Submit</span>
71
+
72
+ <!-- ANSWER: C -->
73
+ <!-- EXPLANATION: <button> is native, focusable, keyboard-operable (Enter/Space), and announced correctly by screen readers. Div/span with role="button" requires manual keyboard handlers and focus management. Links are for navigation, not actions. -->
74
+
75
+ ## Question 7
76
+
77
+ <!-- VISUAL: quiz-matching -->
78
+
79
+ Match each POUR principle to an example:
80
+
81
+ A) Perceivable → 1) Alt text for images, captions for video
82
+ B) Operable → 2) Keyboard accessible, no keyboard traps
83
+ C) Understandable → 3) Clear labels, consistent navigation
84
+ D) Robust → 4) Valid HTML, works across assistive technologies
85
+
86
+ <!-- ANSWER: A1,B2,C3,D4 -->
87
+ <!-- EXPLANATION: Perceivable = present info in ways users can perceive (alt text, captions). Operable = keyboard access, no traps. Understandable = clear, consistent UI. Robust = works with assistive tech. -->
88
+
89
+ ## Question 8
90
+
91
+ <!-- VISUAL: quiz-matching -->
92
+
93
+ Match each WCAG conformance level to its description:
94
+
95
+ A) Level A → 1) Minimum; essential for basic accessibility
96
+ B) Level AA → 2) Enhanced; addresses major barriers; common target
97
+ C) Level AAA → 3) Highest; addresses most barriers; not required for all content
98
+
99
+ <!-- ANSWER: A1,B2,C3 -->
100
+ <!-- EXPLANATION: Level A is the minimum baseline. Level AA is the common target for most sites. Level AAA is the highest and not achievable for all content types. -->
@@ -0,0 +1,29 @@
1
+ # Accessibility — Resources
2
+
3
+ ## Videos
4
+
5
+ - [Web Accessibility Perspectives](https://www.w3.org/WAI/perspective-videos/) — W3C. Short videos on keyboard, captions, alt text, and more.
6
+ - [A11y with Lindsey](https://www.youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g) — Chrome Developers. Practical accessibility for web developers.
7
+ - [Screen Reader Demo](https://www.youtube.com/watch?v=dEbl5jvLKGQ) — WebAIM. How screen readers interpret pages.
8
+
9
+ ## Articles and Readings
10
+
11
+ - [WCAG 2.1 Quick Reference](https://www.w3.org/WAI/WCAG21/quickref/) — W3C. Filterable list of success criteria and techniques.
12
+ - [WebAIM Articles](https://webaim.org/articles/) — Screen reader testing, ARIA, contrast, and more.
13
+ - [A List Apart: Accessibility](https://alistapart.com/topic/accessibility/) — A List Apart. Design and development for accessibility.
14
+ - [Inclusive Design Principles](https://inclusivedesignprinciples.org/) — Seven principles for inclusive design.
15
+ - [MDN Accessibility](https://developer.mozilla.org/en-US/docs/Web/Accessibility) — MDN. Technical reference for ARIA, semantics, and testing.
16
+
17
+ ## Books
18
+
19
+ - **A Web for Everyone** by Sarah Horton and Whitney Quesenbery — Designing accessible user experiences. Rosenfeld Media.
20
+ - **Inclusive Design Patterns** by Heydon Pickering — Code patterns for accessible components. Smashing Magazine.
21
+
22
+ ## Tools
23
+
24
+ - [axe DevTools](https://www.deque.com/axe/devtools/) — Browser extension for automated WCAG audits.
25
+ - [WAVE](https://wave.webaim.org/) — Visual accessibility evaluation tool.
26
+ - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) — Check color contrast ratios.
27
+ - [Lighthouse](https://developers.google.com/web/tools/lighthouse) — Built into Chrome DevTools; includes accessibility audit.
28
+ - [NVDA](https://www.nvaccess.org/) — Free screen reader for Windows.
29
+ - [VoiceOver](https://support.apple.com/guide/voiceover/welcome/mac) — Built-in screen reader for macOS and iOS.
@@ -0,0 +1,80 @@
1
+ # Accessibility Walkthrough — Learn by Doing
2
+
3
+ ## Before We Begin
4
+
5
+ Accessibility isn't a checklist—it's about whether people can perceive, operate, and understand your interface. WCAG organizes this as POUR: Perceivable, Operable, Understandable, Robust.
6
+
7
+ **Diagnostic question:** Think of a site you use often. What happens when you can't use a mouse? When you zoom to 200%? When images don't load? Which of those experiences have you designed for?
8
+
9
+ **Checkpoint:** You can name at least one barrier someone might face and connect it to one POUR principle (perceivable, operable, understandable, or robust).
10
+
11
+ ---
12
+
13
+ ## Step 1: Check Color Contrast
14
+
15
+ <!-- hint:diagram mermaid-type="flowchart" topic="POUR principles" -->
16
+ <!-- hint:embed url="https://webaim.org/resources/contrastchecker/" -->
17
+
18
+ **Embed:** https://webaim.org/resources/contrastchecker/
19
+
20
+ **Task:** Pick a webpage or design. Use a contrast checker (WebAIM, DevTools, or axe) to verify that body text meets 4.5:1 (AA) and that buttons/links meet 3:1 against their backgrounds.
21
+
22
+ **Question:** What would you change if the contrast failed? How does this affect users with low vision or in bright light?
23
+
24
+ **Checkpoint:** The user can state the contrast ratio for at least one text/background pair and identify fixes if it fails.
25
+
26
+ ---
27
+
28
+ ## Step 2: Navigate with Keyboard Only
29
+
30
+ <!-- hint:terminal -->
31
+
32
+ **Task:** Unplug your mouse (or pretend). Use only Tab, Enter, Space, and arrow keys to complete a task on a site (e.g., submit a form, open a menu). Note any traps, missing focus, or confusing order.
33
+
34
+ **Question:** Where did focus go that surprised you? What would improve the experience?
35
+
36
+ **Checkpoint:** The user completes the task keyboard-only and identifies at least one improvement.
37
+
38
+ ---
39
+
40
+ ## Step 3: Audit a Page for Accessibility
41
+
42
+ **Embed:** https://www.w3.org/WAI/WCAG21/quickref/
43
+
44
+ **Task:** Run axe DevTools or Lighthouse on a page. Fix the top 3 issues (or document why you can't). Re-run the audit to confirm.
45
+
46
+ **Question:** Which issues were quick to fix vs. requiring design/structural changes? What would you prioritize?
47
+
48
+ **Checkpoint:** The user runs an audit, addresses issues, and can explain the impact of the fixes.
49
+
50
+ ---
51
+
52
+ ## Step 4: Use a Screen Reader
53
+
54
+ **Task:** Enable VoiceOver (macOS: Cmd+F5) or NVDA (Windows). Navigate a simple form or list. Don't look at the screen—listen only.
55
+
56
+ **Question:** What was announced that you didn't expect? What was missing or confusing?
57
+
58
+ **Checkpoint:** The user completes a short task using a screen reader and can describe what they heard.
59
+
60
+ ---
61
+
62
+ ## Step 5: Fix Semantic HTML and ARIA
63
+
64
+ **Task:** Find a page or component that uses `<div>` for buttons or non-labeled form fields. Rewrite it with semantic HTML (`<button>`, `<label>`) or add ARIA only where HTML isn't enough.
65
+
66
+ **Question:** When did native HTML solve the problem without ARIA? When did you need ARIA?
67
+
68
+ **Checkpoint:** The user produces accessible markup and can justify when ARIA was necessary.
69
+
70
+ ---
71
+
72
+ ## Step 6: Design an Accessible Flow
73
+
74
+ **Task:** Sketch or describe an accessible checkout flow. Include: skip link, heading hierarchy, form labels, error handling, focus management for a success message, and keyboard access to all controls.
75
+
76
+ **Question:** Which decisions were driven purely by accessibility, and which also improved the experience for everyone?
77
+
78
+ **Checkpoint:** The user's design addresses keyboard, screen reader, contrast, and focus, and they can explain the rationale.
79
+
80
+ <!-- hint:celebrate -->
@@ -0,0 +1,121 @@
1
+ # Architecture Decision Records — Documenting the Why
2
+
3
+ <!-- hint:slides topic="ADRs: why decisions get lost, ADR structure and template, lifecycle, when to write vs skip" slides="4" -->
4
+
5
+ ## Why Decisions Get Lost
6
+
7
+ Teams make dozens of architecture choices: database, framework, deployment model. Months later, nobody remembers *why* we chose PostgreSQL over MongoDB, or why we put the auth service in a separate repo. Knowledge lives in Slack, emails, and people's heads. New joiners repeat debates. Old decisions get "rediscovered" and overturned without context.
8
+
9
+ **ADRs fix that** by creating a durable record of the reasoning behind important choices.
10
+
11
+ ## What Is an ADR?
12
+
13
+ An **Architecture Decision Record** (ADR) is a short, standalone document that captures a single architectural decision, the context that drove it, and the consequences. It answers: *What did we decide? Why? What are the tradeoffs?*
14
+
15
+ ## Standard Format
16
+
17
+ A typical ADR has five sections:
18
+
19
+ | Section | Purpose |
20
+ |---------|---------|
21
+ | **Title** | Short, descriptive (e.g., "Use Redis for session storage") |
22
+ | **Status** | proposed, accepted, deprecated, superseded |
23
+ | **Context** | What forces, constraints, or options led to this decision? |
24
+ | **Decision** | What we decided — clear and actionable |
25
+ | **Consequences** | Positive and negative outcomes, follow-up work |
26
+
27
+ Example:
28
+
29
+ ```markdown
30
+ # ADR-001: Use Redis for session storage
31
+
32
+ ## Status
33
+ Accepted (2024-03-15)
34
+
35
+ ## Context
36
+ We need shared session state across multiple app instances.
37
+ Options: in-memory (not shared), DB (slow), Redis (fast, shared).
38
+
39
+ ## Decision
40
+ Use Redis with a 24h TTL for session storage.
41
+
42
+ ## Consequences
43
+ - Positive: Fast, horizontally scalable
44
+ - Negative: Extra infra; need Redis HA in prod
45
+ - Follow-up: Set up Redis Sentinel
46
+ ```
47
+
48
+ ## When to Write One (and When Not To)
49
+
50
+ **Write when:**
51
+ - The decision affects multiple teams or services
52
+ - Reversing it would be costly
53
+ - Future developers will wonder "why did we do this?"
54
+
55
+ **Skip when:**
56
+ - Trivial or reversible (e.g., formatting style)
57
+ - Temporary workaround you'll fix next sprint
58
+ - Purely operational (restart policy) unless it has architectural impact
59
+
60
+ ## Lightweight vs Heavyweight
61
+
62
+ - **Lightweight:** One file per decision, Markdown, in the repo. Fast to write.
63
+ - **Heavyweight:** Formal review, templates, tooling (e.g., Log4brains). Use when governance matters.
64
+
65
+ Most teams start lightweight and add structure if needed.
66
+
67
+ ## ADR Lifecycle
68
+
69
+ ```mermaid
70
+ stateDiagram-v2
71
+ [*] --> Proposed
72
+ Proposed --> Accepted: Approved
73
+ Proposed --> Rejected: Discarded
74
+ Accepted --> Deprecated: No longer relevant
75
+ Accepted --> Superseded: Replaced by new ADR
76
+ Deprecated --> [*]
77
+ Superseded --> [*]
78
+ ```
79
+
80
+ | Status | Meaning |
81
+ |--------|---------|
82
+ | **Proposed** | Under discussion |
83
+ | **Accepted** | Active decision |
84
+ | **Deprecated** | No longer followed; not replaced |
85
+ | **Superseded** | Replaced by another ADR (link it) |
86
+
87
+ ## Storing ADRs in the Repo
88
+
89
+ Common layout:
90
+
91
+ ```
92
+ docs/adr/
93
+ 0001-use-redis-for-sessions.md
94
+ 0002-migrate-to-graphql.md
95
+ 0003-adopt-event-sourcing.md
96
+ ```
97
+
98
+ Numbering preserves order. Some teams use dates: `2024-03-15-use-redis.md`.
99
+
100
+ ## Tooling
101
+
102
+ - **adr-tools** — CLI to create, link, and supersede ADRs
103
+ - **Log4brains** — Web UI to browse and search ADRs; integrates with Git
104
+ - **template** — A simple Markdown template in the repo is often enough
105
+
106
+ ## Common Pitfalls
107
+
108
+ | Pitfall | Fix |
109
+ |---------|-----|
110
+ | Writing too late | Write when you decide; memory fades fast |
111
+ | Too much detail | One decision per ADR; keep it 1–2 pages |
112
+ | Not linking to code | Add a line: "Implemented in `src/auth/session.js`" |
113
+ | No consequences | List at least one negative; honesty helps future readers |
114
+ | Never updating status | Deprecate or supersede when decisions change |
115
+
116
+ ## Key Takeaways
117
+
118
+ - ADRs capture **why**, not just **what**
119
+ - One decision per record
120
+ - Store them in the repo; make them discoverable
121
+ - Update status when decisions change
@@ -0,0 +1,81 @@
1
+ # ADR Writing Exercises
2
+
3
+ ## Exercise 1: Write an ADR for a Database Choice
4
+
5
+ **Task:** Write a full ADR for: "We chose PostgreSQL over MongoDB for the main application database." Include Title, Status, Context (options, constraints), Decision, Consequences (positive and negative).
6
+
7
+ **Validation:**
8
+ - [ ] All five sections present
9
+ - [ ] Context explains the options and constraints
10
+ - [ ] Decision is clear and actionable
11
+ - [ ] At least one negative consequence included
12
+
13
+ **Hints:**
14
+ 1. Context: need ACID, relational data, team familiarity, existing tooling
15
+ 2. Consequences: PostgreSQL — strong consistency, ecosystem; negative — schema migrations, scaling writes
16
+ 3. Keep it under 1–2 pages
17
+
18
+ ---
19
+
20
+ ## Exercise 2: Supersede an Old ADR
21
+
22
+ **Task:** You have ADR-003: "Use REST for all APIs (Accepted)". The team later decides to add GraphQL for mobile. Write ADR-007 that supersedes ADR-003 for the mobile API only. Include a reference to ADR-003 and explain the change.
23
+
24
+ **Validation:**
25
+ - [ ] ADR-007 has Status: Accepted
26
+ - [ ] ADR-007 references/supersedes ADR-003
27
+ - [ ] Context explains why the original decision no longer fully applies
28
+ - [ ] ADR-003 would be updated to Status: Superseded by ADR-007
29
+
30
+ **Hints:**
31
+ 1. "This ADR supersedes ADR-003 for mobile clients only."
32
+ 2. Update ADR-003's status to "Superseded by ADR-007"
33
+ 3. Context: mobile needs fewer round-trips, flexible querying
34
+
35
+ ---
36
+
37
+ ## Exercise 3: Lightweight vs Heavyweight
38
+
39
+ **Task:** Compare lightweight ADRs (Markdown in repo, no tooling) vs heavyweight (formal review, Log4brains, templates). List 2 pros and 2 cons of each. When would you recommend a team switch from lightweight to heavyweight?
40
+
41
+ **Validation:**
42
+ - [ ] Pros and cons for both approaches
43
+ - [ ] A clear trigger for when to add process (e.g., compliance, many teams, governance)
44
+
45
+ **Hints:**
46
+ 1. Lightweight: fast, low friction, might get inconsistent
47
+ 2. Heavyweight: discoverable, consistent, more overhead
48
+ 3. Switch when: audit needs, many ADRs, cross-team coordination
49
+
50
+ ---
51
+
52
+ ## Exercise 4: Context That Helps Future Readers
53
+
54
+ **Task:** You're writing an ADR for "We use feature flags for all production releases." Write a Context section that would help someone in 2 years understand *why* — include what problem it solved and what the alternative was (e.g., long-lived branches, big-bang releases).
55
+
56
+ **Validation:**
57
+ - [ ] Problem is stated clearly
58
+ - [ ] Alternative approach(es) are mentioned
59
+ - [ ] A new joiner could understand the rationale without asking
60
+
61
+ **Hints:**
62
+ 1. Problem: risky deployments, hard to roll back, long merge cycles
63
+ 2. Alternative: branch per feature, merge at release
64
+ 3. Include constraints: team size, release frequency
65
+
66
+ ---
67
+
68
+ ## Exercise 5: Deprecate Without Replacement
69
+
70
+ **Task:** Write an ADR that deprecates a previous decision: "We no longer use Redis for rate limiting; we switched to an API gateway feature." This deprecation has no replacement ADR (the new approach is configured, not a separate architecture decision). Document it appropriately.
71
+
72
+ **Validation:**
73
+ - [ ] Status: Deprecated
74
+ - [ ] Context explains what changed and why
75
+ - [ ] References the original ADR if one existed
76
+ - [ ] States that the capability now lives elsewhere (gateway config)
77
+
78
+ **Hints:**
79
+ 1. "This ADR deprecates ADR-005 (Use Redis for rate limiting)."
80
+ 2. Context: gateway provides rate limiting; one less moving part
81
+ 3. No superseding ADR needed — operational change
@@ -0,0 +1,41 @@
1
+ slug: adr-writing
2
+ title: "Architecture Decision Records -- Documenting the Why"
3
+ version: 1.0.0
4
+ description: "Document architecture decisions with ADRs—format, lifecycle, and tooling."
5
+ category: architecture
6
+ tags: [adr, architecture, documentation, decisions, technical-writing]
7
+ difficulty: intermediate
8
+
9
+ xp:
10
+ read: 15
11
+ walkthrough: 40
12
+ exercise: 25
13
+ quiz: 20
14
+ quiz-perfect-bonus: 10
15
+
16
+ time:
17
+ quick: 5
18
+ read: 15
19
+ guided: 45
20
+
21
+ prerequisites: []
22
+ related: [system-design, technical-debt]
23
+
24
+ triggers:
25
+ - "What is an ADR?"
26
+ - "How do I document architecture decisions?"
27
+ - "Why should I write ADRs?"
28
+ - "What's the format for an architecture decision record?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-flow, diagram-mermaid]
32
+ quiz-types: [quiz-drag-order, quiz-timed-choice]
33
+ slides: true
34
+
35
+ sources:
36
+ - url: "https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions"
37
+ label: "Michael Nygard's ADR Article"
38
+ type: docs
39
+ - url: "https://adr.github.io"
40
+ label: "ADR GitHub Organisation"
41
+ type: docs