@shaykec/bridge 0.4.25 → 0.4.27

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 (595) 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 +2 -2
  320. package/canvas-dist/assets/_basePickBy-BovdgFIW.js +0 -1
  321. package/canvas-dist/assets/_basePickBy-BtkHe2u_.js +0 -1
  322. package/canvas-dist/assets/_basePickBy-C0936578.js +0 -1
  323. package/canvas-dist/assets/_basePickBy-CE2Qvuh7.js +0 -1
  324. package/canvas-dist/assets/_basePickBy-DV6sX4CG.js +0 -1
  325. package/canvas-dist/assets/_basePickBy-DZX6ZNMT.js +0 -1
  326. package/canvas-dist/assets/_baseUniq-B7dN28TM.js +0 -1
  327. package/canvas-dist/assets/_baseUniq-Cl23fCdR.js +0 -1
  328. package/canvas-dist/assets/_baseUniq-CojWFw7B.js +0 -1
  329. package/canvas-dist/assets/_baseUniq-DA640BJl.js +0 -1
  330. package/canvas-dist/assets/_baseUniq-Ds-62CCj.js +0 -1
  331. package/canvas-dist/assets/_baseUniq-KG7SRw9H.js +0 -1
  332. package/canvas-dist/assets/arc-7E9FFKlC.js +0 -1
  333. package/canvas-dist/assets/arc-BSMfRZtt.js +0 -1
  334. package/canvas-dist/assets/arc-C6nT-koR.js +0 -1
  335. package/canvas-dist/assets/arc-D_fOnjmo.js +0 -1
  336. package/canvas-dist/assets/arc-Khfvgkr3.js +0 -1
  337. package/canvas-dist/assets/arc-ieS-i42x.js +0 -1
  338. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DF4t6GQD.js +0 -36
  339. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DXgSlsio.js +0 -36
  340. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DiomxPB4.js +0 -36
  341. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DnFaxvXD.js +0 -36
  342. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-Dt38C0LJ.js +0 -36
  343. package/canvas-dist/assets/architectureDiagram-VXUJARFQ-egbtMwua.js +0 -36
  344. package/canvas-dist/assets/blockDiagram-VD42YOAC-CUNKQd-b.js +0 -122
  345. package/canvas-dist/assets/blockDiagram-VD42YOAC-D-NiLXxd.js +0 -122
  346. package/canvas-dist/assets/blockDiagram-VD42YOAC-Dx6Dh9gg.js +0 -122
  347. package/canvas-dist/assets/blockDiagram-VD42YOAC-_r-PmlQy.js +0 -122
  348. package/canvas-dist/assets/blockDiagram-VD42YOAC-bvYKZLMc.js +0 -122
  349. package/canvas-dist/assets/blockDiagram-VD42YOAC-l85QT9Ig.js +0 -122
  350. package/canvas-dist/assets/c4Diagram-YG6GDRKO-BWKCTyQi.js +0 -10
  351. package/canvas-dist/assets/c4Diagram-YG6GDRKO-CbXs2xzC.js +0 -10
  352. package/canvas-dist/assets/c4Diagram-YG6GDRKO-CjiS-GNK.js +0 -10
  353. package/canvas-dist/assets/c4Diagram-YG6GDRKO-D7SnLlHp.js +0 -10
  354. package/canvas-dist/assets/c4Diagram-YG6GDRKO-RTTCSVf2.js +0 -10
  355. package/canvas-dist/assets/c4Diagram-YG6GDRKO-yvqJ_AqX.js +0 -10
  356. package/canvas-dist/assets/channel-CSXq7GP6.js +0 -1
  357. package/canvas-dist/assets/channel-CvujjGiJ.js +0 -1
  358. package/canvas-dist/assets/channel-D959Iony.js +0 -1
  359. package/canvas-dist/assets/channel-DOSwCnrB.js +0 -1
  360. package/canvas-dist/assets/channel-sw61LzxF.js +0 -1
  361. package/canvas-dist/assets/channel-vZVnNhOK.js +0 -1
  362. package/canvas-dist/assets/chunk-4BX2VUAB-BBjuAwXr.js +0 -1
  363. package/canvas-dist/assets/chunk-4BX2VUAB-BXRNyucU.js +0 -1
  364. package/canvas-dist/assets/chunk-4BX2VUAB-Bgq5Z77T.js +0 -1
  365. package/canvas-dist/assets/chunk-4BX2VUAB-BuoMCMCr.js +0 -1
  366. package/canvas-dist/assets/chunk-4BX2VUAB-COD5n7vg.js +0 -1
  367. package/canvas-dist/assets/chunk-4BX2VUAB-K8DepKJO.js +0 -1
  368. package/canvas-dist/assets/chunk-55IACEB6-Bic_bMrQ.js +0 -1
  369. package/canvas-dist/assets/chunk-55IACEB6-DEy2QUDq.js +0 -1
  370. package/canvas-dist/assets/chunk-55IACEB6-Dcgbmfzg.js +0 -1
  371. package/canvas-dist/assets/chunk-55IACEB6-DfmuNm_E.js +0 -1
  372. package/canvas-dist/assets/chunk-55IACEB6-DlQRcczm.js +0 -1
  373. package/canvas-dist/assets/chunk-55IACEB6-p2qMY-fm.js +0 -1
  374. package/canvas-dist/assets/chunk-B4BG7PRW-BpbyxBP2.js +0 -165
  375. package/canvas-dist/assets/chunk-B4BG7PRW-CCPqvPrP.js +0 -165
  376. package/canvas-dist/assets/chunk-B4BG7PRW-CEeDPAki.js +0 -165
  377. package/canvas-dist/assets/chunk-B4BG7PRW-D2UFN_2M.js +0 -165
  378. package/canvas-dist/assets/chunk-B4BG7PRW-DFI5h6HC.js +0 -165
  379. package/canvas-dist/assets/chunk-B4BG7PRW-DKOiFGMU.js +0 -165
  380. package/canvas-dist/assets/chunk-DI55MBZ5-BV6nHjNQ.js +0 -220
  381. package/canvas-dist/assets/chunk-DI55MBZ5-CEZJmC0E.js +0 -220
  382. package/canvas-dist/assets/chunk-DI55MBZ5-DOZT99Ek.js +0 -220
  383. package/canvas-dist/assets/chunk-DI55MBZ5-DmC2LoG2.js +0 -220
  384. package/canvas-dist/assets/chunk-DI55MBZ5-DpkcJdZP.js +0 -220
  385. package/canvas-dist/assets/chunk-DI55MBZ5-fVTGx0zh.js +0 -220
  386. package/canvas-dist/assets/chunk-FMBD7UC4-BOCyQpI7.js +0 -15
  387. package/canvas-dist/assets/chunk-FMBD7UC4-C76FrRL8.js +0 -15
  388. package/canvas-dist/assets/chunk-FMBD7UC4-CAq-btWc.js +0 -15
  389. package/canvas-dist/assets/chunk-FMBD7UC4-CidVsej6.js +0 -15
  390. package/canvas-dist/assets/chunk-FMBD7UC4-DPpfskdX.js +0 -15
  391. package/canvas-dist/assets/chunk-FMBD7UC4-DnLtclge.js +0 -15
  392. package/canvas-dist/assets/chunk-QN33PNHL-BclpCUi8.js +0 -1
  393. package/canvas-dist/assets/chunk-QN33PNHL-DDUw8IU1.js +0 -1
  394. package/canvas-dist/assets/chunk-QN33PNHL-DdJFAUXw.js +0 -1
  395. package/canvas-dist/assets/chunk-QN33PNHL-DjV4jUn9.js +0 -1
  396. package/canvas-dist/assets/chunk-QN33PNHL-N-HTycqU.js +0 -1
  397. package/canvas-dist/assets/chunk-QN33PNHL-sd8p21DW.js +0 -1
  398. package/canvas-dist/assets/chunk-QZHKN3VN-B6mT-JkP.js +0 -1
  399. package/canvas-dist/assets/chunk-QZHKN3VN-BCo8pc7x.js +0 -1
  400. package/canvas-dist/assets/chunk-QZHKN3VN-C8IIu6es.js +0 -1
  401. package/canvas-dist/assets/chunk-QZHKN3VN-D9FF492U.js +0 -1
  402. package/canvas-dist/assets/chunk-QZHKN3VN-DWMbUjXT.js +0 -1
  403. package/canvas-dist/assets/chunk-QZHKN3VN-l5FBJ77g.js +0 -1
  404. package/canvas-dist/assets/chunk-TZMSLE5B-BASt-UWt.js +0 -1
  405. package/canvas-dist/assets/chunk-TZMSLE5B-BCfaZWLT.js +0 -1
  406. package/canvas-dist/assets/chunk-TZMSLE5B-BKIk_hBR.js +0 -1
  407. package/canvas-dist/assets/chunk-TZMSLE5B-C4pt-Ir8.js +0 -1
  408. package/canvas-dist/assets/chunk-TZMSLE5B-DwGlELvo.js +0 -1
  409. package/canvas-dist/assets/chunk-TZMSLE5B-jJKG-WvJ.js +0 -1
  410. package/canvas-dist/assets/classDiagram-2ON5EDUG-B7YQfPU4.js +0 -1
  411. package/canvas-dist/assets/classDiagram-2ON5EDUG-BZ61MaHY.js +0 -1
  412. package/canvas-dist/assets/classDiagram-2ON5EDUG-CGseYor2.js +0 -1
  413. package/canvas-dist/assets/classDiagram-2ON5EDUG-CKzOc99J.js +0 -1
  414. package/canvas-dist/assets/classDiagram-2ON5EDUG-Ce_LPjwW.js +0 -1
  415. package/canvas-dist/assets/classDiagram-2ON5EDUG-DorPdibv.js +0 -1
  416. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-B7YQfPU4.js +0 -1
  417. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-BZ61MaHY.js +0 -1
  418. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CGseYor2.js +0 -1
  419. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CKzOc99J.js +0 -1
  420. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-Ce_LPjwW.js +0 -1
  421. package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-DorPdibv.js +0 -1
  422. package/canvas-dist/assets/clone-74KSto7H.js +0 -1
  423. package/canvas-dist/assets/clone-CJQgAYVe.js +0 -1
  424. package/canvas-dist/assets/clone-DLeTuhHE.js +0 -1
  425. package/canvas-dist/assets/clone-D_IHK_lQ.js +0 -1
  426. package/canvas-dist/assets/clone-DxMUv1L9.js +0 -1
  427. package/canvas-dist/assets/clone-UNKf_nED.js +0 -1
  428. package/canvas-dist/assets/cose-bilkent-S5V4N54A-BTyQiCkr.js +0 -1
  429. package/canvas-dist/assets/cose-bilkent-S5V4N54A-BtPAe24N.js +0 -1
  430. package/canvas-dist/assets/cose-bilkent-S5V4N54A-DIjE7V3m.js +0 -1
  431. package/canvas-dist/assets/cose-bilkent-S5V4N54A-DKL_BGvE.js +0 -1
  432. package/canvas-dist/assets/cose-bilkent-S5V4N54A-LZ4OsCLU.js +0 -1
  433. package/canvas-dist/assets/cose-bilkent-S5V4N54A-XWeJtgga.js +0 -1
  434. package/canvas-dist/assets/dagre-6UL2VRFP-BJ2vcFwR.js +0 -4
  435. package/canvas-dist/assets/dagre-6UL2VRFP-C1FlE5s8.js +0 -4
  436. package/canvas-dist/assets/dagre-6UL2VRFP-C3BWFgl6.js +0 -4
  437. package/canvas-dist/assets/dagre-6UL2VRFP-CUnx73Rf.js +0 -4
  438. package/canvas-dist/assets/dagre-6UL2VRFP-Do10BY1y.js +0 -4
  439. package/canvas-dist/assets/dagre-6UL2VRFP-rOZEkrsg.js +0 -4
  440. package/canvas-dist/assets/diagram-PSM6KHXK-BGi_qzbq.js +0 -24
  441. package/canvas-dist/assets/diagram-PSM6KHXK-C3Nv7h_j.js +0 -24
  442. package/canvas-dist/assets/diagram-PSM6KHXK-CsMy-r0n.js +0 -24
  443. package/canvas-dist/assets/diagram-PSM6KHXK-Dj8g7kGt.js +0 -24
  444. package/canvas-dist/assets/diagram-PSM6KHXK-Dxb1w_7r.js +0 -24
  445. package/canvas-dist/assets/diagram-PSM6KHXK-kVMBkEyV.js +0 -24
  446. package/canvas-dist/assets/diagram-QEK2KX5R-4bsrr1WZ.js +0 -43
  447. package/canvas-dist/assets/diagram-QEK2KX5R-Bv7BmKfI.js +0 -43
  448. package/canvas-dist/assets/diagram-QEK2KX5R-C_FLN6hv.js +0 -43
  449. package/canvas-dist/assets/diagram-QEK2KX5R-Csuk5L3z.js +0 -43
  450. package/canvas-dist/assets/diagram-QEK2KX5R-D5Aszgz4.js +0 -43
  451. package/canvas-dist/assets/diagram-QEK2KX5R-DX58f87l.js +0 -43
  452. package/canvas-dist/assets/diagram-S2PKOQOG-1Q7hwiSd.js +0 -24
  453. package/canvas-dist/assets/diagram-S2PKOQOG-Bz9Vxi5V.js +0 -24
  454. package/canvas-dist/assets/diagram-S2PKOQOG-CdWgZIIc.js +0 -24
  455. package/canvas-dist/assets/diagram-S2PKOQOG-DBicbKFU.js +0 -24
  456. package/canvas-dist/assets/diagram-S2PKOQOG-DsXKwPtU.js +0 -24
  457. package/canvas-dist/assets/diagram-S2PKOQOG-L_SMHLXs.js +0 -24
  458. package/canvas-dist/assets/erDiagram-Q2GNP2WA-BYu7fh6H.js +0 -60
  459. package/canvas-dist/assets/erDiagram-Q2GNP2WA-CvnQ69BF.js +0 -60
  460. package/canvas-dist/assets/erDiagram-Q2GNP2WA-D3xm-Tdm.js +0 -60
  461. package/canvas-dist/assets/erDiagram-Q2GNP2WA-DIPpD8sj.js +0 -60
  462. package/canvas-dist/assets/erDiagram-Q2GNP2WA-DNgu6dMd.js +0 -60
  463. package/canvas-dist/assets/erDiagram-Q2GNP2WA-Decm8aB4.js +0 -60
  464. package/canvas-dist/assets/flowDiagram-NV44I4VS-2ymk2kw2.js +0 -162
  465. package/canvas-dist/assets/flowDiagram-NV44I4VS-BEPFOt6U.js +0 -162
  466. package/canvas-dist/assets/flowDiagram-NV44I4VS-BwqXYGfK.js +0 -162
  467. package/canvas-dist/assets/flowDiagram-NV44I4VS-CS1jax_z.js +0 -162
  468. package/canvas-dist/assets/flowDiagram-NV44I4VS-DQz5bf7r.js +0 -162
  469. package/canvas-dist/assets/flowDiagram-NV44I4VS-KW4T1sqF.js +0 -162
  470. package/canvas-dist/assets/ganttDiagram-JELNMOA3-B811prZt.js +0 -267
  471. package/canvas-dist/assets/ganttDiagram-JELNMOA3-C75pWm7X.js +0 -267
  472. package/canvas-dist/assets/ganttDiagram-JELNMOA3-CWsbo0fn.js +0 -267
  473. package/canvas-dist/assets/ganttDiagram-JELNMOA3-CbJozPBN.js +0 -267
  474. package/canvas-dist/assets/ganttDiagram-JELNMOA3-Co0cFt4c.js +0 -267
  475. package/canvas-dist/assets/ganttDiagram-JELNMOA3-I4PDqrRh.js +0 -267
  476. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-B-z0cLPt.js +0 -65
  477. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-Be40z-LF.js +0 -65
  478. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BejNaAVm.js +0 -65
  479. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BqWDYr0X.js +0 -65
  480. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-DSvWGY-e.js +0 -65
  481. package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-HLYbyNJ5.js +0 -65
  482. package/canvas-dist/assets/graph-BE8KKsdf.js +0 -1
  483. package/canvas-dist/assets/graph-D6DzzszU.js +0 -1
  484. package/canvas-dist/assets/graph-DFR8Y_8s.js +0 -1
  485. package/canvas-dist/assets/graph-Da385cDY.js +0 -1
  486. package/canvas-dist/assets/graph-MU7gZz2B.js +0 -1
  487. package/canvas-dist/assets/graph-wjSBJwnf.js +0 -1
  488. package/canvas-dist/assets/index--ztw-8Rw.js +0 -647
  489. package/canvas-dist/assets/index-5TpIM6B1.js +0 -11
  490. package/canvas-dist/assets/index-BSswTuBk.js +0 -11
  491. package/canvas-dist/assets/index-BVvhMmjs.js +0 -11
  492. package/canvas-dist/assets/index-BY92Mj5g.js +0 -572
  493. package/canvas-dist/assets/index-CV7palC3.js +0 -572
  494. package/canvas-dist/assets/index-D9bmQGsB.js +0 -11
  495. package/canvas-dist/assets/index-DDIKkGv8.js +0 -592
  496. package/canvas-dist/assets/index-Dyo0NkPb.js +0 -574
  497. package/canvas-dist/assets/index-iQWajCow.js +0 -572
  498. package/canvas-dist/assets/index-m68YlAMU.js +0 -11
  499. package/canvas-dist/assets/index-mEoP57az.js +0 -11
  500. package/canvas-dist/assets/infoDiagram-HS3SLOUP--9BirqgJ.js +0 -2
  501. package/canvas-dist/assets/infoDiagram-HS3SLOUP-CSJVED2y.js +0 -2
  502. package/canvas-dist/assets/infoDiagram-HS3SLOUP-D68HIb2t.js +0 -2
  503. package/canvas-dist/assets/infoDiagram-HS3SLOUP-DK2VLGGz.js +0 -2
  504. package/canvas-dist/assets/infoDiagram-HS3SLOUP-PaFhn4yD.js +0 -2
  505. package/canvas-dist/assets/infoDiagram-HS3SLOUP-zLNG47sU.js +0 -2
  506. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-Bue2dR2X.js +0 -139
  507. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-CrgZfpdU.js +0 -139
  508. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-DUxWmkkC.js +0 -139
  509. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-OTFkv4pd.js +0 -139
  510. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-eK2_Zuu3.js +0 -139
  511. package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-uds5Tz8D.js +0 -139
  512. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BETdiI7I.js +0 -89
  513. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BdVh7KdN.js +0 -89
  514. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-Cxl8UM9S.js +0 -89
  515. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-DVPlx3I2.js +0 -89
  516. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-LtNWeoYB.js +0 -89
  517. package/canvas-dist/assets/kanban-definition-3W4ZIXB7-uvhEMvyE.js +0 -89
  518. package/canvas-dist/assets/layout-1OzszN14.js +0 -1
  519. package/canvas-dist/assets/layout-CJSupFcF.js +0 -1
  520. package/canvas-dist/assets/layout-DFRmxN_c.js +0 -1
  521. package/canvas-dist/assets/layout-DSu-zk7y.js +0 -1
  522. package/canvas-dist/assets/layout-TGcrvApd.js +0 -1
  523. package/canvas-dist/assets/layout-eStc8SYK.js +0 -1
  524. package/canvas-dist/assets/linear-9qlE6xa7.js +0 -1
  525. package/canvas-dist/assets/linear-CBfFWnLD.js +0 -1
  526. package/canvas-dist/assets/linear-Cv4ai8Hq.js +0 -1
  527. package/canvas-dist/assets/linear-DDzz65E6.js +0 -1
  528. package/canvas-dist/assets/linear-wbIqhwDf.js +0 -1
  529. package/canvas-dist/assets/linear-wyNKl76F.js +0 -1
  530. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-3l4YzhEM.js +0 -68
  531. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-B-KkpNlw.js +0 -68
  532. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-DHMHWgmT.js +0 -68
  533. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-Dqfyg4Z2.js +0 -68
  534. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-NeRYOzsq.js +0 -68
  535. package/canvas-dist/assets/mindmap-definition-VGOIOE7T-xyu628P9.js +0 -68
  536. package/canvas-dist/assets/pieDiagram-ADFJNKIX-BWNzVAGj.js +0 -30
  537. package/canvas-dist/assets/pieDiagram-ADFJNKIX-Bm3PXYs-.js +0 -30
  538. package/canvas-dist/assets/pieDiagram-ADFJNKIX-BvvN7VvQ.js +0 -30
  539. package/canvas-dist/assets/pieDiagram-ADFJNKIX-BwU7AN7W.js +0 -30
  540. package/canvas-dist/assets/pieDiagram-ADFJNKIX-CHgwWCaM.js +0 -30
  541. package/canvas-dist/assets/pieDiagram-ADFJNKIX-DlZc8YOh.js +0 -30
  542. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B-Zd8OFp.js +0 -7
  543. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B1CnJyxI.js +0 -7
  544. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C0Qo00b9.js +0 -7
  545. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C9bx3nEJ.js +0 -7
  546. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-UHENkiRO.js +0 -7
  547. package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-jKfurTPU.js +0 -7
  548. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BPpNNusD.js +0 -64
  549. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BwZF1NIK.js +0 -64
  550. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-CaT3Frtk.js +0 -64
  551. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-Dfoz7R_7.js +0 -64
  552. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-DsrX4TT-.js +0 -64
  553. package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-dmouSXOl.js +0 -64
  554. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BEy-A1Fu.js +0 -10
  555. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BViMBiAQ.js +0 -10
  556. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BqrM-qWN.js +0 -10
  557. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DRkRC9qB.js +0 -10
  558. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DbuzKCtn.js +0 -10
  559. package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-_aHMKbpw.js +0 -10
  560. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-B8FOaL2Q.js +0 -145
  561. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-C02NQwOB.js +0 -145
  562. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CgyHivPj.js +0 -145
  563. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CzW1WaEm.js +0 -145
  564. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-DJhHI1pe.js +0 -145
  565. package/canvas-dist/assets/sequenceDiagram-WL72ISMW-VFkpAeoG.js +0 -145
  566. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BSqFX4PJ.js +0 -1
  567. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BnXhhxkN.js +0 -1
  568. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-ClARVrvt.js +0 -1
  569. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-CuC6xesY.js +0 -1
  570. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-DcAiGjph.js +0 -1
  571. package/canvas-dist/assets/stateDiagram-FKZM4ZOC-aBg0hjTp.js +0 -1
  572. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-8fib9ftc.js +0 -1
  573. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-B-DO0ZqO.js +0 -1
  574. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-BksbsE4k.js +0 -1
  575. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-C2DJCNPK.js +0 -1
  576. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-CeA5jba6.js +0 -1
  577. package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-zsAyq0tK.js +0 -1
  578. package/canvas-dist/assets/timeline-definition-IT6M3QCI-BaHdYD2h.js +0 -61
  579. package/canvas-dist/assets/timeline-definition-IT6M3QCI-Bl2hg8IM.js +0 -61
  580. package/canvas-dist/assets/timeline-definition-IT6M3QCI-CrVwLiGm.js +0 -61
  581. package/canvas-dist/assets/timeline-definition-IT6M3QCI-DrXGRjnB.js +0 -61
  582. package/canvas-dist/assets/timeline-definition-IT6M3QCI-cYAwshf6.js +0 -61
  583. package/canvas-dist/assets/timeline-definition-IT6M3QCI-flyL0y-3.js +0 -61
  584. package/canvas-dist/assets/treemap-GDKQZRPO-C4Hg8kJ_.js +0 -162
  585. package/canvas-dist/assets/treemap-GDKQZRPO-DVY2G9qY.js +0 -162
  586. package/canvas-dist/assets/treemap-GDKQZRPO-DpLWPA1z.js +0 -162
  587. package/canvas-dist/assets/treemap-GDKQZRPO-Ds86cUVw.js +0 -162
  588. package/canvas-dist/assets/treemap-GDKQZRPO-DwmoI6tH.js +0 -162
  589. package/canvas-dist/assets/treemap-GDKQZRPO-SsGFkgVd.js +0 -162
  590. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-B9c1iLBf.js +0 -7
  591. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-BpX6MPWa.js +0 -7
  592. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CEgW_j0p.js +0 -7
  593. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CSEFGEQX.js +0 -7
  594. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CnG4XoMc.js +0 -7
  595. package/canvas-dist/assets/xychartDiagram-PRI3JC2R-Dftj3Bt3.js +0 -7
@@ -0,0 +1,42 @@
1
+ # React — Resources
2
+
3
+ ## Videos
4
+
5
+ - [React in 100 Seconds](https://www.youtube.com/watch?v=Tn6-PIqc4UM) — Fireship. Quick conceptual overview.
6
+ - [React Hooks Course](https://www.youtube.com/watch?v=6LVm2j0yTiU) — Web Dev Simplified. Deep dive on useState, useEffect, and more.
7
+ - [Complete React Course](https://www.youtube.com/watch?v=Rh3tobg7hZo) — freeCodeCamp. Full beginner track.
8
+
9
+ ## Articles and Readings
10
+
11
+ - [React Docs — Learn React](https://react.dev/learn) — Official tutorial. Start here for fundamentals.
12
+ - [A Complete Guide to useEffect](https://overreacted.io/a-complete-guide-to-useeffect/) — Dan Abramov. Canonical reference for understanding effects.
13
+
14
+ ## Books
15
+
16
+ - **React in Action** by Mark Thomas — Practical patterns and real-world examples.
17
+ - **Learning React** by Alex Banks & Eve Porcello — Clear, modern introduction.
18
+
19
+ ## Tools and Playgrounds
20
+
21
+ - [CodeSandbox](https://codesandbox.io) — Online React playground, no setup.
22
+ - [React TypeScript Cheatsheet](https://react-typescript-cheatsheet.netlify.app/) — TypeScript + React patterns.
23
+ - [React DevTools](https://react.dev/learn/react-developer-tools) — Browser extension for inspecting components and state.
24
+ - [StackBlitz](https://stackblitz.com/) — Instant full-stack React environment in the browser.
25
+
26
+ ## Podcasts
27
+
28
+ - [Syntax.fm](https://syntax.fm/) — Wes Bos & Scott Tolinski. Frequent React/web dev episodes.
29
+ - [React Podcast](https://spec.fm/podcasts/reactpodcast) — Interviews with React core team and community.
30
+ - [JS Party](https://changelog.com/jsparty) — Weekly panel show covering JavaScript and React ecosystem news.
31
+
32
+ ## Interactive and Visual
33
+
34
+ - [React Visualized (react.gg)](https://react.gg/) — Visual, animated explanations of React concepts.
35
+ - [useHooks](https://usehooks.com/) — Visual catalog of reusable React hooks with code.
36
+ - [React Lifecycle Diagram](https://projects.wojtekmaj.pl/react-lifecycle-methods-diagram/) — Interactive diagram of component lifecycle phases.
37
+
38
+ ## Courses
39
+
40
+ - [React — Official Tutorial](https://react.dev/learn/tutorial-tic-tac-toe) — Build tic-tac-toe step by step, from the React team.
41
+ - [freeCodeCamp — Front End Libraries](https://www.freecodecamp.org/learn/front-end-development-libraries/) — Free certification covering React fundamentals.
42
+ - [Epic React (Kent C. Dodds)](https://epicreact.dev/) — Comprehensive paid workshop series on React patterns.
@@ -0,0 +1,89 @@
1
+ # React Walkthrough — Learn by Doing
2
+
3
+ ## Step 1: Your First Component
4
+
5
+ Let's create a simple React component.
6
+
7
+ **Embed:** https://react.dev/learn/your-first-component
8
+
9
+ <!-- hint:code language="jsx" highlight="1,3" -->
10
+
11
+ **Task:** Write a functional component called `Greeting` that accepts a `name` prop and renders "Hello, {name}!".
12
+
13
+ **Question:** What do you think happens when you pass a prop that the component doesn't use? Would it cause an error?
14
+
15
+ **Checkpoint:** The user has a working Greeting component and understands that unused props are simply ignored.
16
+
17
+ ---
18
+
19
+ ## Step 2: Adding State — Counter
20
+
21
+ Now let's make something interactive with `useState`.
22
+
23
+ **Embed:** https://react.dev/reference/react/useState
24
+
25
+ <!-- hint:card type="concept" title="useState triggers re-renders — setState causes React to re-run your component" -->
26
+
27
+ **Task:** Create a `Counter` component with a number state that starts at 0. Add a button that increments it when clicked.
28
+
29
+ **Question:** When you click the button, what actually triggers the number on screen to change? Trace the flow from click to DOM update in your mind.
30
+
31
+ **Checkpoint:** The user has a working counter and can explain that `setCount` triggers a re-render with the new value.
32
+
33
+ ---
34
+
35
+ ## Step 3: Counter Refinement
36
+
37
+ Let's extend the counter.
38
+
39
+ **Task:** Add a second button that decrements the count. Add a "Reset" button that sets it back to 0. Prevent the count from going below 0.
40
+
41
+ **Question:** Why might you choose to clamp the value inside the click handler rather than in the render?
42
+
43
+ **Checkpoint:** The user has increment, decrement, and reset, and understands validation in handlers.
44
+
45
+ ---
46
+
47
+ ## Step 4: useEffect Introduction
48
+
49
+ **Embed:** https://react.dev/reference/react/useEffect
50
+
51
+ <!-- hint:diagram mermaid-type="flowchart" topic="React render cycle: render → commit → effect" -->
52
+
53
+ **Task:** Use `useEffect` to update the browser tab title to show the current count (e.g., "Count: 3").
54
+
55
+ **Question:** What happens if you omit the dependency array from `useEffect`? What if you use an empty array `[]`?
56
+
57
+ **Checkpoint:** The user understands dependency arrays — empty = run once, omitted = run every render.
58
+
59
+ ---
60
+
61
+ ## Step 5: Conditional Rendering
62
+
63
+ **Task:** In your counter, show "Count is zero" when the count is 0, and the normal count display otherwise. Maybe add a celebratory message when count reaches 10.
64
+
65
+ **Question:** When would you use `&&` vs a ternary for conditional rendering? What are the tradeoffs?
66
+
67
+ **Checkpoint:** The user can use both patterns and explain when each makes sense.
68
+
69
+ ---
70
+
71
+ ## Step 6: Todo List — Adding Items
72
+
73
+ **Task:** Build the start of a todo list. Use `useState` with an array of items. Add an input and a button to append a new todo. Render the list with `map`.
74
+
75
+ **Question:** Why is it important to give each list item a stable `key`? What could go wrong if you use the array index as the key when items can be reordered or deleted?
76
+
77
+ **Checkpoint:** The user has a list with keys and understands key stability.
78
+
79
+ ---
80
+
81
+ ## Step 7: Todo List — Toggling and Filtering
82
+
83
+ <!-- hint:celebrate -->
84
+
85
+ **Task:** Add a checkbox to each todo to mark it complete (strikethrough completed items). Add a filter: "All", "Active", "Completed". Use conditional rendering and `filter()`.
86
+
87
+ **Question:** Where should the filtered list be computed — in state, or derived at render time? What's the difference?
88
+
89
+ **Checkpoint:** The user understands derived state vs stored state — filters are typically derived.
@@ -0,0 +1,112 @@
1
+ # React Fundamentals — Interactive Workshop Scenarios
2
+ # Build components with useState, lists, and useEffect.
3
+
4
+ scenarios:
5
+ - id: counter-component
6
+ title: "Build a Counter with useState"
7
+ difficulty: beginner
8
+ xp: 25
9
+ setup:
10
+ - "mkdir -p counter && cd counter && npm init -y && npm install react react-dom"
11
+ files:
12
+ - name: Counter.jsx
13
+ content: |
14
+ import React from "react";
15
+
16
+ export default function Counter() {
17
+ return (
18
+ <div>
19
+ <p>Count: 0</p>
20
+ <button>Increment</button>
21
+ </div>
22
+ );
23
+ }
24
+ language: javascript
25
+ readonly: false
26
+ task: "Add state for the count using useState. Initialize it to 0. Make the Increment button update the count when clicked. Display the current count in the paragraph."
27
+ validations:
28
+ - label: "Counter uses useState and increments"
29
+ check: file-changed
30
+ pattern: "useState|setCount|onClick"
31
+ hints:
32
+ - "Import useState: import { useState } from 'react';"
33
+ - "Add state: const [count, setCount] = useState(0);"
34
+ - "The button needs onClick={() => setCount(count + 1)} and the paragraph should show {count}."
35
+ agent_prompts:
36
+ on_start: "Right now the count is hardcoded as 0. What would need to change for the number to update when the user clicks?"
37
+
38
+ - id: todo-list
39
+ title: "Build a Todo List with State Management"
40
+ difficulty: intermediate
41
+ xp: 35
42
+ setup:
43
+ - "mkdir -p todo-list && cd todo-list && npm init -y && npm install react react-dom"
44
+ files:
45
+ - name: TodoApp.jsx
46
+ content: |
47
+ import React, { useState } from "react";
48
+
49
+ export default function TodoApp() {
50
+ const [todos, setTodos] = useState([]);
51
+ const [input, setInput] = useState("");
52
+
53
+ return (
54
+ <div>
55
+ <input
56
+ value={input}
57
+ onChange={(e) => setInput(e.target.value)}
58
+ placeholder="Add a todo"
59
+ />
60
+ <button>Add</button>
61
+ <ul>
62
+ {/* Todo items will go here */}
63
+ </ul>
64
+ </div>
65
+ );
66
+ }
67
+ language: javascript
68
+ readonly: false
69
+ task: "Implement add (append new todo on Add click), remove (delete a todo by id or index), and toggle (mark todo complete/incomplete). Each todo should have id, text, and done. Display todos with checkboxes and a way to remove each."
70
+ validations:
71
+ - label: "Todo add, remove, and toggle implemented"
72
+ check: file-changed
73
+ pattern: "setTodos|add|toggle|remove"
74
+ hints:
75
+ - "Use a unique id for each todo — Date.now() or crypto.randomUUID() works."
76
+ - "To add: setTodos([...todos, { id, text: input, done: false }]) then clear input."
77
+ - "To toggle: map over todos and flip done for the matching id. To remove: filter out by id."
78
+ agent_prompts:
79
+ on_start: "You have an array of todos and an input. What happens when the user clicks Add? What shape should each todo item have?"
80
+
81
+ - id: api-fetch
82
+ title: "Fetch Data with useEffect"
83
+ difficulty: intermediate
84
+ xp: 35
85
+ setup:
86
+ - "mkdir -p api-fetch && cd api-fetch && npm init -y && npm install react react-dom"
87
+ files:
88
+ - name: UserList.jsx
89
+ content: |
90
+ import React, { useState, useEffect } from "react";
91
+
92
+ export default function UserList() {
93
+ return (
94
+ <div>
95
+ <h2>Users</h2>
96
+ <p>Loading...</p>
97
+ </div>
98
+ );
99
+ }
100
+ language: javascript
101
+ readonly: false
102
+ task: "Fetch users from https://jsonplaceholder.typicode.com/users using useEffect. Store them in state. Show a loading state while fetching, an error message if the request fails, and render the list of user names when successful."
103
+ validations:
104
+ - label: "useEffect fetch with loading and error states"
105
+ check: file-changed
106
+ pattern: "useEffect|fetch|loading|error"
107
+ hints:
108
+ - "useEffect(() => { fetch(url).then(...) }, []) — empty deps = run once on mount."
109
+ - "Use state for users, loading, and error. Set loading true before fetch, false after."
110
+ - "fetch().then(res => res.json()).then(data => setUsers(data)).catch(err => setError(err.message))."
111
+ agent_prompts:
112
+ on_start: "The data comes from a server. When does that request need to run? What should the UI show before the data arrives?"
@@ -0,0 +1,141 @@
1
+ # React Native — Cross-Platform Mobile from a Web Mindset
2
+
3
+ <!-- hint:slides topic="React Native architecture: bridge vs new architecture, core components vs web, platform differences, and navigation" slides="5" -->
4
+
5
+ ## What is React Native?
6
+
7
+ React Native lets you build native mobile apps (iOS and Android) using JavaScript and React. You write components; RN renders them as native views (not web views).
8
+
9
+ ## Core Components
10
+
11
+ React Native uses different primitives than the web:
12
+
13
+ | Component | Purpose | Web Analogy |
14
+ |-----------|---------|-------------|
15
+ | `View` | Container, layout | `<div>` |
16
+ | `Text` | Display text | `<p>`, `<span>` |
17
+ | `ScrollView` | Scrollable container | Overflow scroll |
18
+ | `FlatList` | Virtualized list | Virtual list |
19
+ | `Image` | Images | `<img>` |
20
+ | `TextInput` | User input | `<input>` |
21
+ | `TouchableOpacity` | Pressable area | `<button>` |
22
+
23
+ **Rule:** All text must be inside `<Text>`. You cannot put text directly in `<View>`.
24
+
25
+ ```jsx
26
+ <View>
27
+ <Text>Hello, world!</Text>
28
+ </View>
29
+ ```
30
+
31
+ ## StyleSheet
32
+
33
+ Use `StyleSheet.create()` for styles. Properties are camelCase; no CSS classes:
34
+
35
+ ```jsx
36
+ const styles = StyleSheet.create({
37
+ container: {
38
+ flex: 1,
39
+ padding: 16,
40
+ backgroundColor: '#fff',
41
+ },
42
+ title: {
43
+ fontSize: 24,
44
+ fontWeight: 'bold',
45
+ },
46
+ });
47
+ ```
48
+
49
+ Flexbox is the default layout. Use `flex: 1` to fill space. `flexDirection` defaults to `column` (not `row`).
50
+
51
+ ## FlatList
52
+
53
+ For long lists, use `FlatList` (virtualized) instead of mapping over an array:
54
+
55
+ ```jsx
56
+ <FlatList
57
+ data={items}
58
+ keyExtractor={(item) => item.id}
59
+ renderItem={({ item }) => <ItemRow item={item} />}
60
+ />
61
+ ```
62
+
63
+ `FlatList` only renders visible items + buffer — essential for performance.
64
+
65
+ ## Navigation (React Navigation)
66
+
67
+ React Navigation is the standard for screen navigation:
68
+
69
+ ```jsx
70
+ import { NavigationContainer } from '@react-navigation/native';
71
+ import { createNativeStackNavigator } from '@react-navigation/native-stack';
72
+
73
+ const Stack = createNativeStackNavigator();
74
+
75
+ function App() {
76
+ return (
77
+ <NavigationContainer>
78
+ <Stack.Navigator>
79
+ <Stack.Screen name="Home" component={HomeScreen} />
80
+ <Stack.Screen name="Details" component={DetailsScreen} />
81
+ </Stack.Navigator>
82
+ </NavigationContainer>
83
+ );
84
+ }
85
+ ```
86
+
87
+ Navigate with `navigation.navigate('Details', { id: 1 })`. Access params via `route.params`.
88
+
89
+ ## Platform Differences
90
+
91
+ Use `Platform.OS` or `Platform.select()`:
92
+
93
+ ```jsx
94
+ import { Platform } from 'react-native';
95
+
96
+ const padding = Platform.select({ ios: 20, android: 16 });
97
+ // Or: Platform.OS === 'ios' ? 20 : 16
98
+ ```
99
+
100
+ Some components behave differently (e.g., `TextInput`, shadows). Test on both platforms.
101
+
102
+ ## Expo vs Bare
103
+
104
+ | | Expo | Bare (React Native CLI) |
105
+ |---|-----|------------------------|
106
+ | Setup | Fast, no Xcode/Android Studio needed to start | Full native setup |
107
+ | Native modules | Limited to Expo SDK + config plugins | Full access |
108
+ | Build | EAS Build (cloud) or local | Xcode, Android Studio |
109
+ | Use case | Prototypes, most apps | Heavy native customization |
110
+
111
+ ## Architecture: How It Works
112
+
113
+ React Native bridges JavaScript and native code:
114
+
115
+ ```mermaid
116
+ flowchart LR
117
+ subgraph JS
118
+ A[JS Thread]
119
+ end
120
+ subgraph Bridge
121
+ B[Bridge]
122
+ end
123
+ subgraph Native
124
+ C[Native Thread]
125
+ end
126
+ A <-->|Serialized messages| B
127
+ B <-->|Native calls| C
128
+ ```
129
+
130
+ - **JS Thread:** Runs your React code, handles logic
131
+ - **Bridge:** Serializes commands (e.g., "create View", "set style")
132
+ - **Native Thread:** Renders actual UI, handles touch events
133
+
134
+ The bridge can be a bottleneck. New Architecture (Fabric, TurboModules) reduces this.
135
+
136
+ ## Common Gotchas
137
+
138
+ - **No div/span:** Use `View` and `Text` only
139
+ - **No className:** Use `style` prop with StyleSheet
140
+ - **Pixel density:** Use `Dimensions.get('window')` or layout APIs for responsive sizing
141
+ - **Keyboard:** Use `KeyboardAvoidingView` for forms
@@ -0,0 +1,79 @@
1
+ # React Native Exercises
2
+
3
+ ## Exercise 1: Profile Card
4
+
5
+ **Task:** Create a `ProfileCard` component with a circular avatar placeholder (View with borderRadius), name, and a short bio. Use StyleSheet and Flexbox for layout.
6
+
7
+ **Validation:**
8
+ - [ ] Card has consistent padding and spacing
9
+ - [ ] Avatar is circular (width/height equal, borderRadius half of that)
10
+ - [ ] Layout works in portrait orientation
11
+
12
+ **Hints:**
13
+ 1. `borderRadius: 50` with equal width/height makes a circle
14
+ 2. Use `alignItems: 'center'` for centered content
15
+ 3. `Image` with a URI or a colored View for avatar placeholder
16
+
17
+ ---
18
+
19
+ ## Exercise 2: Form with TextInput
20
+
21
+ **Task:** Create a simple form: name and email inputs, plus a submit button. Use controlled components (state drives input values). Log the values on submit.
22
+
23
+ **Validation:**
24
+ - [ ] Inputs are controlled (value + onChange)
25
+ - [ ] Submit logs the current values
26
+ - [ ] Keyboard doesn't obscure inputs (use KeyboardAvoidingView)
27
+
28
+ **Hints:**
29
+ 1. `TextInput` uses `value` and `onChangeText`
30
+ 2. `KeyboardAvoidingView` with `behavior="padding"` (iOS) or `"height"` (Android)
31
+ 3. Wrap in `ScrollView` if content is tall
32
+
33
+ ---
34
+
35
+ ## Exercise 3: Searchable List
36
+
37
+ **Task:** Create a FlatList of 20+ items. Add a TextInput above it for search. Filter the list as the user types (case-insensitive). Use `useMemo` or a derived array for the filtered data.
38
+
39
+ **Validation:**
40
+ - [ ] Typing filters the list in real time
41
+ - [ ] FlatList only receives filtered data
42
+ - [ ] No lag when list is large
43
+
44
+ **Hints:**
45
+ 1. Store search term in state, derive filtered list
46
+ 2. `items.filter(i => i.name.toLowerCase().includes(search.toLowerCase()))`
47
+ 3. Consider `useMemo` if filtering is expensive
48
+
49
+ ---
50
+
51
+ ## Exercise 4: Tab Navigator
52
+
53
+ **Task:** Add a bottom tab navigator with 3 tabs (e.g., Home, Search, Profile). Each tab shows a simple screen with different content. Use `createBottomTabNavigator`.
54
+
55
+ **Validation:**
56
+ - [ ] Tabs switch correctly
57
+ - [ ] Each tab has distinct content
58
+ - [ ] Tab bar is visible and usable
59
+
60
+ **Hints:**
61
+ 1. `@react-navigation/bottom-tabs` for tab navigator
62
+ 2. Nest inside your existing NavigationContainer
63
+ 3. Optionally add icons with a vector icon library
64
+
65
+ ---
66
+
67
+ ## Exercise 5: Pull-to-Refresh
68
+
69
+ **Task:** Add pull-to-refresh to a FlatList. When pulled, show a loading indicator and "refresh" the list (e.g., shuffle or refetch simulated data). Use `refreshControl` with `RefreshControl`.
70
+
71
+ **Validation:**
72
+ - [ ] Pulling triggers refresh
73
+ - [ ] Loading state is visible during refresh
74
+ - [ ] List updates after refresh completes
75
+
76
+ **Hints:**
77
+ 1. `RefreshControl` from `react-native` with `refreshing` and `onRefresh`
78
+ 2. Use `useState` for `refreshing`; set true on pull, false when done
79
+ 3. Simulate async with `setTimeout`
@@ -0,0 +1,42 @@
1
+ slug: react-native-fundamentals
2
+ title: "React Native — Cross-Platform Mobile from a Web Mindset"
3
+ version: 1.0.0
4
+ description: "Build iOS and Android apps with React — components, navigation, and platform differences."
5
+ category: frameworks
6
+ tags: [react-native, mobile, ios, android, cross-platform, typescript]
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: 20
19
+ guided: 60
20
+
21
+ prerequisites: [react-fundamentals]
22
+ related: [typescript-fundamentals]
23
+
24
+ triggers:
25
+ - "How do I build a mobile app with React Native?"
26
+ - "What's the difference between React and React Native?"
27
+ - "How do I navigate between screens in React Native?"
28
+ - "How does React Native work under the hood?"
29
+
30
+ visuals:
31
+ diagrams: [diagram-mermaid, diagram-architecture]
32
+ quiz-types: [quiz-drag-order, quiz-timed-choice]
33
+ playground: javascript
34
+ slides: true
35
+
36
+ sources:
37
+ - url: "https://reactnative.dev"
38
+ label: "React Native Docs"
39
+ type: docs
40
+ - url: "https://docs.expo.dev"
41
+ label: "Expo Docs"
42
+ type: docs
@@ -0,0 +1,60 @@
1
+ # React Native Quick Reference
2
+
3
+ ## Core Components
4
+
5
+ | Component | Use For |
6
+ |-----------|---------|
7
+ | `View` | Containers, layout |
8
+ | `Text` | All text content |
9
+ | `ScrollView` | Scrollable content (finite) |
10
+ | `FlatList` | Long lists (virtualized) |
11
+ | `Image` | Images (source: `{uri}` or `require()`) |
12
+ | `TextInput` | User input |
13
+ | `TouchableOpacity` | Pressable with opacity feedback |
14
+
15
+ ## StyleSheet
16
+
17
+ ```jsx
18
+ const styles = StyleSheet.create({
19
+ box: { flex: 1, padding: 16 },
20
+ });
21
+ <View style={styles.box} />
22
+ ```
23
+
24
+ - Flexbox default: `flexDirection: 'column'`
25
+ - `flex: 1` fills available space
26
+ - No units for numbers (density-independent pixels)
27
+
28
+ ## Navigation
29
+
30
+ | Method | Purpose |
31
+ |--------|---------|
32
+ | `navigation.navigate('Screen', { id: 1 })` | Go to screen with params |
33
+ | `navigation.goBack()` | Go back |
34
+ | `route.params` | Access params in destination |
35
+
36
+ ## Platform
37
+
38
+ ```jsx
39
+ import { Platform } from 'react-native';
40
+ Platform.OS // 'ios' | 'android'
41
+ Platform.select({ ios: 20, android: 16 })
42
+ ```
43
+
44
+ ## FlatList Props
45
+
46
+ | Prop | Purpose |
47
+ |------|---------|
48
+ | `data` | Array of items |
49
+ | `keyExtractor` | (item) => item.id |
50
+ | `renderItem` | ({ item }) => <Row item={item} /> |
51
+ | `ListHeaderComponent` | Header content |
52
+ | `refreshControl` | Pull-to-refresh |
53
+
54
+ ## Decision: ScrollView vs FlatList
55
+
56
+ | Use ScrollView when | Use FlatList when |
57
+ |---------------------|-------------------|
58
+ | Few items (< 20) | Many items (20+) |
59
+ | Content is mixed (not just list) | Homogeneous list |
60
+ | Need nested scroll (careful) | Standard list UI |
@@ -0,0 +1,61 @@
1
+ # React Native Quiz
2
+
3
+ ## Question 1
4
+
5
+ Can you put a string directly inside a `View` component?
6
+
7
+ A) Yes, it renders as text
8
+ B) No, all text must be inside a `Text` component
9
+ C) Yes on iOS, no on Android
10
+ D) Only if you use a special prop
11
+
12
+ <!-- ANSWER: B -->
13
+ <!-- EXPLANATION: React Native requires all text to be wrapped in a Text component. Putting a string directly in a View will throw an error. This is different from the web where text can be direct children of divs. -->
14
+
15
+ ## Question 2
16
+
17
+ What is the main performance advantage of FlatList over ScrollView with a mapped array?
18
+
19
+ A) FlatList uses less memory
20
+ B) FlatList only renders visible items (virtualization)
21
+ C) FlatList has built-in caching
22
+ D) ScrollView is slower on Android only
23
+
24
+ <!-- ANSWER: B -->
25
+ <!-- EXPLANATION: FlatList virtualizes the list — it only mounts components for items near the viewport, plus a small buffer. ScrollView with map() renders every item at once, which can cause performance issues with hundreds of items. -->
26
+
27
+ ## Question 3
28
+
29
+ How do you pass data when navigating to another screen with React Navigation?
30
+
31
+ A) Through global state only
32
+ B) As the second argument to navigate: `navigate('Screen', { id: 1 })`
33
+ C) Through a shared context
34
+ D) By mutating the navigator's state
35
+
36
+ <!-- ANSWER: B -->
37
+ <!-- EXPLANATION: navigation.navigate('ScreenName', { param1: value1 }) passes params to the destination screen. The destination receives them via route.params. -->
38
+
39
+ ## Question 4
40
+
41
+ What does the React Native Bridge do?
42
+
43
+ A) Connects to a remote server
44
+ B) Serializes messages between the JS thread and native thread
45
+ C) Manages React state
46
+ D) Handles touch events only
47
+
48
+ <!-- ANSWER: B -->
49
+ <!-- EXPLANATION: The Bridge is the communication layer between the JavaScript thread (where your React code runs) and the native thread (where UI is rendered). Commands are serialized and sent across it. -->
50
+
51
+ ## Question 5
52
+
53
+ When would you choose Expo over a bare React Native project?
54
+
55
+ A) When you need maximum native customization
56
+ B) When you want fast setup and don't need custom native code
57
+ C) Only for iOS
58
+ D) Expo is deprecated
59
+
60
+ <!-- ANSWER: B -->
61
+ <!-- EXPLANATION: Expo offers fast setup, over-the-air updates, and a managed workflow. Choose it when you don't need custom native modules. Use bare RN when you need full native control. -->
@@ -0,0 +1,24 @@
1
+ # React Native — Resources
2
+
3
+ ## Videos
4
+
5
+ - [React Native in 100 Seconds](https://www.youtube.com/watch?v=gvkqT_Uoahw) — Fireship. Quick overview.
6
+ - [React Native Tutorial](https://www.youtube.com/watch?v=obH0Ze_Rosc) — freeCodeCamp. Full beginner course.
7
+ - [Expo Crash Course](https://www.youtube.com/watch?v=5QlE6o-iYcE) — Traversy Media. Getting started with Expo.
8
+
9
+ ## Articles and Readings
10
+
11
+ - [React Native Docs](https://reactnative.dev/docs/getting-started) — Official docs. Start here.
12
+ - [React Navigation Docs](https://reactnavigation.org/docs/getting-started) — Navigation patterns and setup.
13
+ - [Expo Documentation](https://docs.expo.dev) — Expo-specific guides and APIs.
14
+
15
+ ## Books
16
+
17
+ - **React Native in Action** by Nader Dabit — Comprehensive RN coverage with practical projects.
18
+ - **Fullstack React Native** by Devin Abbott et al. — From basics to advanced patterns.
19
+
20
+ ## Tools and Playgrounds
21
+
22
+ - [Expo Snack](https://snack.expo.dev) — Run RN in the browser, no local setup.
23
+ - [React Native Directory](https://reactnative.directory) — Find and evaluate libraries.
24
+ - [Flipper](https://fbflipper.com) — Debug RN apps (network, layout, logs).