@gonzih/skill-radar 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/SKILL.md +97 -0
- package/dist/data/resources.d.ts +12 -0
- package/dist/data/resources.d.ts.map +1 -0
- package/dist/data/resources.js +710 -0
- package/dist/data/resources.js.map +1 -0
- package/dist/data/trends.d.ts +17 -0
- package/dist/data/trends.d.ts.map +1 -0
- package/dist/data/trends.js +282 -0
- package/dist/data/trends.js.map +1 -0
- package/dist/db.d.ts +26 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +123 -0
- package/dist/db.js.map +1 -0
- package/dist/engine/analyzer.d.ts +28 -0
- package/dist/engine/analyzer.d.ts.map +1 -0
- package/dist/engine/analyzer.js +154 -0
- package/dist/engine/analyzer.js.map +1 -0
- package/dist/engine/planner.d.ts +33 -0
- package/dist/engine/planner.d.ts.map +1 -0
- package/dist/engine/planner.js +303 -0
- package/dist/engine/planner.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/index.d.ts +213 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +403 -0
- package/dist/tools/index.js.map +1 -0
- package/llms.txt +22 -0
- package/package.json +42 -0
|
@@ -0,0 +1,710 @@
|
|
|
1
|
+
export const LEARNING_RESOURCES = [
|
|
2
|
+
// ── LLM APIs / RAG systems ──────────────────────────────────────────────
|
|
3
|
+
{
|
|
4
|
+
skill: "LLM APIs",
|
|
5
|
+
title: "freeCodeCamp – Learn AI/ML APIs with Python",
|
|
6
|
+
type: "course",
|
|
7
|
+
url: "https://www.freecodecamp.org/news/learn-to-use-the-openai-api-with-python/",
|
|
8
|
+
estimatedHours: 4,
|
|
9
|
+
level: "beginner",
|
|
10
|
+
free: true,
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
skill: "LLM APIs",
|
|
14
|
+
title: "Hugging Face NLP Course (free audit)",
|
|
15
|
+
type: "course",
|
|
16
|
+
url: "https://huggingface.co/learn/nlp-course/chapter1/1",
|
|
17
|
+
estimatedHours: 12,
|
|
18
|
+
level: "intermediate",
|
|
19
|
+
free: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
skill: "LLM APIs",
|
|
23
|
+
title: "DeepLearning.AI – ChatGPT Prompt Engineering for Developers",
|
|
24
|
+
type: "course",
|
|
25
|
+
url: "https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/",
|
|
26
|
+
estimatedHours: 3,
|
|
27
|
+
level: "beginner",
|
|
28
|
+
free: true,
|
|
29
|
+
},
|
|
30
|
+
// ── RAG systems ─────────────────────────────────────────────────────────
|
|
31
|
+
{
|
|
32
|
+
skill: "RAG systems",
|
|
33
|
+
title: "LangChain RAG Tutorial (official docs)",
|
|
34
|
+
type: "article",
|
|
35
|
+
url: "https://python.langchain.com/docs/tutorials/rag/",
|
|
36
|
+
estimatedHours: 5,
|
|
37
|
+
level: "intermediate",
|
|
38
|
+
free: true,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
skill: "RAG systems",
|
|
42
|
+
title: "DeepLearning.AI – Building and Evaluating Advanced RAG",
|
|
43
|
+
type: "course",
|
|
44
|
+
url: "https://www.deeplearning.ai/short-courses/building-evaluating-advanced-rag/",
|
|
45
|
+
estimatedHours: 4,
|
|
46
|
+
level: "intermediate",
|
|
47
|
+
free: true,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
skill: "RAG systems",
|
|
51
|
+
title: "YouTube – RAG from Scratch (Pinecone)",
|
|
52
|
+
type: "video",
|
|
53
|
+
url: "https://www.youtube.com/watch?v=sVcwVQRHIc8",
|
|
54
|
+
estimatedHours: 2,
|
|
55
|
+
level: "beginner",
|
|
56
|
+
free: true,
|
|
57
|
+
},
|
|
58
|
+
// ── TypeScript ───────────────────────────────────────────────────────────
|
|
59
|
+
{
|
|
60
|
+
skill: "TypeScript",
|
|
61
|
+
title: "TypeScript Official Handbook",
|
|
62
|
+
type: "article",
|
|
63
|
+
url: "https://www.typescriptlang.org/docs/handbook/intro.html",
|
|
64
|
+
estimatedHours: 8,
|
|
65
|
+
level: "beginner",
|
|
66
|
+
free: true,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
skill: "TypeScript",
|
|
70
|
+
title: "freeCodeCamp – TypeScript Full Course",
|
|
71
|
+
type: "video",
|
|
72
|
+
url: "https://www.youtube.com/watch?v=30LWjhZzg50",
|
|
73
|
+
estimatedHours: 9,
|
|
74
|
+
level: "beginner",
|
|
75
|
+
free: true,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
skill: "TypeScript",
|
|
79
|
+
title: "Total TypeScript – TypeScript Beginners Tutorial (free tier)",
|
|
80
|
+
type: "course",
|
|
81
|
+
url: "https://www.totaltypescript.com/tutorials/beginners-typescript",
|
|
82
|
+
estimatedHours: 6,
|
|
83
|
+
level: "intermediate",
|
|
84
|
+
free: true,
|
|
85
|
+
},
|
|
86
|
+
// ── Kubernetes ───────────────────────────────────────────────────────────
|
|
87
|
+
{
|
|
88
|
+
skill: "cloud-native (Kubernetes)",
|
|
89
|
+
title: "Kubernetes Official Interactive Tutorial",
|
|
90
|
+
type: "course",
|
|
91
|
+
url: "https://kubernetes.io/docs/tutorials/kubernetes-basics/",
|
|
92
|
+
estimatedHours: 4,
|
|
93
|
+
level: "beginner",
|
|
94
|
+
free: true,
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
skill: "cloud-native (Kubernetes)",
|
|
98
|
+
title: "YouTube – Kubernetes Crash Course (TechWorld with Nana)",
|
|
99
|
+
type: "video",
|
|
100
|
+
url: "https://www.youtube.com/watch?v=s_o8dwzRlu4",
|
|
101
|
+
estimatedHours: 4,
|
|
102
|
+
level: "beginner",
|
|
103
|
+
free: true,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
skill: "cloud-native (Kubernetes)",
|
|
107
|
+
title: "edX – Introduction to Kubernetes (LFS158 – free audit)",
|
|
108
|
+
type: "course",
|
|
109
|
+
url: "https://www.edx.org/learn/kubernetes/the-linux-foundation-introduction-to-kubernetes",
|
|
110
|
+
estimatedHours: 14,
|
|
111
|
+
level: "intermediate",
|
|
112
|
+
free: true,
|
|
113
|
+
},
|
|
114
|
+
// ── Rust ─────────────────────────────────────────────────────────────────
|
|
115
|
+
{
|
|
116
|
+
skill: "Rust",
|
|
117
|
+
title: "The Rust Programming Language (official book)",
|
|
118
|
+
type: "book",
|
|
119
|
+
url: "https://doc.rust-lang.org/book/",
|
|
120
|
+
estimatedHours: 20,
|
|
121
|
+
level: "beginner",
|
|
122
|
+
free: true,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
skill: "Rust",
|
|
126
|
+
title: "Rustlings – Small exercises to learn Rust",
|
|
127
|
+
type: "project",
|
|
128
|
+
url: "https://github.com/rust-lang/rustlings",
|
|
129
|
+
estimatedHours: 10,
|
|
130
|
+
level: "beginner",
|
|
131
|
+
free: true,
|
|
132
|
+
},
|
|
133
|
+
// ── Go ───────────────────────────────────────────────────────────────────
|
|
134
|
+
{
|
|
135
|
+
skill: "Go",
|
|
136
|
+
title: "A Tour of Go (official)",
|
|
137
|
+
type: "course",
|
|
138
|
+
url: "https://go.dev/tour/welcome/1",
|
|
139
|
+
estimatedHours: 6,
|
|
140
|
+
level: "beginner",
|
|
141
|
+
free: true,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
skill: "Go",
|
|
145
|
+
title: "freeCodeCamp – Go Programming – Golang Course for Beginners",
|
|
146
|
+
type: "video",
|
|
147
|
+
url: "https://www.youtube.com/watch?v=un6ZyFkqFKo",
|
|
148
|
+
estimatedHours: 7,
|
|
149
|
+
level: "beginner",
|
|
150
|
+
free: true,
|
|
151
|
+
},
|
|
152
|
+
// ── SQL mastery ──────────────────────────────────────────────────────────
|
|
153
|
+
{
|
|
154
|
+
skill: "SQL mastery",
|
|
155
|
+
title: "SQLZoo – Interactive SQL Tutorial",
|
|
156
|
+
type: "course",
|
|
157
|
+
url: "https://sqlzoo.net/wiki/SQL_Tutorial",
|
|
158
|
+
estimatedHours: 8,
|
|
159
|
+
level: "beginner",
|
|
160
|
+
free: true,
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
skill: "SQL mastery",
|
|
164
|
+
title: "Khan Academy – Intro to SQL",
|
|
165
|
+
type: "course",
|
|
166
|
+
url: "https://www.khanacademy.org/computing/computer-programming/sql",
|
|
167
|
+
estimatedHours: 5,
|
|
168
|
+
level: "beginner",
|
|
169
|
+
free: true,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
skill: "SQL mastery",
|
|
173
|
+
title: "Mode Analytics SQL Tutorial",
|
|
174
|
+
type: "article",
|
|
175
|
+
url: "https://mode.com/sql-tutorial/",
|
|
176
|
+
estimatedHours: 6,
|
|
177
|
+
level: "intermediate",
|
|
178
|
+
free: true,
|
|
179
|
+
},
|
|
180
|
+
// ── Python basics ────────────────────────────────────────────────────────
|
|
181
|
+
{
|
|
182
|
+
skill: "Python (pandas/numpy/scikit-learn)",
|
|
183
|
+
title: "Python.org – Official Python Tutorial",
|
|
184
|
+
type: "article",
|
|
185
|
+
url: "https://docs.python.org/3/tutorial/",
|
|
186
|
+
estimatedHours: 10,
|
|
187
|
+
level: "beginner",
|
|
188
|
+
free: true,
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
skill: "Python (pandas/numpy/scikit-learn)",
|
|
192
|
+
title: "freeCodeCamp – Python for Everybody Full Course",
|
|
193
|
+
type: "video",
|
|
194
|
+
url: "https://www.youtube.com/watch?v=8DvywoWv6fI",
|
|
195
|
+
estimatedHours: 14,
|
|
196
|
+
level: "beginner",
|
|
197
|
+
free: true,
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
skill: "Python (pandas/numpy/scikit-learn)",
|
|
201
|
+
title: "Kaggle – Python (free micro-course)",
|
|
202
|
+
type: "course",
|
|
203
|
+
url: "https://www.kaggle.com/learn/python",
|
|
204
|
+
estimatedHours: 5,
|
|
205
|
+
level: "beginner",
|
|
206
|
+
free: true,
|
|
207
|
+
},
|
|
208
|
+
// ── A/B testing ──────────────────────────────────────────────────────────
|
|
209
|
+
{
|
|
210
|
+
skill: "A/B testing",
|
|
211
|
+
title: "Google Analytics Academy – A/B Testing",
|
|
212
|
+
type: "course",
|
|
213
|
+
url: "https://analytics.google.com/analytics/academy/",
|
|
214
|
+
estimatedHours: 3,
|
|
215
|
+
level: "beginner",
|
|
216
|
+
free: true,
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
skill: "A/B testing",
|
|
220
|
+
title: "Evan Miller – A/B Testing Resources",
|
|
221
|
+
type: "article",
|
|
222
|
+
url: "https://www.evanmiller.org/ab-testing/",
|
|
223
|
+
estimatedHours: 2,
|
|
224
|
+
level: "intermediate",
|
|
225
|
+
free: true,
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
skill: "A/B testing rigor",
|
|
229
|
+
title: "Coursera – A/B Testing by Google (free audit)",
|
|
230
|
+
type: "course",
|
|
231
|
+
url: "https://www.coursera.org/learn/ab-testing?enroll=audit",
|
|
232
|
+
estimatedHours: 12,
|
|
233
|
+
level: "intermediate",
|
|
234
|
+
free: true,
|
|
235
|
+
},
|
|
236
|
+
// ── Data storytelling ────────────────────────────────────────────────────
|
|
237
|
+
{
|
|
238
|
+
skill: "data storytelling",
|
|
239
|
+
title: "Storytelling with Data – free blog and resources",
|
|
240
|
+
type: "article",
|
|
241
|
+
url: "https://www.storytellingwithdata.com/blog",
|
|
242
|
+
estimatedHours: 4,
|
|
243
|
+
level: "beginner",
|
|
244
|
+
free: true,
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
skill: "data storytelling",
|
|
248
|
+
title: "YouTube – Data Storytelling Crash Course",
|
|
249
|
+
type: "video",
|
|
250
|
+
url: "https://www.youtube.com/watch?v=r5_34YnCmMY",
|
|
251
|
+
estimatedHours: 2,
|
|
252
|
+
level: "beginner",
|
|
253
|
+
free: true,
|
|
254
|
+
},
|
|
255
|
+
// ── Figma / AI-assisted design ───────────────────────────────────────────
|
|
256
|
+
{
|
|
257
|
+
skill: "AI-assisted design (Figma AI)",
|
|
258
|
+
title: "Figma Official Learn – Getting Started",
|
|
259
|
+
type: "course",
|
|
260
|
+
url: "https://www.figma.com/resources/learn-design/",
|
|
261
|
+
estimatedHours: 6,
|
|
262
|
+
level: "beginner",
|
|
263
|
+
free: true,
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
skill: "AI-assisted design (Figma AI)",
|
|
267
|
+
title: "YouTube – Figma AI Features Full Tutorial",
|
|
268
|
+
type: "video",
|
|
269
|
+
url: "https://www.youtube.com/watch?v=_FcyMEcKhS4",
|
|
270
|
+
estimatedHours: 2,
|
|
271
|
+
level: "beginner",
|
|
272
|
+
free: true,
|
|
273
|
+
},
|
|
274
|
+
// ── OKR frameworks ───────────────────────────────────────────────────────
|
|
275
|
+
{
|
|
276
|
+
skill: "OKR frameworks",
|
|
277
|
+
title: "What Matters – Free OKR Resources and Examples",
|
|
278
|
+
type: "article",
|
|
279
|
+
url: "https://www.whatmatters.com/resources",
|
|
280
|
+
estimatedHours: 3,
|
|
281
|
+
level: "beginner",
|
|
282
|
+
free: true,
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
skill: "OKR frameworks",
|
|
286
|
+
title: "Google re:Work – Guide: Set Goals with OKRs",
|
|
287
|
+
type: "article",
|
|
288
|
+
url: "https://rework.withgoogle.com/guides/set-goals-with-okrs/steps/introduction/",
|
|
289
|
+
estimatedHours: 2,
|
|
290
|
+
level: "beginner",
|
|
291
|
+
free: true,
|
|
292
|
+
},
|
|
293
|
+
// ── GDPR / Privacy Law ───────────────────────────────────────────────────
|
|
294
|
+
{
|
|
295
|
+
skill: "data privacy law (GDPR/CCPA)",
|
|
296
|
+
title: "IAPP – Introduction to Privacy (free resources)",
|
|
297
|
+
type: "article",
|
|
298
|
+
url: "https://iapp.org/resources/article/introduction-to-privacy/",
|
|
299
|
+
estimatedHours: 4,
|
|
300
|
+
level: "beginner",
|
|
301
|
+
free: true,
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
skill: "data privacy law (GDPR/CCPA)",
|
|
305
|
+
title: "Coursera – Data Privacy Fundamentals (free audit)",
|
|
306
|
+
type: "course",
|
|
307
|
+
url: "https://www.coursera.org/learn/northeastern-data-privacy?enroll=audit",
|
|
308
|
+
estimatedHours: 8,
|
|
309
|
+
level: "beginner",
|
|
310
|
+
free: true,
|
|
311
|
+
},
|
|
312
|
+
// ── MLOps ────────────────────────────────────────────────────────────────
|
|
313
|
+
{
|
|
314
|
+
skill: "MLOps",
|
|
315
|
+
title: "freeCodeCamp – MLOps Course for Beginners",
|
|
316
|
+
type: "video",
|
|
317
|
+
url: "https://www.youtube.com/watch?v=-dJPoLm_gtE",
|
|
318
|
+
estimatedHours: 7,
|
|
319
|
+
level: "intermediate",
|
|
320
|
+
free: true,
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
skill: "MLOps",
|
|
324
|
+
title: "Made With ML – MLOps Guide (free)",
|
|
325
|
+
type: "course",
|
|
326
|
+
url: "https://madewithml.com/",
|
|
327
|
+
estimatedHours: 20,
|
|
328
|
+
level: "intermediate",
|
|
329
|
+
free: true,
|
|
330
|
+
},
|
|
331
|
+
// ── LLM fine-tuning ──────────────────────────────────────────────────────
|
|
332
|
+
{
|
|
333
|
+
skill: "LLM fine-tuning",
|
|
334
|
+
title: "Hugging Face – Fine-tuning a Pretrained Model",
|
|
335
|
+
type: "article",
|
|
336
|
+
url: "https://huggingface.co/docs/transformers/training",
|
|
337
|
+
estimatedHours: 4,
|
|
338
|
+
level: "intermediate",
|
|
339
|
+
free: true,
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
skill: "LLM fine-tuning",
|
|
343
|
+
title: "DeepLearning.AI – Finetuning Large Language Models",
|
|
344
|
+
type: "course",
|
|
345
|
+
url: "https://www.deeplearning.ai/short-courses/finetuning-large-language-models/",
|
|
346
|
+
estimatedHours: 3,
|
|
347
|
+
level: "intermediate",
|
|
348
|
+
free: true,
|
|
349
|
+
},
|
|
350
|
+
// ── AI product strategy ──────────────────────────────────────────────────
|
|
351
|
+
{
|
|
352
|
+
skill: "AI product strategy",
|
|
353
|
+
title: "a16z – AI Product Strategy Resources",
|
|
354
|
+
type: "article",
|
|
355
|
+
url: "https://a16z.com/ai/",
|
|
356
|
+
estimatedHours: 4,
|
|
357
|
+
level: "beginner",
|
|
358
|
+
free: true,
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
skill: "AI product strategy",
|
|
362
|
+
title: "Reforge – AI for Product Managers (free content)",
|
|
363
|
+
type: "article",
|
|
364
|
+
url: "https://www.reforge.com/blog/ai-product-management",
|
|
365
|
+
estimatedHours: 3,
|
|
366
|
+
level: "intermediate",
|
|
367
|
+
free: true,
|
|
368
|
+
},
|
|
369
|
+
// ── SEO in AI era ────────────────────────────────────────────────────────
|
|
370
|
+
{
|
|
371
|
+
skill: "SEO in AI era",
|
|
372
|
+
title: "Google Search Central – SEO Starter Guide",
|
|
373
|
+
type: "article",
|
|
374
|
+
url: "https://developers.google.com/search/docs/fundamentals/seo-starter-guide",
|
|
375
|
+
estimatedHours: 3,
|
|
376
|
+
level: "beginner",
|
|
377
|
+
free: true,
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
skill: "SEO in AI era",
|
|
381
|
+
title: "Ahrefs – Free SEO Course for Beginners",
|
|
382
|
+
type: "course",
|
|
383
|
+
url: "https://ahrefs.com/academy/seo-training-course",
|
|
384
|
+
estimatedHours: 4,
|
|
385
|
+
level: "beginner",
|
|
386
|
+
free: true,
|
|
387
|
+
},
|
|
388
|
+
// ── Financial modeling ───────────────────────────────────────────────────
|
|
389
|
+
{
|
|
390
|
+
skill: "financial modeling",
|
|
391
|
+
title: "CFI – Introduction to Financial Modeling (free)",
|
|
392
|
+
type: "course",
|
|
393
|
+
url: "https://corporatefinanceinstitute.com/resources/financial-modeling/financial-modeling-guide/",
|
|
394
|
+
estimatedHours: 6,
|
|
395
|
+
level: "beginner",
|
|
396
|
+
free: true,
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
skill: "Excel/Python modeling",
|
|
400
|
+
title: "Khan Academy – Finance and Capital Markets",
|
|
401
|
+
type: "course",
|
|
402
|
+
url: "https://www.khanacademy.org/economics-finance-domain/core-finance",
|
|
403
|
+
estimatedHours: 8,
|
|
404
|
+
level: "beginner",
|
|
405
|
+
free: true,
|
|
406
|
+
},
|
|
407
|
+
// ── EHR / Clinical informatics ───────────────────────────────────────────
|
|
408
|
+
{
|
|
409
|
+
skill: "clinical informatics",
|
|
410
|
+
title: "Coursera – Health Informatics Specialization (free audit)",
|
|
411
|
+
type: "course",
|
|
412
|
+
url: "https://www.coursera.org/specializations/health-informatics?enroll=audit",
|
|
413
|
+
estimatedHours: 15,
|
|
414
|
+
level: "beginner",
|
|
415
|
+
free: true,
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
skill: "EHR systems",
|
|
419
|
+
title: "ONC – Health IT Workforce Curriculum (free)",
|
|
420
|
+
type: "course",
|
|
421
|
+
url: "https://www.healthit.gov/topic/onc-hitech-programs/workforce-development-programs",
|
|
422
|
+
estimatedHours: 8,
|
|
423
|
+
level: "beginner",
|
|
424
|
+
free: true,
|
|
425
|
+
},
|
|
426
|
+
// ── Observability ────────────────────────────────────────────────────────
|
|
427
|
+
{
|
|
428
|
+
skill: "observability",
|
|
429
|
+
title: "OpenTelemetry Documentation – Getting Started",
|
|
430
|
+
type: "article",
|
|
431
|
+
url: "https://opentelemetry.io/docs/getting-started/",
|
|
432
|
+
estimatedHours: 4,
|
|
433
|
+
level: "intermediate",
|
|
434
|
+
free: true,
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
skill: "observability",
|
|
438
|
+
title: "YouTube – Observability Engineering Crash Course",
|
|
439
|
+
type: "video",
|
|
440
|
+
url: "https://www.youtube.com/watch?v=bvVgP4tw_Hc",
|
|
441
|
+
estimatedHours: 3,
|
|
442
|
+
level: "intermediate",
|
|
443
|
+
free: true,
|
|
444
|
+
},
|
|
445
|
+
// ── Security engineering ─────────────────────────────────────────────────
|
|
446
|
+
{
|
|
447
|
+
skill: "security engineering",
|
|
448
|
+
title: "OWASP – Web Security Testing Guide (free)",
|
|
449
|
+
type: "book",
|
|
450
|
+
url: "https://owasp.org/www-project-web-security-testing-guide/",
|
|
451
|
+
estimatedHours: 10,
|
|
452
|
+
level: "intermediate",
|
|
453
|
+
free: true,
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
skill: "security engineering",
|
|
457
|
+
title: "Cybrary – Introduction to IT & Cybersecurity (free)",
|
|
458
|
+
type: "course",
|
|
459
|
+
url: "https://www.cybrary.it/course/intro-to-it-and-cybersecurity/",
|
|
460
|
+
estimatedHours: 6,
|
|
461
|
+
level: "beginner",
|
|
462
|
+
free: true,
|
|
463
|
+
},
|
|
464
|
+
// ── Accessibility (WCAG) ─────────────────────────────────────────────────
|
|
465
|
+
{
|
|
466
|
+
skill: "accessibility (WCAG)",
|
|
467
|
+
title: "W3C – Web Accessibility Initiative Tutorials",
|
|
468
|
+
type: "article",
|
|
469
|
+
url: "https://www.w3.org/WAI/tutorials/",
|
|
470
|
+
estimatedHours: 5,
|
|
471
|
+
level: "beginner",
|
|
472
|
+
free: true,
|
|
473
|
+
},
|
|
474
|
+
{
|
|
475
|
+
skill: "accessibility (WCAG)",
|
|
476
|
+
title: "freeCodeCamp – Accessibility in Web Design",
|
|
477
|
+
type: "course",
|
|
478
|
+
url: "https://www.freecodecamp.org/learn/2022/responsive-web-design/",
|
|
479
|
+
estimatedHours: 4,
|
|
480
|
+
level: "beginner",
|
|
481
|
+
free: true,
|
|
482
|
+
},
|
|
483
|
+
// ── Change management / Leadership ──────────────────────────────────────
|
|
484
|
+
{
|
|
485
|
+
skill: "change management",
|
|
486
|
+
title: "Coursera – Leading Organizational Change (free audit)",
|
|
487
|
+
type: "course",
|
|
488
|
+
url: "https://www.coursera.org/learn/leading-organizational-change?enroll=audit",
|
|
489
|
+
estimatedHours: 10,
|
|
490
|
+
level: "intermediate",
|
|
491
|
+
free: true,
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
skill: "psychological safety",
|
|
495
|
+
title: "Google re:Work – Understanding Team Effectiveness",
|
|
496
|
+
type: "article",
|
|
497
|
+
url: "https://rework.withgoogle.com/guides/understanding-team-effectiveness/steps/introduction/",
|
|
498
|
+
estimatedHours: 2,
|
|
499
|
+
level: "beginner",
|
|
500
|
+
free: true,
|
|
501
|
+
},
|
|
502
|
+
// ── AI contract review / Legal tech ─────────────────────────────────────
|
|
503
|
+
{
|
|
504
|
+
skill: "AI contract review",
|
|
505
|
+
title: "Coursera – Introduction to Legal Tech (free audit)",
|
|
506
|
+
type: "course",
|
|
507
|
+
url: "https://www.coursera.org/learn/introduction-legal-tech?enroll=audit",
|
|
508
|
+
estimatedHours: 6,
|
|
509
|
+
level: "beginner",
|
|
510
|
+
free: true,
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
skill: "legal tech tools",
|
|
514
|
+
title: "GitHub – Awesome Legal Tech Resources",
|
|
515
|
+
type: "article",
|
|
516
|
+
url: "https://github.com/topics/legal-tech",
|
|
517
|
+
estimatedHours: 2,
|
|
518
|
+
level: "beginner",
|
|
519
|
+
free: true,
|
|
520
|
+
},
|
|
521
|
+
// ── System design ────────────────────────────────────────────────────────
|
|
522
|
+
{
|
|
523
|
+
skill: "system design at scale",
|
|
524
|
+
title: "GitHub – System Design Primer",
|
|
525
|
+
type: "article",
|
|
526
|
+
url: "https://github.com/donnemartin/system-design-primer",
|
|
527
|
+
estimatedHours: 20,
|
|
528
|
+
level: "intermediate",
|
|
529
|
+
free: true,
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
skill: "system design at scale",
|
|
533
|
+
title: "YouTube – System Design Interview Crash Course",
|
|
534
|
+
type: "video",
|
|
535
|
+
url: "https://www.youtube.com/watch?v=i7twT3x5yv8",
|
|
536
|
+
estimatedHours: 3,
|
|
537
|
+
level: "intermediate",
|
|
538
|
+
free: true,
|
|
539
|
+
},
|
|
540
|
+
// ── Serverless ───────────────────────────────────────────────────────────
|
|
541
|
+
{
|
|
542
|
+
skill: "serverless",
|
|
543
|
+
title: "AWS – Serverless Land (free learning resources)",
|
|
544
|
+
type: "article",
|
|
545
|
+
url: "https://serverlessland.com/",
|
|
546
|
+
estimatedHours: 5,
|
|
547
|
+
level: "beginner",
|
|
548
|
+
free: true,
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
skill: "serverless",
|
|
552
|
+
title: "freeCodeCamp – Serverless Functions Explained",
|
|
553
|
+
type: "video",
|
|
554
|
+
url: "https://www.youtube.com/watch?v=W_VV2Fx32_Y",
|
|
555
|
+
estimatedHours: 2,
|
|
556
|
+
level: "beginner",
|
|
557
|
+
free: true,
|
|
558
|
+
},
|
|
559
|
+
// ── Feature engineering ──────────────────────────────────────────────────
|
|
560
|
+
{
|
|
561
|
+
skill: "feature engineering",
|
|
562
|
+
title: "Kaggle – Feature Engineering Micro-Course",
|
|
563
|
+
type: "course",
|
|
564
|
+
url: "https://www.kaggle.com/learn/feature-engineering",
|
|
565
|
+
estimatedHours: 4,
|
|
566
|
+
level: "intermediate",
|
|
567
|
+
free: true,
|
|
568
|
+
},
|
|
569
|
+
// ── Causal inference ─────────────────────────────────────────────────────
|
|
570
|
+
{
|
|
571
|
+
skill: "causal inference",
|
|
572
|
+
title: "MIT OpenCourseWare – Statistics and Causal Inference",
|
|
573
|
+
type: "course",
|
|
574
|
+
url: "https://ocw.mit.edu/courses/14-385-nonlinear-econometric-analysis-fall-2007/",
|
|
575
|
+
estimatedHours: 20,
|
|
576
|
+
level: "advanced",
|
|
577
|
+
free: true,
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
skill: "causal inference",
|
|
581
|
+
title: "The Effect – Causal Inference Textbook (free online)",
|
|
582
|
+
type: "book",
|
|
583
|
+
url: "https://theeffectbook.net/",
|
|
584
|
+
estimatedHours: 15,
|
|
585
|
+
level: "intermediate",
|
|
586
|
+
free: true,
|
|
587
|
+
},
|
|
588
|
+
// ── Telehealth ───────────────────────────────────────────────────────────
|
|
589
|
+
{
|
|
590
|
+
skill: "telehealth",
|
|
591
|
+
title: "Coursera – Telehealth Essentials (free audit)",
|
|
592
|
+
type: "course",
|
|
593
|
+
url: "https://www.coursera.org/learn/telehealth?enroll=audit",
|
|
594
|
+
estimatedHours: 6,
|
|
595
|
+
level: "beginner",
|
|
596
|
+
free: true,
|
|
597
|
+
},
|
|
598
|
+
// ── AI in diagnostics ────────────────────────────────────────────────────
|
|
599
|
+
{
|
|
600
|
+
skill: "AI in diagnostics",
|
|
601
|
+
title: "DeepLearning.AI – AI for Medicine Specialization (free audit)",
|
|
602
|
+
type: "course",
|
|
603
|
+
url: "https://www.coursera.org/specializations/ai-for-medicine?enroll=audit",
|
|
604
|
+
estimatedHours: 24,
|
|
605
|
+
level: "intermediate",
|
|
606
|
+
free: true,
|
|
607
|
+
},
|
|
608
|
+
// ── ESG reporting ────────────────────────────────────────────────────────
|
|
609
|
+
{
|
|
610
|
+
skill: "ESG reporting",
|
|
611
|
+
title: "GRI – Free e-learning on sustainability reporting",
|
|
612
|
+
type: "course",
|
|
613
|
+
url: "https://www.globalreporting.org/media/m53dvxf2/gri-e-learning-introduction-to-sustainability-reporting.pdf",
|
|
614
|
+
estimatedHours: 4,
|
|
615
|
+
level: "beginner",
|
|
616
|
+
free: true,
|
|
617
|
+
},
|
|
618
|
+
// ── Data visualization ───────────────────────────────────────────────────
|
|
619
|
+
{
|
|
620
|
+
skill: "data visualization",
|
|
621
|
+
title: "freeCodeCamp – Data Visualization Certification",
|
|
622
|
+
type: "course",
|
|
623
|
+
url: "https://www.freecodecamp.org/learn/data-visualization/",
|
|
624
|
+
estimatedHours: 10,
|
|
625
|
+
level: "beginner",
|
|
626
|
+
free: true,
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
skill: "data visualization",
|
|
630
|
+
title: "Observable – Learn Data Visualization (free)",
|
|
631
|
+
type: "course",
|
|
632
|
+
url: "https://observablehq.com/tutorials",
|
|
633
|
+
estimatedHours: 5,
|
|
634
|
+
level: "intermediate",
|
|
635
|
+
free: true,
|
|
636
|
+
},
|
|
637
|
+
// ── WebAssembly ──────────────────────────────────────────────────────────
|
|
638
|
+
{
|
|
639
|
+
skill: "WebAssembly",
|
|
640
|
+
title: "MDN – WebAssembly Guide",
|
|
641
|
+
type: "article",
|
|
642
|
+
url: "https://developer.mozilla.org/en-US/docs/WebAssembly",
|
|
643
|
+
estimatedHours: 5,
|
|
644
|
+
level: "intermediate",
|
|
645
|
+
free: true,
|
|
646
|
+
},
|
|
647
|
+
// ── Async communication ──────────────────────────────────────────────────
|
|
648
|
+
{
|
|
649
|
+
skill: "async communication",
|
|
650
|
+
title: "GitLab – Remote Work Playbook (free)",
|
|
651
|
+
type: "article",
|
|
652
|
+
url: "https://about.gitlab.com/company/culture/all-remote/guide/",
|
|
653
|
+
estimatedHours: 3,
|
|
654
|
+
level: "beginner",
|
|
655
|
+
free: true,
|
|
656
|
+
},
|
|
657
|
+
// ── Inclusive leadership ─────────────────────────────────────────────────
|
|
658
|
+
{
|
|
659
|
+
skill: "inclusive leadership",
|
|
660
|
+
title: "Coursera – Everyday Leadership (free audit)",
|
|
661
|
+
type: "course",
|
|
662
|
+
url: "https://www.coursera.org/learn/everyday-leadership-new?enroll=audit",
|
|
663
|
+
estimatedHours: 8,
|
|
664
|
+
level: "beginner",
|
|
665
|
+
free: true,
|
|
666
|
+
},
|
|
667
|
+
// ── AI/ML integration ────────────────────────────────────────────────────
|
|
668
|
+
{
|
|
669
|
+
skill: "AI/ML integration",
|
|
670
|
+
title: "fast.ai – Practical Deep Learning for Coders (free)",
|
|
671
|
+
type: "course",
|
|
672
|
+
url: "https://course.fast.ai/",
|
|
673
|
+
estimatedHours: 30,
|
|
674
|
+
level: "intermediate",
|
|
675
|
+
free: true,
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
skill: "AI/ML integration",
|
|
679
|
+
title: "Coursera – Machine Learning Specialization by Andrew Ng (free audit)",
|
|
680
|
+
type: "course",
|
|
681
|
+
url: "https://www.coursera.org/specializations/machine-learning-introduction?enroll=audit",
|
|
682
|
+
estimatedHours: 36,
|
|
683
|
+
level: "beginner",
|
|
684
|
+
free: true,
|
|
685
|
+
},
|
|
686
|
+
];
|
|
687
|
+
export function getResourcesForSkill(skill, level, maxHours) {
|
|
688
|
+
const skillLower = skill.toLowerCase();
|
|
689
|
+
let results = LEARNING_RESOURCES.filter((r) => r.skill.toLowerCase().includes(skillLower) ||
|
|
690
|
+
skillLower.includes(r.skill.toLowerCase()) ||
|
|
691
|
+
r.title.toLowerCase().includes(skillLower));
|
|
692
|
+
if (level) {
|
|
693
|
+
const levelFiltered = results.filter((r) => r.level === level);
|
|
694
|
+
if (levelFiltered.length > 0)
|
|
695
|
+
results = levelFiltered;
|
|
696
|
+
}
|
|
697
|
+
if (maxHours !== undefined) {
|
|
698
|
+
results = results.filter((r) => r.estimatedHours <= maxHours);
|
|
699
|
+
}
|
|
700
|
+
// Sort by free first, then by estimated hours (shorter first)
|
|
701
|
+
results.sort((a, b) => {
|
|
702
|
+
if (a.free && !b.free)
|
|
703
|
+
return -1;
|
|
704
|
+
if (!a.free && b.free)
|
|
705
|
+
return 1;
|
|
706
|
+
return a.estimatedHours - b.estimatedHours;
|
|
707
|
+
});
|
|
708
|
+
return results;
|
|
709
|
+
}
|
|
710
|
+
//# sourceMappingURL=resources.js.map
|