diff --git a/src/components/Questions/QuestionFinished.tsx b/src/components/Questions/QuestionFinished.tsx
index 890c25f225bb..b9c9083cde43 100644
--- a/src/components/Questions/QuestionFinished.tsx
+++ b/src/components/Questions/QuestionFinished.tsx
@@ -13,28 +13,19 @@ type ProgressStatButtonProps = {
icon: ReactNode;
label: string;
count: number;
- onClick: () => void;
};
-function ProgressStatButton(props: ProgressStatButtonProps) {
- const { icon, label, count, onClick, isDisabled = false } = props;
+function ProgressStatLabel(props: ProgressStatButtonProps) {
+ const { icon, label, count } = props;
return (
-
+
);
}
@@ -43,12 +34,11 @@ type QuestionFinishedProps = {
didNotKnowCount: number;
skippedCount: number;
totalCount: number;
- onReset: (type: QuestionProgressType | 'reset') => void;
+ onReset: () => void;
};
export function QuestionFinished(props: QuestionFinishedProps) {
- const { knowCount, didNotKnowCount, skippedCount, totalCount, onReset } =
- props;
+ const { knowCount, didNotKnowCount, skippedCount, onReset } = props;
return (
@@ -63,31 +53,25 @@ export function QuestionFinished(props: QuestionFinishedProps) {
-
}
label="Knew"
count={knowCount}
- isDisabled={knowCount === 0}
- onClick={() => onReset('know')}
/>
-
}
label="Learned"
count={didNotKnowCount}
- isDisabled={didNotKnowCount === 0}
- onClick={() => onReset('dontKnow')}
/>
-
}
label="Skipped"
count={skippedCount}
- isDisabled={skippedCount === 0}
- onClick={() => onReset('skip')}
/>
@@ -46,8 +71,7 @@ export function QuestionsProgress(props: QuestionsProgressProps) {
Knew
- {knowCount}{' '}
- Items
+ {knowCount} Items
@@ -55,8 +79,7 @@ export function QuestionsProgress(props: QuestionsProgressProps) {
Learnt
- {didNotKnowCount}{' '}
- Items
+ {didNotKnowCount} Items
@@ -64,8 +87,7 @@ export function QuestionsProgress(props: QuestionsProgressProps) {
Skipped
- {skippedCount}{' '}
- Items
+ {skippedCount} Items
diff --git a/src/data/question-groups/backend/content/ci-cd.md b/src/data/question-groups/backend/content/ci-cd.md
index 875774e6b5fb..eca26f0f5f2f 100644
--- a/src/data/question-groups/backend/content/ci-cd.md
+++ b/src/data/question-groups/backend/content/ci-cd.md
@@ -1,8 +1,8 @@
There are multiple considerations to have while setting up Continuous Integration and Continuous Delivery pipelines:
- **Using source control** as the trigger for the entire process (git for example). The build pipelines for your backend services should get executed when you push your code into a specific branch.
-- **Pick the right CI/CD** platform for your needs, there are many out there such as GitHub, Gitlab CI, CircleCI and more.
+- **Pick the right CI/CD** platform for your needs, there are many out there such as GitHub Actions, GitLab CI/CD, CircleCI and more.
- Make sure you have **automated unit tests** that can be executed inside these pipelines.
- **Automatic deployment** should happen only if all tests are executed successfully, otherwise, the pipeline should fail, preventing broken code from reaching any environment.
- **Use an artifact repository** such as JFrog Artifactory or Nexus Repository to store successfully built services.
-- Finally, consider setting up a **rollback strategy** in case something goes wrong and the final deployed version of your service is corrupted somehow.
\ No newline at end of file
+- Finally, consider setting up a **rollback strategy** in case something goes wrong and the final deployed version of your service is corrupted somehow.
diff --git a/src/data/roadmaps/aws/content/100-introduction/103-aws/102-well-architected.md b/src/data/roadmaps/aws/content/100-introduction/103-aws/102-well-architected.md
index 0c5112e5d6d0..5e770d01b1c4 100644
--- a/src/data/roadmaps/aws/content/100-introduction/103-aws/102-well-architected.md
+++ b/src/data/roadmaps/aws/content/100-introduction/103-aws/102-well-architected.md
@@ -1,3 +1,7 @@
# Well Architected Framework
-AWS Well-Architected Framework is a set of strategic guidelines provided by Amazon Web Services. It is designed to provide high-performing and resilient systems while maintaining cost efficiency. The framework divides the architectural best practices across five pillars which include operational excellence, security, reliability, performance efficiency, and cost optimization. With this framework, you can assess and improve your cloud-based architectures and applications by leveraging AWS technologies.
\ No newline at end of file
+AWS Well-Architected Framework is a set of strategic guidelines provided by Amazon Web Services. It is designed to provide high-performing and resilient systems while maintaining cost efficiency. The framework divides the architectural best practices across six pillars which include operational excellence, security, reliability, performance efficiency, cost optimization and the sustainability. With this framework, you can assess and improve your cloud-based architectures and applications by leveraging AWS technologies.
+
+Visit the following resources to learn more:
+
+- [AWS Well-Architected](https://aws.amazon.com/architecture/well-architected)
diff --git a/src/data/roadmaps/backend/content/120-real-time-data.md b/src/data/roadmaps/backend/content/120-real-time-data.md
index 1ccdd66b908a..7e65b38ec3bd 100644
--- a/src/data/roadmaps/backend/content/120-real-time-data.md
+++ b/src/data/roadmaps/backend/content/120-real-time-data.md
@@ -5,4 +5,7 @@ There are many ways to get real time data from the backend. Some of them are:
- Websockets
- Server Sent Events
- Long Polling
-- Short Polling
\ No newline at end of file
+- Short Polling
+
+- [Introduction to HTTP Polling and Web Sockets](https://www.youtube.com/watch?v=OsgrJDMPl58)
+- [Introduction to Long Polling](https://www.pubnub.com/guides/long-polling/)
diff --git a/src/data/roadmaps/docker/content/108-running-containers/index.md b/src/data/roadmaps/docker/content/108-running-containers/index.md
index 2ff1e4dd5959..2472cb972f1f 100644
--- a/src/data/roadmaps/docker/content/108-running-containers/index.md
+++ b/src/data/roadmaps/docker/content/108-running-containers/index.md
@@ -16,7 +16,7 @@ This starts a new container and maps the host's port 8080 to the container's por
## Listing Containers
-To list all running containers, use the `docker ps` command. To view all containers (including those that have stopped), use the `-a` flag:
+To list all running containers, use the `docker container ls` command. To view all containers (including those that have stopped), use the `-a` flag:
```bash
docker container ls -a
@@ -30,7 +30,7 @@ To access a running container's shell, use the `docker exec` command:
docker exec -it CONTAINER_ID bash
```
-Replace `CONTAINER_ID` with the ID or name of your desired container. You can find this in the output of `docker ps`.
+Replace `CONTAINER_ID` with the ID or name of your desired container. You can find this in the output of `docker container ls`.
## Stopping Containers
diff --git a/src/data/roadmaps/golang/content/105-go-logging/102-log-slog.md b/src/data/roadmaps/golang/content/105-go-logging/102-log-slog.md
index 2623222d14b6..b64a006fd0d7 100644
--- a/src/data/roadmaps/golang/content/105-go-logging/102-log-slog.md
+++ b/src/data/roadmaps/golang/content/105-go-logging/102-log-slog.md
@@ -1,5 +1,10 @@
# log/slog
-The `log` package is the standard logging package in Go. It provides a simple logging API that can be used to log messages to the console or to a file.
+The `log` and `log/slog` (since go 1.21) packages are the standard logging packages in Go. These packages provides a simple logging API that can be used to log messages to the console or to a file.
-Learn more about the `log` package in the [official documentation](https://pkg.go.dev/log).
\ No newline at end of file
+Visit the following resources to learn more:
+
+- [Official Documentation: log](https://pkg.go.dev/log)
+- [Official Documentation: log/slog](https://pkg.go.dev/log/slog) `(since go 1.21)`
+- [Go Blog: Structured Logging with slog](https://go.dev/blog/slog)
+- [Go by Example: Logging](https://gobyexample.com/logging)
diff --git a/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md b/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md
index 33b1afab30f7..8388d581200b 100644
--- a/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md
+++ b/src/data/roadmaps/java/content/100-java-fundamentals/107-loops.md
@@ -2,7 +2,7 @@
In Java and other programming languages, loops are used to iterate a part of the program several times. There are four types of loops in Java, `for`, `forEach`, `while`, and `do...while`.
-- Synatx of `for` loop is `for(initialization;condition;increment/decrement){}`
+- Syntax of `for` loop is `for(initialization;condition;increment/decrement){}`
- Syntax of `forEach` loop is `for(data_type variable:array_name){}`
Visit the following resources to learn more:
diff --git a/src/data/roadmaps/linux/content/104-text-processing/116-grep.md b/src/data/roadmaps/linux/content/104-text-processing/116-grep.md
index 9631c7a2ca97..af88dcf01408 100644
--- a/src/data/roadmaps/linux/content/104-text-processing/116-grep.md
+++ b/src/data/roadmaps/linux/content/104-text-processing/116-grep.md
@@ -10,4 +10,13 @@ Here is an example of a simple GREP command:
grep "pattern" fileName
```
-This command will search for the specified pattern within the file and prints the line to the terminal.
\ No newline at end of file
+This command will search for the specified pattern within the file and prints the line to the terminal.
+
+There is also an alternative to `grep` - `ripgrep`.
+
+`ripgrep` is an extremely fast text processor that supports all the features of `grep` and extends it.
+
+Visit the following resources to learn more:
+
+- [bgsu.edu: Advanced Grep Topics](https://caspar.bgsu.edu/~courses/Stats/Labs/Handouts/grepadvanced.htm)
+- [Ripgrep: Github Repository](https://github.com/BurntSushi/ripgrep)
diff --git a/src/data/roadmaps/linux/content/104-text-processing/117-awk.md b/src/data/roadmaps/linux/content/104-text-processing/117-awk.md
index 6dee9870fb42..654df0283f34 100644
--- a/src/data/roadmaps/linux/content/104-text-processing/117-awk.md
+++ b/src/data/roadmaps/linux/content/104-text-processing/117-awk.md
@@ -1,4 +1,4 @@
-# awk - Text Processing
+# awk - Text Processing
awk is a powerful text-processing language that is widely used in Unix-like operating systems, including Linux. Named after its three original developers - Alfred Aho, Peter Weinberger, and Brian Kernighan, awk is adept at performing operations upon text files, such as sorting, filtering, and report generation.
@@ -12,4 +12,10 @@ Here's an example of how to print first two fields of each line of a file using
awk '{print $1,$2}' filename
```
-This would display the first and second field (typically separated by spaces) of every line in 'filename'.
\ No newline at end of file
+This would display the first and second field (typically separated by spaces) of every line in 'filename'.
+
+Visit the following resources to learn more:
+
+- [IBM.com: Awk by Example](https://developer.ibm.com/tutorials/l-awk1/)
+- [Linux Handbook: Awk](https://linuxhandbook.com/awk-command-tutorial/)
+- [YouTube](https://www.youtube.com/watch?v=9YOZmI-zWok)
diff --git a/src/data/roadmaps/mlops/content/100-programming-fundamentals/101-golang.md b/src/data/roadmaps/mlops/content/100-programming-fundamentals/102-golang.md
similarity index 100%
rename from src/data/roadmaps/mlops/content/100-programming-fundamentals/101-golang.md
rename to src/data/roadmaps/mlops/content/100-programming-fundamentals/102-golang.md
diff --git a/src/data/roadmaps/mlops/mlops.json b/src/data/roadmaps/mlops/mlops.json
index 541502917359..1c692154a17c 100644
--- a/src/data/roadmaps/mlops/mlops.json
+++ b/src/data/roadmaps/mlops/mlops.json
@@ -1,3255 +1,3259 @@
{
"mockup": {
- "controls": {
- "control": [
- {
- "ID": "3600",
- "typeID": "Arrow",
- "zOrder": "3",
- "w": "226",
- "h": "145",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1168",
- "y": "1894",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "stroke": "dotted",
- "p0": {
- "x": 226.47706272280266,
- "y": 145.09752175520043
- },
- "p1": {
- "x": 0.48716510424745796,
- "y": -0.09050463451557213
- },
- "p2": {
- "x": 0.2240318781412043,
- "y": 0.17641653110717925
- }
- }
- },
- {
- "ID": "3601",
- "typeID": "Arrow",
- "zOrder": "4",
- "w": "226",
- "h": "95",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1170",
- "y": "1892",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "stroke": "dotted",
- "p0": {
- "x": 225.2491412605234,
- "y": 94.57035639603009
- },
- "p1": {
- "x": 0.5112460408552416,
- "y": -0.07415022000257976
- },
- "p2": {
- "x": -0.45605469521706254,
- "y": -0.4634103221762871
- }
- }
- },
- {
- "ID": "3602",
- "typeID": "Arrow",
- "zOrder": "5",
- "w": "213",
- "h": "44",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1184",
- "y": "1886",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "stroke": "dotted",
- "p0": {
- "x": 212.56905468716513,
- "y": 43.81407905043466
- },
- "p1": {
- "x": 0.5075193151706439,
- "y": -0.04906393850575839
- },
- "p2": {
- "x": 0.06299299784222967,
- "y": 0.25693597125678025
- }
- }
- },
- {
- "ID": "3603",
- "typeID": "Arrow",
- "zOrder": "6",
- "w": "219",
- "h": "1",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1187",
- "y": "1874",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "stroke": "dotted",
- "p0": {
- "x": 218.47706272280266,
- "y": 0.09752175520043238
- },
- "p1": {
- "x": 0.49999999999999983,
- "y": 0
- },
- "p2": {
- "x": -0.2971801488740766,
- "y": 0.09752175520043238
- }
- }
- },
- {
- "ID": "3604",
- "typeID": "Arrow",
- "zOrder": "7",
- "w": "201",
- "h": "46",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1196",
- "y": "1816",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "stroke": "dotted",
- "p0": {
- "x": 200.56905468716513,
- "y": 0.30152435924355814
- },
- "p1": {
- "x": 0.4723739008968917,
- "y": 0.03172772602757116
- },
- "p2": {
- "x": -0.05778616238194445,
- "y": 46.49849429170513
- }
- }
- },
- {
- "ID": "3605",
- "typeID": "Arrow",
- "zOrder": "8",
- "w": "216",
- "h": "90",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1179",
- "y": "1766",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "stroke": "dotted",
- "p0": {
- "x": 216.2491412605234,
- "y": 0.14481414685678828
- },
- "p1": {
- "x": 0.5158288215391025,
- "y": 0.059454538465246405
- },
- "p2": {
- "x": -0.216660708724703,
- "y": 89.89892715849624
- }
- }
- },
- {
- "ID": "3606",
- "typeID": "Arrow",
- "zOrder": "9",
- "w": "1",
- "h": "517",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1063",
- "y": "1601",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 0,
- "y": 517.5616990602057
- },
- "p1": {
- "x": 0.4999999999999998,
- "y": 0
- },
- "p2": {
- "x": 0,
- "y": 0.10948518400027751
- }
- }
- },
- {
- "ID": "3607",
- "typeID": "Arrow",
- "zOrder": "10",
- "w": "235",
- "h": "148",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1164",
- "y": "1708",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 235.2088815404486,
- "y": 0.06862337461961943
- },
- "p1": {
- "x": 0.48837869822485236,
- "y": 0.08549112426035499
- },
- "p2": {
- "x": 0.2642915982160048,
- "y": 147.89892715849624
- },
- "stroke": "dotted"
- }
- },
- {
- "ID": "3608",
- "typeID": "Arrow",
- "zOrder": "11",
- "w": "1",
- "h": "218",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1403",
- "y": "1372",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 0,
- "y": 217.77529435680026
- },
- "p1": {
- "x": 0.4999999999999997,
- "y": 0
- },
- "p2": {
- "x": 0,
- "y": 0.10948518400027751
- }
- }
- },
- {
- "ID": "3609",
- "typeID": "Arrow",
- "zOrder": "12",
- "w": "63",
- "h": "105",
- "measuredW": "150",
- "measuredH": "100",
- "x": "871",
- "y": "1610",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 62.37564854400023,
- "y": -0.1653379887995925
- },
- "p1": {
- "x": 0.5477800857142193,
- "y": -0.20118082073468316
- },
- "p2": {
- "x": 3.099225975514628,
- "y": 104.93313727827694
- }
- }
- },
- {
- "ID": "3610",
- "typeID": "Arrow",
- "zOrder": "13",
- "w": "110",
- "h": "4",
- "measuredW": "150",
- "measuredH": "100",
- "x": "827",
- "y": "1600",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 110.39032527680024,
- "y": -0.2520769391996964
- },
- "p1": {
- "x": 0.46737830066706804,
- "y": -0.0036060514395746695
- },
- "p2": {
- "x": 0.08850738176079176,
- "y": 3.418067204234376
- }
- }
- },
- {
- "ID": "3611",
- "typeID": "Arrow",
- "zOrder": "14",
- "w": "95",
- "h": "48",
- "measuredW": "150",
- "measuredH": "100",
- "x": "837",
- "y": "1538",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 95.03742296640019,
- "y": 47.74660161440033
- },
- "p1": {
- "x": 0.5329020041028875,
- "y": 0.14344326968597146
- },
- "p2": {
- "x": 0.023406956800158696,
- "y": -0.4295191791995876
- }
- }
- },
- {
- "ID": "3612",
- "typeID": "Arrow",
- "zOrder": "15",
- "w": "330",
- "h": "1",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1146",
- "y": "1599",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 330.0261202608003,
- "y": 0.10948518400027751
- },
- "p1": {
- "x": 0.4999999999999997,
- "y": 0
- },
- "p2": {
- "x": 0,
- "y": 0.10948518400027751
- }
- }
- },
- {
- "ID": "3613",
- "typeID": "Arrow",
- "zOrder": "16",
- "w": "211",
- "h": "1",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1114",
- "y": "1362",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 210.56248173120025,
- "y": 0.10948518400027751
- },
- "p1": {
- "x": 0.4999999999999997,
- "y": 0
- },
- "p2": {
- "x": 0,
- "y": 0.10948518400027751
- }
- }
- },
- {
- "ID": "3614",
- "typeID": "Arrow",
- "zOrder": "17",
- "w": "86",
- "h": "48",
- "measuredW": "150",
- "measuredH": "100",
- "x": "838",
- "y": "1365",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 86.00806950080016,
- "y": -0.193370007999647
- },
- "p1": {
- "x": 0.49913203574984505,
- "y": -0.12569866906689672
- },
- "p2": {
- "x": 0.3616325344002007,
- "y": 47.982750785600274
- }
- }
- },
- {
- "ID": "3615",
- "typeID": "Arrow",
- "zOrder": "18",
- "w": "110",
- "h": "4",
- "measuredW": "150",
- "measuredH": "100",
- "x": "827",
- "y": "1349",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 110.39032527680024,
- "y": -0.2520769391996964
- },
- "p1": {
- "x": 0.46737830066706804,
- "y": -0.0036060514395746695
- },
- "p2": {
- "x": 0.08850738176079176,
- "y": 3.418067204234376
- }
- }
- },
- {
- "ID": "3616",
- "typeID": "Arrow",
- "zOrder": "19",
- "w": "202",
- "h": "207",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1107",
- "y": "1141",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 202.41703584960032,
- "y": 0.4697258608002812
- },
- "p1": {
- "x": 0.47994703797035837,
- "y": 0.21594840473241347
- },
- "p2": {
- "x": 0.3449736320003467,
- "y": 207.8946903888002
- }
- }
- },
- {
- "ID": "3617",
- "typeID": "Arrow",
- "zOrder": "20",
- "w": "129",
- "h": "28",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1424",
- "y": "1139",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 128.22671495968893,
- "y": 28.16661002949195
- },
- "p1": {
- "x": 0.38104819840898435,
- "y": -0.0902667290594294
- },
- "p2": {
- "x": -0.39830420705629876,
- "y": 0.1492791218840921
- }
- }
- },
- {
- "ID": "3618",
- "typeID": "Arrow",
- "zOrder": "21",
- "w": "129",
- "h": "24",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1422",
- "y": "1102",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 128.95319991843417,
- "y": 0.21734292549183465
- },
- "p1": {
- "x": 0.4823277909738713,
- "y": 0.06750593824228046
- },
- "p2": {
- "x": 0.32818075168870564,
- "y": 23.140613668080164
- }
- }
- },
- {
- "ID": "3619",
- "typeID": "__group__",
- "zOrder": "22",
- "measuredW": "163",
- "measuredH": "49",
- "w": "163",
- "h": "49",
- "x": "1543",
- "y": "1080",
- "properties": {
- "controlName": "100-version-control-systems:git"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
+ "controls": {
+ "control": [
+ {
+ "ID": "1160",
+ "typeID": "Arrow",
"zOrder": "0",
- "w": "163",
- "h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
- "properties": {
- "color": "16770457"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
+ "w": "92",
+ "h": "54",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "775",
+ "y": "1357",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 91.8899475740078,
+ "y": 0.1827846917374245
+ },
+ "p1": {
+ "x": 0.47294727744165954,
+ "y": -0.11979256698357832
+ },
+ "p2": {
+ "x": -0.12049726552004358,
+ "y": 53.973506290230716
+ }
+ }
+ },
+ {
+ "ID": "1161",
+ "typeID": "Arrow",
"zOrder": "1",
- "measuredW": "22",
- "measuredH": "25",
- "x": "71",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Git"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3620",
- "typeID": "__group__",
- "zOrder": "23",
- "measuredW": "163",
- "measuredH": "49",
- "w": "163",
- "h": "49",
- "x": "1543",
- "y": "1134",
- "properties": {
- "controlName": "101-version-control-systems:github"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ "w": "1",
+ "h": "62",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "609",
+ "y": "1230",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 0.08850738176079176,
+ "y": 62.03857705484643
+ },
+ "p1": {
+ "x": 0.4673783006670681,
+ "y": -0.0036060514395746643
+ },
+ "p2": {
+ "x": 0.08850738176079176,
+ "y": 0.4180672042343758
+ }
+ }
+ },
+ {
+ "ID": "1162",
+ "typeID": "Arrow",
+ "zOrder": "2",
+ "w": "107",
+ "h": "60",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1389",
+ "y": "649",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 106.95319991843417,
+ "y": 0.21734292549183465
+ },
+ "p1": {
+ "x": 0.48232779097387135,
+ "y": 0.06750593824228049
+ },
+ "p2": {
+ "x": -0.4816074511304578,
+ "y": 59.863034899371996
+ }
+ }
+ },
+ {
+ "ID": "1163",
+ "typeID": "Arrow",
+ "zOrder": "3",
+ "w": "226",
+ "h": "145",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1107",
+ "y": "1641",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "stroke": "dotted",
+ "p0": {
+ "x": 226.47706272280266,
+ "y": 145.09752175520043
+ },
+ "p1": {
+ "x": 0.48716510424745796,
+ "y": -0.09050463451557213
+ },
+ "p2": {
+ "x": 0.2240318781412043,
+ "y": 0.17641653110717925
+ }
+ }
+ },
+ {
+ "ID": "1164",
+ "typeID": "Arrow",
+ "zOrder": "4",
+ "w": "226",
+ "h": "95",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1109",
+ "y": "1639",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "stroke": "dotted",
+ "p0": {
+ "x": 225.2491412605234,
+ "y": 94.57035639603009
+ },
+ "p1": {
+ "x": 0.5112460408552416,
+ "y": -0.07415022000257976
+ },
+ "p2": {
+ "x": -0.45605469521706254,
+ "y": -0.4634103221762871
+ }
+ }
+ },
+ {
+ "ID": "1165",
+ "typeID": "Arrow",
+ "zOrder": "5",
+ "w": "213",
+ "h": "44",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1123",
+ "y": "1633",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "stroke": "dotted",
+ "p0": {
+ "x": 212.56905468716513,
+ "y": 43.81407905043466
+ },
+ "p1": {
+ "x": 0.5075193151706439,
+ "y": -0.04906393850575839
+ },
+ "p2": {
+ "x": 0.06299299784222967,
+ "y": 0.25693597125678025
+ }
+ }
+ },
+ {
+ "ID": "1166",
+ "typeID": "Arrow",
+ "zOrder": "6",
+ "w": "219",
+ "h": "1",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1126",
+ "y": "1621",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "stroke": "dotted",
+ "p0": {
+ "x": 218.47706272280266,
+ "y": 0.09752175520043238
+ },
+ "p1": {
+ "x": 0.49999999999999983,
+ "y": 0
+ },
+ "p2": {
+ "x": -0.2971801488740766,
+ "y": 0.09752175520043238
+ }
+ }
+ },
+ {
+ "ID": "1167",
+ "typeID": "Arrow",
+ "zOrder": "7",
+ "w": "201",
+ "h": "46",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1135",
+ "y": "1563",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "stroke": "dotted",
+ "p0": {
+ "x": 200.56905468716513,
+ "y": 0.30152435924355814
+ },
+ "p1": {
+ "x": 0.4723739008968917,
+ "y": 0.03172772602757116
+ },
+ "p2": {
+ "x": -0.05778616238194445,
+ "y": 46.49849429170513
+ }
+ }
+ },
+ {
+ "ID": "1168",
+ "typeID": "Arrow",
+ "zOrder": "8",
+ "w": "216",
+ "h": "90",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1118",
+ "y": "1513",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "stroke": "dotted",
+ "p0": {
+ "x": 216.2491412605234,
+ "y": 0.14481414685678828
+ },
+ "p1": {
+ "x": 0.5158288215391025,
+ "y": 0.059454538465246405
+ },
+ "p2": {
+ "x": -0.216660708724703,
+ "y": 89.89892715849624
+ }
+ }
+ },
+ {
+ "ID": "1169",
+ "typeID": "Arrow",
+ "zOrder": "9",
+ "w": "1",
+ "h": "517",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1002",
+ "y": "1348",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 0,
+ "y": 517.5616990602057
+ },
+ "p1": {
+ "x": 0.4999999999999998,
+ "y": 0
+ },
+ "p2": {
+ "x": 0,
+ "y": 0.10948518400027751
+ }
+ }
+ },
+ {
+ "ID": "1170",
+ "typeID": "Arrow",
+ "zOrder": "10",
+ "w": "235",
+ "h": "148",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1103",
+ "y": "1455",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 235.2088815404486,
+ "y": 0.06862337461961943
+ },
+ "p1": {
+ "x": 0.48837869822485236,
+ "y": 0.08549112426035499
+ },
+ "p2": {
+ "x": 0.2642915982160048,
+ "y": 147.89892715849624
+ },
+ "stroke": "dotted"
+ }
+ },
+ {
+ "ID": "1171",
+ "typeID": "Arrow",
+ "zOrder": "11",
+ "w": "1",
+ "h": "218",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1342",
+ "y": "1119",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 0,
+ "y": 217.77529435680026
+ },
+ "p1": {
+ "x": 0.4999999999999997,
+ "y": 0
+ },
+ "p2": {
+ "x": 0,
+ "y": 0.10948518400027751
+ }
+ }
+ },
+ {
+ "ID": "1172",
+ "typeID": "Arrow",
+ "zOrder": "12",
+ "w": "63",
+ "h": "105",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "810",
+ "y": "1357",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 62.37564854400023,
+ "y": -0.1653379887995925
+ },
+ "p1": {
+ "x": 0.5477800857142193,
+ "y": -0.20118082073468316
+ },
+ "p2": {
+ "x": 3.099225975514628,
+ "y": 104.93313727827694
+ }
+ }
+ },
+ {
+ "ID": "1173",
+ "typeID": "Arrow",
+ "zOrder": "13",
+ "w": "110",
+ "h": "4",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "766",
+ "y": "1347",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 110.39032527680024,
+ "y": -0.2520769391996964
+ },
+ "p1": {
+ "x": 0.46737830066706804,
+ "y": -0.0036060514395746695
+ },
+ "p2": {
+ "x": 0.08850738176079176,
+ "y": 3.418067204234376
+ }
+ }
+ },
+ {
+ "ID": "1174",
+ "typeID": "Arrow",
+ "zOrder": "14",
+ "w": "95",
+ "h": "48",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "776",
+ "y": "1285",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 95.03742296640019,
+ "y": 47.74660161440033
+ },
+ "p1": {
+ "x": 0.5329020041028875,
+ "y": 0.14344326968597146
+ },
+ "p2": {
+ "x": 0.023406956800158696,
+ "y": -0.4295191791995876
+ }
+ }
+ },
+ {
+ "ID": "1175",
+ "typeID": "Arrow",
+ "zOrder": "15",
+ "w": "330",
+ "h": "1",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1085",
+ "y": "1346",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 330.0261202608003,
+ "y": 0.10948518400027751
+ },
+ "p1": {
+ "x": 0.4999999999999997,
+ "y": 0
+ },
+ "p2": {
+ "x": 0,
+ "y": 0.10948518400027751
+ }
+ }
+ },
+ {
+ "ID": "1176",
+ "typeID": "Arrow",
+ "zOrder": "16",
+ "w": "211",
+ "h": "1",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1053",
+ "y": "1109",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 210.56248173120025,
+ "y": 0.10948518400027751
+ },
+ "p1": {
+ "x": 0.4999999999999997,
+ "y": 0
+ },
+ "p2": {
+ "x": 0,
+ "y": 0.10948518400027751
+ }
+ }
+ },
+ {
+ "ID": "1177",
+ "typeID": "Arrow",
+ "zOrder": "17",
+ "w": "86",
+ "h": "48",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "777",
+ "y": "1112",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 86.00806950080016,
+ "y": -0.193370007999647
+ },
+ "p1": {
+ "x": 0.49913203574984505,
+ "y": -0.12569866906689672
+ },
+ "p2": {
+ "x": 0.3616325344002007,
+ "y": 47.982750785600274
+ }
+ }
+ },
+ {
+ "ID": "1178",
+ "typeID": "Arrow",
+ "zOrder": "18",
+ "w": "110",
+ "h": "4",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "766",
+ "y": "1096",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "color": "10027263",
+ "p0": {
+ "x": 110.39032527680024,
+ "y": -0.2520769391996964
+ },
+ "p1": {
+ "x": 0.46737830066706804,
+ "y": -0.0036060514395746695
+ },
+ "p2": {
+ "x": 0.08850738176079176,
+ "y": 3.418067204234376
+ }
+ }
+ },
+ {
+ "ID": "1179",
+ "typeID": "Arrow",
+ "zOrder": "19",
+ "w": "202",
+ "h": "207",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1046",
+ "y": "888",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 202.41703584960032,
+ "y": 0.4697258608002812
+ },
+ "p1": {
+ "x": 0.47994703797035837,
+ "y": 0.21594840473241347
+ },
+ "p2": {
+ "x": 0.3449736320003467,
+ "y": 207.8946903888002
+ }
+ }
+ },
+ {
+ "ID": "1180",
+ "typeID": "Arrow",
+ "zOrder": "20",
+ "w": "129",
+ "h": "28",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1363",
+ "y": "886",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 128.22671495968893,
+ "y": 28.16661002949195
+ },
+ "p1": {
+ "x": 0.38104819840898435,
+ "y": -0.0902667290594294
+ },
+ "p2": {
+ "x": -0.39830420705629876,
+ "y": 0.1492791218840921
+ }
+ }
+ },
+ {
+ "ID": "1181",
+ "typeID": "Arrow",
+ "zOrder": "21",
+ "w": "129",
+ "h": "24",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1361",
+ "y": "849",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 128.95319991843417,
+ "y": 0.21734292549183465
+ },
+ "p1": {
+ "x": 0.4823277909738713,
+ "y": 0.06750593824228046
+ },
+ "p2": {
+ "x": 0.32818075168870564,
+ "y": 23.140613668080164
+ }
+ }
+ },
+ {
+ "ID": "1182",
+ "typeID": "__group__",
+ "zOrder": "22",
+ "measuredW": "163",
+ "measuredH": "49",
"w": "163",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1482",
+ "y": "827",
"properties": {
- "color": "16770457"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "54",
- "measuredH": "25",
- "x": "55",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "GitHub"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3621",
- "typeID": "Label",
- "zOrder": "24",
- "measuredW": "161",
- "measuredH": "32",
- "x": "982",
- "y": "2132",
- "properties": {
- "text": "Keep Learning",
- "size": "24"
- }
- },
- {
- "ID": "3622",
- "typeID": "Arrow",
- "zOrder": "25",
- "w": "1",
- "h": "63",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1062",
- "y": "2175",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 0,
- "y": -0.053257099628808646
- },
- "p1": {
- "x": 0.4438624012549728,
- "y": -0.00008403832147459168
- },
- "p2": {
- "x": 0,
- "y": 63
- },
- "stroke": "dotted"
- }
- },
- {
- "ID": "3623",
- "typeID": "Arrow",
- "zOrder": "26",
- "w": "129",
- "h": "28",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1428",
- "y": "1371",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 128.22671495968893,
- "y": 28.16661002949195
- },
- "p1": {
- "x": 0.38104819840898435,
- "y": -0.0902667290594294
- },
- "p2": {
- "x": -0.39830420705629876,
- "y": 0.1492791218840921
- }
- }
- },
- {
- "ID": "3624",
- "typeID": "Arrow",
- "zOrder": "27",
- "w": "129",
- "h": "24",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1426",
- "y": "1334",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 128.95319991843417,
- "y": 0.21734292549183465
- },
- "p1": {
- "x": 0.4823277909738713,
- "y": 0.06750593824228046
- },
- "p2": {
- "x": 0.32818075168870564,
- "y": 23.140613668080164
- }
- }
- },
- {
- "ID": "3625",
- "typeID": "Arrow",
- "zOrder": "28",
- "w": "1",
- "h": "278",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1311",
- "y": "856",
- "properties": {
- "curvature": "0",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "10027263",
- "p0": {
- "x": 0,
- "y": 0
- },
- "p1": {
- "x": 0.49999999999999983,
- "y": 0
- },
- "p2": {
- "x": 0,
- "y": 278.1094851840003
- }
- }
- },
- {
- "ID": "3626",
- "typeID": "Arrow",
- "zOrder": "29",
- "w": "129",
- "h": "28",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1424",
- "y": "986",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 128.22671495968893,
- "y": 28.16661002949195
- },
- "p1": {
- "x": 0.38104819840898435,
- "y": -0.0902667290594294
- },
- "p2": {
- "x": -0.39830420705629876,
- "y": 0.1492791218840921
- }
- }
- },
- {
- "ID": "3627",
- "typeID": "Arrow",
- "zOrder": "30",
- "w": "129",
- "h": "24",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1422",
- "y": "949",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 128.95319991843417,
- "y": 0.21734292549183465
- },
- "p1": {
- "x": 0.4823277909738713,
- "y": 0.06750593824228046
- },
- "p2": {
- "x": 0.32818075168870564,
- "y": 23.140613668080164
- }
- }
- },
- {
- "ID": "3628",
- "typeID": "__group__",
- "zOrder": "31",
- "measuredW": "473",
- "measuredH": "175",
- "w": "473",
- "h": "175",
- "x": "610",
- "y": "932",
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Canvas",
- "zOrder": "0",
- "w": "473",
- "h": "175",
- "measuredW": "100",
- "measuredH": "70",
- "x": "0",
- "y": "0"
- },
- {
- "ID": "1",
- "typeID": "__group__",
- "zOrder": "1",
- "measuredW": "287",
- "measuredH": "27",
- "w": "287",
- "h": "27",
- "x": "26",
- "y": "79",
- "properties": {
- "controlName": "ext_link:roadmap.sh/ai-data-scientist"
+ "controlName": "100-version-control-systems:git"
},
"children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Label",
- "zOrder": "0",
- "measuredW": "254",
- "measuredH": "26",
- "x": "33",
- "y": "0",
- "properties": {
- "size": "18",
- "text": "AI and Data Scientist Roadmap"
- }
- },
- {
- "ID": "1",
- "typeID": "__group__",
- "zOrder": "1",
- "measuredW": "24",
- "measuredH": "24",
- "w": "24",
- "h": "24",
- "x": "0",
- "y": "3",
- "children": {
- "controls": {
- "control": [
- {
+ "controls": {
+ "control": [
+ {
"ID": "0",
- "typeID": "Icon",
+ "typeID": "TextArea",
"zOrder": "0",
- "measuredW": "24",
- "measuredH": "24",
+ "w": "163",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
"x": "0",
"y": "0",
"properties": {
- "color": "16777215",
- "icon": {
- "ID": "circle",
- "size": "small"
- }
+ "color": "16770457"
}
- },
- {
+ },
+ {
"ID": "1",
- "typeID": "Icon",
+ "typeID": "Label",
"zOrder": "1",
- "measuredW": "24",
- "measuredH": "24",
- "x": "0",
- "y": "0",
+ "measuredW": "22",
+ "measuredH": "25",
+ "x": "71",
+ "y": "12",
"properties": {
- "color": "10066329",
- "icon": {
- "ID": "check-circle",
- "size": "small"
- }
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- },
- {
- "ID": "2",
- "typeID": "Label",
- "zOrder": "2",
- "measuredW": "209",
- "measuredH": "32",
- "x": "26",
- "y": "34",
- "properties": {
- "size": "24",
- "text": "Related Roadmaps"
+ "size": "17",
+ "text": "Git"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "3",
+ },
+ {
+ "ID": "1183",
"typeID": "__group__",
- "zOrder": "3",
- "measuredW": "183",
- "measuredH": "27",
- "w": "183",
- "h": "27",
- "x": "26",
- "y": "117",
- "properties": {
- "controlName": "ext_link:roadmap.sh/devops"
+ "zOrder": "23",
+ "measuredW": "163",
+ "measuredH": "49",
+ "w": "163",
+ "h": "49",
+ "x": "1482",
+ "y": "881",
+ "properties": {
+ "controlName": "101-version-control-systems:github"
},
"children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Label",
- "zOrder": "0",
- "measuredW": "150",
- "measuredH": "26",
- "x": "33",
- "y": "0",
- "properties": {
- "size": "18",
- "text": "DevOps Roadmap"
- }
- },
- {
- "ID": "1",
- "typeID": "__group__",
- "zOrder": "1",
- "measuredW": "24",
- "measuredH": "24",
- "w": "24",
- "h": "24",
- "x": "0",
- "y": "3",
- "children": {
- "controls": {
- "control": [
- {
+ "controls": {
+ "control": [
+ {
"ID": "0",
- "typeID": "Icon",
+ "typeID": "TextArea",
"zOrder": "0",
- "measuredW": "24",
- "measuredH": "24",
+ "w": "163",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
"x": "0",
"y": "0",
"properties": {
- "color": "16777215",
- "icon": {
- "ID": "circle",
- "size": "small"
- }
+ "color": "16770457"
}
- },
- {
+ },
+ {
"ID": "1",
- "typeID": "Icon",
+ "typeID": "Label",
"zOrder": "1",
- "measuredW": "24",
- "measuredH": "24",
- "x": "0",
- "y": "0",
+ "measuredW": "54",
+ "measuredH": "25",
+ "x": "55",
+ "y": "12",
"properties": {
- "color": "10066329",
- "icon": {
- "ID": "check-circle",
- "size": "small"
- }
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- },
- {
- "ID": "4",
+ "size": "17",
+ "text": "GitHub"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "1184",
+ "typeID": "Label",
+ "zOrder": "24",
+ "measuredW": "161",
+ "measuredH": "32",
+ "x": "921",
+ "y": "1879",
+ "properties": {
+ "text": "Keep Learning",
+ "size": "24"
+ }
+ },
+ {
+ "ID": "1185",
+ "typeID": "Arrow",
+ "zOrder": "25",
+ "w": "1",
+ "h": "63",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1001",
+ "y": "1922",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 0,
+ "y": -0.053257099628808646
+ },
+ "p1": {
+ "x": 0.4438624012549728,
+ "y": -0.00008403832147459168
+ },
+ "p2": {
+ "x": 0,
+ "y": 63
+ },
+ "stroke": "dotted"
+ }
+ },
+ {
+ "ID": "1186",
+ "typeID": "Arrow",
+ "zOrder": "26",
+ "w": "129",
+ "h": "28",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1367",
+ "y": "1118",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 128.22671495968893,
+ "y": 28.16661002949195
+ },
+ "p1": {
+ "x": 0.38104819840898435,
+ "y": -0.0902667290594294
+ },
+ "p2": {
+ "x": -0.39830420705629876,
+ "y": 0.1492791218840921
+ }
+ }
+ },
+ {
+ "ID": "1187",
+ "typeID": "Arrow",
+ "zOrder": "27",
+ "w": "129",
+ "h": "24",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1365",
+ "y": "1081",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 128.95319991843417,
+ "y": 0.21734292549183465
+ },
+ "p1": {
+ "x": 0.4823277909738713,
+ "y": 0.06750593824228046
+ },
+ "p2": {
+ "x": 0.32818075168870564,
+ "y": 23.140613668080164
+ }
+ }
+ },
+ {
+ "ID": "1188",
+ "typeID": "Arrow",
+ "zOrder": "28",
+ "w": "1",
+ "h": "278",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1250",
+ "y": "603",
+ "properties": {
+ "curvature": "0",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "10027263",
+ "p0": {
+ "x": 0,
+ "y": 0
+ },
+ "p1": {
+ "x": 0.49999999999999983,
+ "y": 0
+ },
+ "p2": {
+ "x": 0,
+ "y": 278.1094851840003
+ }
+ }
+ },
+ {
+ "ID": "1189",
+ "typeID": "Arrow",
+ "zOrder": "29",
+ "w": "129",
+ "h": "28",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1363",
+ "y": "733",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 128.22671495968893,
+ "y": 28.16661002949195
+ },
+ "p1": {
+ "x": 0.38104819840898435,
+ "y": -0.0902667290594294
+ },
+ "p2": {
+ "x": -0.39830420705629876,
+ "y": 0.1492791218840921
+ }
+ }
+ },
+ {
+ "ID": "1190",
+ "typeID": "Arrow",
+ "zOrder": "30",
+ "w": "129",
+ "h": "24",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1361",
+ "y": "696",
+ "properties": {
+ "color": "2848996",
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 128.95319991843417,
+ "y": 0.21734292549183465
+ },
+ "p1": {
+ "x": 0.4823277909738713,
+ "y": 0.06750593824228046
+ },
+ "p2": {
+ "x": 0.32818075168870564,
+ "y": 23.140613668080164
+ }
+ }
+ },
+ {
+ "ID": "1191",
"typeID": "__group__",
- "zOrder": "4",
- "measuredW": "189",
- "measuredH": "27",
- "w": "189",
- "h": "27",
- "x": "235",
- "y": "117",
- "properties": {
- "controlName": "ext_link:roadmap.sh/backend"
- },
+ "zOrder": "31",
+ "measuredW": "473",
+ "measuredH": "175",
+ "w": "473",
+ "h": "175",
+ "x": "549",
+ "y": "679",
"children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Label",
- "zOrder": "0",
- "measuredW": "156",
- "measuredH": "26",
- "x": "33",
- "y": "0",
- "properties": {
- "size": "18",
- "text": "Backend Roadmap"
- }
- },
- {
- "ID": "1",
- "typeID": "__group__",
- "zOrder": "1",
- "measuredW": "24",
- "measuredH": "24",
- "w": "24",
- "h": "24",
- "x": "0",
- "y": "3",
- "children": {
- "controls": {
- "control": [
- {
+ "controls": {
+ "control": [
+ {
"ID": "0",
- "typeID": "Icon",
+ "typeID": "Canvas",
"zOrder": "0",
- "measuredW": "24",
- "measuredH": "24",
+ "w": "473",
+ "h": "175",
+ "measuredW": "100",
+ "measuredH": "70",
"x": "0",
- "y": "0",
- "properties": {
- "color": "16777215",
- "icon": {
- "ID": "circle",
- "size": "small"
- }
- }
- },
- {
+ "y": "0"
+ },
+ {
"ID": "1",
- "typeID": "Icon",
+ "typeID": "__group__",
"zOrder": "1",
- "measuredW": "24",
- "measuredH": "24",
- "x": "0",
- "y": "0",
+ "measuredW": "287",
+ "measuredH": "27",
+ "w": "287",
+ "h": "27",
+ "x": "26",
+ "y": "79",
"properties": {
- "color": "10066329",
- "icon": {
- "ID": "check-circle",
- "size": "small"
- }
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3629",
- "typeID": "__group__",
- "zOrder": "32",
- "measuredW": "473",
- "measuredH": "127",
- "w": "473",
- "h": "127",
- "x": "610",
- "y": "812",
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Canvas",
- "zOrder": "0",
+ "controlName": "ext_link:roadmap.sh/ai-data-scientist"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Label",
+ "zOrder": "0",
+ "measuredW": "254",
+ "measuredH": "26",
+ "x": "33",
+ "y": "0",
+ "properties": {
+ "size": "18",
+ "text": "AI and Data Scientist Roadmap"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "__group__",
+ "zOrder": "1",
+ "measuredW": "24",
+ "measuredH": "24",
+ "w": "24",
+ "h": "24",
+ "x": "0",
+ "y": "3",
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Icon",
+ "zOrder": "0",
+ "measuredW": "24",
+ "measuredH": "24",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16777215",
+ "icon": {
+ "ID": "circle",
+ "size": "small"
+ }
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Icon",
+ "zOrder": "1",
+ "measuredW": "24",
+ "measuredH": "24",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "10066329",
+ "icon": {
+ "ID": "check-circle",
+ "size": "small"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "2",
+ "typeID": "Label",
+ "zOrder": "2",
+ "measuredW": "209",
+ "measuredH": "32",
+ "x": "26",
+ "y": "34",
+ "properties": {
+ "size": "24",
+ "text": "Related Roadmaps"
+ }
+ },
+ {
+ "ID": "3",
+ "typeID": "__group__",
+ "zOrder": "3",
+ "measuredW": "183",
+ "measuredH": "27",
+ "w": "183",
+ "h": "27",
+ "x": "26",
+ "y": "117",
+ "properties": {
+ "controlName": "ext_link:roadmap.sh/devops"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Label",
+ "zOrder": "0",
+ "measuredW": "150",
+ "measuredH": "26",
+ "x": "33",
+ "y": "0",
+ "properties": {
+ "size": "18",
+ "text": "DevOps Roadmap"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "__group__",
+ "zOrder": "1",
+ "measuredW": "24",
+ "measuredH": "24",
+ "w": "24",
+ "h": "24",
+ "x": "0",
+ "y": "3",
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Icon",
+ "zOrder": "0",
+ "measuredW": "24",
+ "measuredH": "24",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16777215",
+ "icon": {
+ "ID": "circle",
+ "size": "small"
+ }
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Icon",
+ "zOrder": "1",
+ "measuredW": "24",
+ "measuredH": "24",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "10066329",
+ "icon": {
+ "ID": "check-circle",
+ "size": "small"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "4",
+ "typeID": "__group__",
+ "zOrder": "4",
+ "measuredW": "189",
+ "measuredH": "27",
+ "w": "189",
+ "h": "27",
+ "x": "235",
+ "y": "117",
+ "properties": {
+ "controlName": "ext_link:roadmap.sh/backend"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Label",
+ "zOrder": "0",
+ "measuredW": "156",
+ "measuredH": "26",
+ "x": "33",
+ "y": "0",
+ "properties": {
+ "size": "18",
+ "text": "Backend Roadmap"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "__group__",
+ "zOrder": "1",
+ "measuredW": "24",
+ "measuredH": "24",
+ "w": "24",
+ "h": "24",
+ "x": "0",
+ "y": "3",
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Icon",
+ "zOrder": "0",
+ "measuredW": "24",
+ "measuredH": "24",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16777215",
+ "icon": {
+ "ID": "circle",
+ "size": "small"
+ }
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Icon",
+ "zOrder": "1",
+ "measuredW": "24",
+ "measuredH": "24",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "10066329",
+ "icon": {
+ "ID": "check-circle",
+ "size": "small"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "1192",
+ "typeID": "__group__",
+ "zOrder": "32",
+ "measuredW": "473",
+ "measuredH": "127",
"w": "473",
"h": "127",
- "measuredW": "100",
- "measuredH": "70",
- "x": "0",
- "y": "0"
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "382",
- "measuredH": "26",
- "x": "21",
- "y": "22",
- "properties": {
- "size": "18",
- "text": "This roadmap is meant for beginners. If you are"
- }
- },
- {
- "ID": "2",
- "typeID": "Label",
- "zOrder": "2",
- "measuredW": "425",
- "measuredH": "26",
- "x": "21",
- "y": "51",
- "properties": {
- "size": "18",
- "text": "transitioning from DataScience/DevOps background"
+ "x": "549",
+ "y": "559",
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Canvas",
+ "zOrder": "0",
+ "w": "473",
+ "h": "127",
+ "measuredW": "100",
+ "measuredH": "70",
+ "x": "0",
+ "y": "0"
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "382",
+ "measuredH": "26",
+ "x": "21",
+ "y": "22",
+ "properties": {
+ "size": "18",
+ "text": "This roadmap is meant for beginners. If you are"
+ }
+ },
+ {
+ "ID": "2",
+ "typeID": "Label",
+ "zOrder": "2",
+ "measuredW": "425",
+ "measuredH": "26",
+ "x": "21",
+ "y": "51",
+ "properties": {
+ "size": "18",
+ "text": "transitioning from DataScience/DevOps background"
+ }
+ },
+ {
+ "ID": "3",
+ "typeID": "Label",
+ "zOrder": "3",
+ "measuredW": "215",
+ "measuredH": "26",
+ "x": "21",
+ "y": "80",
+ "properties": {
+ "size": "18",
+ "text": "you might skip some parts."
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "3",
+ },
+ {
+ "ID": "1193",
"typeID": "Label",
- "zOrder": "3",
- "measuredW": "215",
- "measuredH": "26",
- "x": "21",
- "y": "80",
- "properties": {
- "size": "18",
- "text": "you might skip some parts."
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3630",
- "typeID": "Label",
- "zOrder": "33",
- "measuredW": "104",
- "measuredH": "40",
- "x": "1260",
- "y": "799",
- "properties": {
- "size": "32",
- "text": "MLOps"
- }
- },
- {
- "ID": "3631",
- "typeID": "Arrow",
- "zOrder": "34",
- "w": "1",
- "h": "75",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1311",
- "y": "712",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 0.43268541466795796,
- "y": -0.4292144763719534
- },
- "p1": {
- "x": 0.4673783006670677,
- "y": -0.0036060514395746665
- },
- "p2": {
- "x": 0.08850738176079176,
- "y": 74.41806720423438
- },
- "color": "10027263"
- }
- },
- {
- "ID": "3632",
- "typeID": "__group__",
- "zOrder": "35",
- "measuredW": "350",
- "measuredH": "141",
- "w": "350",
- "h": "141",
- "x": "1483",
- "y": "680",
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Canvas",
- "zOrder": "0",
+ "zOrder": "33",
+ "measuredW": "104",
+ "measuredH": "40",
+ "x": "1199",
+ "y": "546",
+ "properties": {
+ "size": "32",
+ "text": "MLOps"
+ }
+ },
+ {
+ "ID": "1194",
+ "typeID": "Arrow",
+ "zOrder": "34",
+ "w": "1",
+ "h": "75",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1250",
+ "y": "459",
+ "properties": {
+ "curvature": "-1",
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "stroke": "dotted",
+ "p0": {
+ "x": 0.43268541466795796,
+ "y": -0.4292144763719534
+ },
+ "p1": {
+ "x": 0.4673783006670677,
+ "y": -0.0036060514395746665
+ },
+ "p2": {
+ "x": 0.08850738176079176,
+ "y": 74.41806720423438
+ },
+ "color": "10027263"
+ }
+ },
+ {
+ "ID": "1195",
+ "typeID": "__group__",
+ "zOrder": "35",
+ "measuredW": "350",
+ "measuredH": "141",
"w": "350",
"h": "141",
- "measuredW": "100",
- "measuredH": "70",
- "x": "0",
- "y": "0"
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "314",
- "measuredH": "25",
- "x": "14",
- "y": "17",
- "properties": {
- "size": "17",
- "text": "Find the detailed version of this roadmap"
- }
- },
- {
- "ID": "2",
- "typeID": "Label",
- "zOrder": "2",
- "measuredW": "319",
- "measuredH": "25",
- "x": "14",
- "y": "45",
- "properties": {
- "size": "17",
- "text": "along with resources and other roadmaps"
+ "x": "1422",
+ "y": "427",
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Canvas",
+ "zOrder": "0",
+ "w": "350",
+ "h": "141",
+ "measuredW": "100",
+ "measuredH": "70",
+ "x": "0",
+ "y": "0"
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "314",
+ "measuredH": "25",
+ "x": "14",
+ "y": "17",
+ "properties": {
+ "size": "17",
+ "text": "Find the detailed version of this roadmap"
+ }
+ },
+ {
+ "ID": "2",
+ "typeID": "Label",
+ "zOrder": "2",
+ "measuredW": "319",
+ "measuredH": "25",
+ "x": "14",
+ "y": "45",
+ "properties": {
+ "size": "17",
+ "text": "along with resources and other roadmaps"
+ }
+ },
+ {
+ "ID": "3",
+ "typeID": "__group__",
+ "zOrder": "3",
+ "measuredW": "320",
+ "measuredH": "45",
+ "w": "320",
+ "h": "45",
+ "x": "15",
+ "y": "81",
+ "properties": {
+ "controlName": "ext_link:roadmap.sh"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Canvas",
+ "zOrder": "0",
+ "w": "320",
+ "h": "45",
+ "measuredW": "100",
+ "measuredH": "70",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "borderColor": "4273622",
+ "color": "4273622"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "105",
+ "measuredH": "28",
+ "x": "141",
+ "y": "8",
+ "properties": {
+ "color": "16777215",
+ "size": "20",
+ "text": "roadmap.sh"
+ }
+ },
+ {
+ "ID": "2",
+ "typeID": "Label",
+ "zOrder": "2",
+ "measuredW": "45",
+ "measuredH": "28",
+ "x": "66",
+ "y": "8",
+ "properties": {
+ "color": "16777215",
+ "size": "20",
+ "text": "https"
+ }
+ },
+ {
+ "ID": "3",
+ "typeID": "Label",
+ "zOrder": "3",
+ "measuredW": "5",
+ "measuredH": "28",
+ "x": "113",
+ "y": "8",
+ "properties": {
+ "bold": "true",
+ "color": "16777215",
+ "size": "20",
+ "text": ":"
+ }
+ },
+ {
+ "ID": "4",
+ "typeID": "Label",
+ "zOrder": "4",
+ "measuredW": "10",
+ "measuredH": "28",
+ "x": "120",
+ "y": "9",
+ "properties": {
+ "color": "16777215",
+ "size": "20",
+ "text": "/"
+ }
+ },
+ {
+ "ID": "5",
+ "typeID": "Label",
+ "zOrder": "5",
+ "measuredW": "10",
+ "measuredH": "28",
+ "x": "128",
+ "y": "9",
+ "properties": {
+ "color": "16777215",
+ "size": "20",
+ "text": "/"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "3",
+ },
+ {
+ "ID": "1196",
"typeID": "__group__",
- "zOrder": "3",
- "measuredW": "320",
- "measuredH": "45",
- "w": "320",
- "h": "45",
- "x": "15",
- "y": "81",
- "properties": {
- "controlName": "ext_link:roadmap.sh"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Canvas",
- "zOrder": "0",
- "w": "320",
- "h": "45",
- "measuredW": "100",
- "measuredH": "70",
- "x": "0",
- "y": "0",
- "properties": {
- "borderColor": "4273622",
- "color": "4273622"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "105",
- "measuredH": "28",
- "x": "141",
- "y": "8",
- "properties": {
- "color": "16777215",
- "size": "20",
- "text": "roadmap.sh"
- }
- },
- {
- "ID": "2",
- "typeID": "Label",
- "zOrder": "2",
- "measuredW": "45",
- "measuredH": "28",
- "x": "66",
- "y": "8",
- "properties": {
- "color": "16777215",
- "size": "20",
- "text": "https"
- }
- },
- {
- "ID": "3",
- "typeID": "Label",
- "zOrder": "3",
- "measuredW": "5",
- "measuredH": "28",
- "x": "113",
- "y": "8",
- "properties": {
- "bold": "true",
- "color": "16777215",
- "size": "20",
- "text": ":"
- }
- },
- {
- "ID": "4",
- "typeID": "Label",
- "zOrder": "4",
- "measuredW": "10",
- "measuredH": "28",
- "x": "120",
- "y": "9",
- "properties": {
- "color": "16777215",
- "size": "20",
- "text": "/"
- }
- },
- {
- "ID": "5",
- "typeID": "Label",
- "zOrder": "5",
- "measuredW": "10",
- "measuredH": "28",
- "x": "128",
- "y": "9",
- "properties": {
- "color": "16777215",
- "size": "20",
- "text": "/"
- }
- }
- ]
- }
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3633",
- "typeID": "__group__",
- "zOrder": "36",
- "measuredW": "295",
- "measuredH": "50",
- "w": "295",
- "h": "50",
- "x": "1162",
- "y": "954",
- "properties": {
- "controlName": "100-programming-fundamentals"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ "zOrder": "36",
+ "measuredW": "295",
+ "measuredH": "50",
"w": "295",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1101",
+ "y": "701",
"properties": {
- "color": "16776960"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "217",
- "measuredH": "25",
- "x": "39",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Programming Fundamentals"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3634",
- "typeID": "Arrow",
- "zOrder": "37",
- "w": "3",
- "h": "1",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1858",
- "y": "839",
- "properties": {
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "16777215",
- "p0": {
- "x": 0.14652915468354877,
- "y": 0.452028801972574
- },
- "p1": {
- "x": 0.47345427259831346,
- "y": -0.00011162392477928299
- },
- "p2": {
- "x": 2.7298768229543384,
- "y": 0.452028801972574
- }
- }
- },
- {
- "ID": "3635",
- "typeID": "Arrow",
- "zOrder": "38",
- "w": "3",
- "h": "1",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1379",
- "y": "647",
- "properties": {
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "16777215",
- "p0": {
- "x": 0.14652915468354877,
- "y": 0.452028801972574
- },
- "p1": {
- "x": 0.47345427259831346,
- "y": -0.00011162392477928299
- },
- "p2": {
- "x": 2.7298768229543384,
- "y": 0.452028801972574
- }
- }
- },
- {
- "ID": "3636",
- "typeID": "__group__",
- "zOrder": "39",
- "measuredW": "163",
- "measuredH": "49",
- "w": "163",
- "h": "49",
- "x": "1543",
- "y": "877",
- "properties": {
- "controlName": "100-programming-fundamentals:python"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ "controlName": "100-programming-fundamentals"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "295",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "217",
+ "measuredH": "25",
+ "x": "39",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Programming Fundamentals"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "1197",
+ "typeID": "Arrow",
+ "zOrder": "37",
+ "w": "3",
+ "h": "1",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1797",
+ "y": "586",
+ "properties": {
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "16777215",
+ "p0": {
+ "x": 0.14652915468354877,
+ "y": 0.452028801972574
+ },
+ "p1": {
+ "x": 0.47345427259831346,
+ "y": -0.00011162392477928299
+ },
+ "p2": {
+ "x": 2.7298768229543384,
+ "y": 0.452028801972574
+ }
+ }
+ },
+ {
+ "ID": "1198",
+ "typeID": "Arrow",
+ "zOrder": "38",
+ "w": "3",
+ "h": "1",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1318",
+ "y": "394",
+ "properties": {
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "16777215",
+ "p0": {
+ "x": 0.14652915468354877,
+ "y": 0.452028801972574
+ },
+ "p1": {
+ "x": 0.47345427259831346,
+ "y": -0.00011162392477928299
+ },
+ "p2": {
+ "x": 2.7298768229543384,
+ "y": 0.452028801972574
+ }
+ }
+ },
+ {
+ "ID": "1199",
+ "typeID": "__group__",
+ "zOrder": "39",
+ "measuredW": "163",
+ "measuredH": "49",
"w": "163",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1482",
+ "y": "624",
"properties": {
- "color": "16770457"
+ "controlName": "100-programming-fundamentals:python"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "163",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "53",
+ "measuredH": "25",
+ "x": "55",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Python"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "53",
- "measuredH": "25",
- "x": "55",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Python"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3637",
- "typeID": "__group__",
- "zOrder": "40",
- "measuredW": "163",
- "measuredH": "49",
- "w": "163",
- "h": "49",
- "x": "1543",
- "y": "931",
- "properties": {
- "controlName": "101-programming-fundamentals:go"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1200",
+ "typeID": "__group__",
+ "zOrder": "40",
+ "measuredW": "163",
+ "measuredH": "49",
"w": "163",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1482",
+ "y": "678",
"properties": {
- "color": "16770457"
+ "controlName": "102-programming-fundamentals:golang"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "163",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "23",
+ "measuredH": "25",
+ "x": "70",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Go"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "23",
- "measuredH": "25",
- "x": "70",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Go"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3638",
- "typeID": "__group__",
- "zOrder": "41",
- "measuredW": "172",
- "measuredH": "50",
- "w": "172",
- "h": "50",
- "x": "1296",
- "y": "1338",
- "properties": {
- "controlName": "103-containerization"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1201",
+ "typeID": "__group__",
+ "zOrder": "41",
+ "measuredW": "172",
+ "measuredH": "50",
"w": "172",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1235",
+ "y": "1085",
"properties": {
- "color": "16776960"
+ "controlName": "103-containerization"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "172",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "126",
+ "measuredH": "25",
+ "x": "23",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Containerization"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "126",
- "measuredH": "25",
- "x": "23",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Containerization"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3639",
- "typeID": "__group__",
- "zOrder": "42",
- "measuredW": "164",
- "measuredH": "49",
- "w": "164",
- "h": "49",
- "x": "1545",
- "y": "1309",
- "properties": {
- "controlName": "100-containerization:docker"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1202",
+ "typeID": "__group__",
+ "zOrder": "42",
+ "measuredW": "164",
+ "measuredH": "49",
"w": "164",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1484",
+ "y": "1056",
"properties": {
- "color": "16770457"
+ "controlName": "100-containerization:docker"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "164",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "56",
+ "measuredH": "25",
+ "x": "54",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Docker"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "56",
- "measuredH": "25",
- "x": "54",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Docker"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3640",
- "typeID": "__group__",
- "zOrder": "43",
- "measuredW": "164",
- "measuredH": "49",
- "w": "164",
- "h": "49",
- "x": "1545",
- "y": "1363",
- "properties": {
- "controlName": "101-containerization:kubernetes"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1203",
+ "typeID": "__group__",
+ "zOrder": "43",
+ "measuredW": "164",
+ "measuredH": "49",
"w": "164",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1484",
+ "y": "1110",
"properties": {
- "color": "16770457"
+ "controlName": "101-containerization:kubernetes"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "164",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "90",
+ "measuredH": "25",
+ "x": "37",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Kubernetes"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "90",
- "measuredH": "25",
- "x": "37",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Kubernetes"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3641",
- "typeID": "__group__",
- "zOrder": "44",
- "measuredW": "305",
- "measuredH": "50",
- "w": "305",
- "h": "50",
- "x": "915",
- "y": "1740",
- "properties": {
- "controlName": "106-mlops-principles"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1204",
+ "typeID": "__group__",
+ "zOrder": "44",
+ "measuredW": "305",
+ "measuredH": "50",
"w": "305",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "854",
+ "y": "1487",
"properties": {
- "color": "16776960"
+ "controlName": "106-mlops-principles"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "305",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "136",
+ "measuredH": "25",
+ "x": "85",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "MLOps Principles"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "136",
- "measuredH": "25",
- "x": "85",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "MLOps Principles"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3642",
- "typeID": "__group__",
- "zOrder": "45",
- "measuredW": "299",
- "measuredH": "50",
- "w": "299",
- "h": "50",
- "x": "914",
- "y": "1850",
- "properties": {
- "controlName": "107-mlops-components"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1205",
+ "typeID": "__group__",
+ "zOrder": "45",
+ "measuredW": "299",
+ "measuredH": "50",
"w": "299",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "853",
+ "y": "1597",
"properties": {
- "color": "16776960"
+ "controlName": "107-mlops-components"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "299",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "158",
+ "measuredH": "25",
+ "x": "71",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "MLOps Components"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "158",
- "measuredH": "25",
- "x": "71",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "MLOps Components"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3643",
- "typeID": "__group__",
- "zOrder": "46",
- "measuredW": "357",
- "measuredH": "49",
- "w": "357",
- "h": "49",
- "x": "1387",
- "y": "1689",
- "properties": {
- "controlName": "100-mlops-components:version-control"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1206",
+ "typeID": "__group__",
+ "zOrder": "46",
+ "measuredW": "357",
+ "measuredH": "49",
"w": "357",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1326",
+ "y": "1436",
"properties": {
- "color": "16770457"
+ "controlName": "100-mlops-components:version-control"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "357",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "118",
+ "measuredH": "25",
+ "x": "120",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Version Control"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "118",
- "measuredH": "25",
- "x": "120",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Version Control"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3644",
- "typeID": "__group__",
- "zOrder": "47",
- "measuredW": "357",
- "measuredH": "49",
- "w": "357",
- "h": "49",
- "x": "1387",
- "y": "1743",
- "properties": {
- "controlName": "101-mlops-components:ci-cd"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1207",
+ "typeID": "__group__",
+ "zOrder": "47",
+ "measuredW": "357",
+ "measuredH": "49",
"w": "357",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1326",
+ "y": "1490",
"properties": {
- "color": "16770457"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "59",
- "measuredH": "25",
- "x": "149",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "CI / CD"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3645",
- "typeID": "__group__",
- "zOrder": "48",
- "measuredW": "358",
- "measuredH": "49",
- "w": "358",
- "h": "49",
- "x": "1387",
- "y": "1797",
- "properties": {
- "controlName": "102-mlops-components:orchestration"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
- "w": "358",
- "h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
- "properties": {
- "color": "16770457"
+ "controlName": "101-mlops-components:ci-cd"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "357",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "59",
+ "measuredH": "25",
+ "x": "149",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "CI / CD"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "105",
- "measuredH": "25",
- "x": "126",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Orchestration"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3646",
- "typeID": "__group__",
- "zOrder": "49",
- "measuredW": "358",
- "measuredH": "49",
- "w": "358",
- "h": "49",
- "x": "1387",
- "y": "1851",
- "properties": {
- "controlName": "103-mlops-components:experiment-tracking"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1208",
+ "typeID": "__group__",
+ "zOrder": "48",
+ "measuredW": "358",
+ "measuredH": "49",
"w": "358",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1326",
+ "y": "1544",
"properties": {
- "color": "16770457"
+ "controlName": "102-mlops-components:orchestration"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "358",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "105",
+ "measuredH": "25",
+ "x": "126",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Orchestration"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "313",
- "measuredH": "25",
- "x": "22",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Experiment Tracking and Model Registry"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3647",
- "typeID": "__group__",
- "zOrder": "50",
- "measuredW": "358",
- "measuredH": "49",
- "w": "358",
- "h": "49",
- "x": "1387",
- "y": "1905",
- "properties": {
- "controlName": "104-mlops-components:data-lineage"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1209",
+ "typeID": "__group__",
+ "zOrder": "49",
+ "measuredW": "358",
+ "measuredH": "49",
"w": "358",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1326",
+ "y": "1598",
"properties": {
- "color": "16770457"
+ "controlName": "103-mlops-components:experiment-tracking"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "358",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "313",
+ "measuredH": "25",
+ "x": "22",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Experiment Tracking and Model Registry"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "256",
- "measuredH": "25",
- "x": "51",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Data Lineage and Feature Stores"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3648",
- "typeID": "__group__",
- "zOrder": "51",
- "measuredW": "358",
- "measuredH": "49",
- "w": "358",
- "h": "49",
- "x": "1387",
- "y": "1959",
- "properties": {
- "controlName": "105-mlops-components:model-training"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1210",
+ "typeID": "__group__",
+ "zOrder": "50",
+ "measuredW": "358",
+ "measuredH": "49",
"w": "358",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1326",
+ "y": "1652",
"properties": {
- "color": "16770457"
+ "controlName": "104-mlops-components:data-lineage"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "358",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "256",
+ "measuredH": "25",
+ "x": "51",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Data Lineage and Feature Stores"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "210",
- "measuredH": "25",
- "x": "74",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Model Training and Serving"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3649",
- "typeID": "__group__",
- "zOrder": "52",
- "measuredW": "358",
- "measuredH": "49",
- "w": "358",
- "h": "49",
- "x": "1387",
- "y": "2014",
- "properties": {
- "controlName": "106-mlops-components:monitoring"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1211",
+ "typeID": "__group__",
+ "zOrder": "51",
+ "measuredW": "358",
+ "measuredH": "49",
"w": "358",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1326",
+ "y": "1706",
"properties": {
- "color": "16770457"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "220",
- "measuredH": "25",
- "x": "69",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Monitoring and Observability"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3650",
- "typeID": "__group__",
- "zOrder": "53",
- "measuredW": "473",
- "measuredH": "147",
- "w": "473",
- "h": "147",
- "x": "610",
- "y": "670",
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Canvas",
- "zOrder": "0",
- "w": "473",
- "h": "147",
- "measuredW": "100",
- "measuredH": "70",
- "x": "0",
- "y": "0"
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "238",
- "measuredH": "26",
- "x": "21",
- "y": "65",
- "properties": {
- "size": "18",
- "text": "This roadmap was created by"
- }
- },
- {
- "ID": "2",
- "typeID": "Label",
- "zOrder": "2",
- "measuredW": "37",
- "measuredH": "26",
- "x": "21",
- "y": "97",
- "properties": {
- "size": "18",
- "text": "from"
+ "controlName": "105-mlops-components:model-training"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "358",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "210",
+ "measuredH": "25",
+ "x": "74",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Model Training and Serving"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "6",
+ },
+ {
+ "ID": "1212",
"typeID": "__group__",
- "zOrder": "3",
- "measuredW": "151",
- "measuredH": "26",
- "w": "151",
- "h": "26",
- "x": "265",
- "y": "65",
- "properties": {
- "controlName": "ext_link:bit.ly/maria-mlops"
+ "zOrder": "52",
+ "measuredW": "358",
+ "measuredH": "49",
+ "w": "358",
+ "h": "49",
+ "x": "1326",
+ "y": "1761",
+ "properties": {
+ "controlName": "106-mlops-components:monitoring"
},
"children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Label",
- "zOrder": "0",
- "measuredW": "151",
- "measuredH": "26",
- "x": "0",
- "y": "0",
- "properties": {
- "size": "18",
- "color": "10027263",
- "text": "Maria Vechtomova"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "8",
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "358",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "220",
+ "measuredH": "25",
+ "x": "69",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Monitoring and Observability"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "1213",
"typeID": "__group__",
- "zOrder": "4",
- "measuredW": "148",
- "measuredH": "26",
- "w": "148",
- "h": "26",
- "x": "65",
- "y": "97",
- "properties": {
- "controlName": "ext_link:bit.ly/marvelousmlops-mlops"
- },
+ "zOrder": "53",
+ "measuredW": "473",
+ "measuredH": "147",
+ "w": "473",
+ "h": "147",
+ "x": "549",
+ "y": "417",
"children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Label",
- "zOrder": "0",
- "measuredW": "148",
- "measuredH": "26",
- "x": "0",
- "y": "0",
- "properties": {
- "color": "10027263",
- "size": "18",
- "text": "Marvelous MLOps"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "9",
- "typeID": "Label",
- "zOrder": "5",
- "measuredW": "166",
- "measuredH": "26",
- "x": "220",
- "y": "97",
- "properties": {
- "size": "18",
- "text": ". Do check them out!"
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Canvas",
+ "zOrder": "0",
+ "w": "473",
+ "h": "147",
+ "measuredW": "100",
+ "measuredH": "70",
+ "x": "0",
+ "y": "0"
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "238",
+ "measuredH": "26",
+ "x": "21",
+ "y": "65",
+ "properties": {
+ "size": "18",
+ "text": "This roadmap was created by"
+ }
+ },
+ {
+ "ID": "2",
+ "typeID": "Label",
+ "zOrder": "2",
+ "measuredW": "37",
+ "measuredH": "26",
+ "x": "21",
+ "y": "97",
+ "properties": {
+ "size": "18",
+ "text": "from"
+ }
+ },
+ {
+ "ID": "6",
+ "typeID": "__group__",
+ "zOrder": "3",
+ "measuredW": "151",
+ "measuredH": "26",
+ "w": "151",
+ "h": "26",
+ "x": "265",
+ "y": "65",
+ "properties": {
+ "controlName": "ext_link:bit.ly/maria-mlops"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Label",
+ "zOrder": "0",
+ "measuredW": "151",
+ "measuredH": "26",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "size": "18",
+ "color": "10027263",
+ "text": "Maria Vechtomova"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "8",
+ "typeID": "__group__",
+ "zOrder": "4",
+ "measuredW": "148",
+ "measuredH": "26",
+ "w": "148",
+ "h": "26",
+ "x": "65",
+ "y": "97",
+ "properties": {
+ "controlName": "ext_link:bit.ly/marvelousmlops-mlops"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Label",
+ "zOrder": "0",
+ "measuredW": "148",
+ "measuredH": "26",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "10027263",
+ "size": "18",
+ "text": "Marvelous MLOps"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "9",
+ "typeID": "Label",
+ "zOrder": "5",
+ "measuredW": "166",
+ "measuredH": "26",
+ "x": "220",
+ "y": "97",
+ "properties": {
+ "size": "18",
+ "text": ". Do check them out!"
+ }
+ },
+ {
+ "ID": "10",
+ "typeID": "Label",
+ "zOrder": "6",
+ "measuredW": "163",
+ "measuredH": "32",
+ "x": "21",
+ "y": "23",
+ "properties": {
+ "size": "24",
+ "text": "Special thanks!"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "10",
- "typeID": "Label",
- "zOrder": "6",
- "measuredW": "163",
- "measuredH": "32",
- "x": "21",
- "y": "23",
- "properties": {
- "size": "24",
- "text": "Special thanks!"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3651",
- "typeID": "__group__",
- "zOrder": "54",
- "measuredW": "299",
- "measuredH": "50",
- "w": "299",
- "h": "50",
- "x": "1306",
- "y": "1574",
- "properties": {
- "controlName": "104-ml-fundamentals"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1214",
+ "typeID": "__group__",
+ "zOrder": "54",
+ "measuredW": "299",
+ "measuredH": "50",
"w": "299",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1245",
+ "y": "1321",
"properties": {
- "color": "16776960"
+ "controlName": "104-ml-fundamentals"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "299",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "253",
+ "measuredH": "25",
+ "x": "23",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Machine Learning Fundamentals"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "253",
- "measuredH": "25",
- "x": "23",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Machine Learning Fundamentals"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3652",
- "typeID": "__group__",
- "zOrder": "55",
- "measuredW": "299",
- "measuredH": "50",
- "w": "299",
- "h": "50",
- "x": "918",
- "y": "2007",
- "properties": {
- "controlName": "108-infra-as-code"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1215",
+ "typeID": "__group__",
+ "zOrder": "55",
+ "measuredW": "299",
+ "measuredH": "50",
"w": "299",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
- "properties": {
- "color": "16776960"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "174",
- "measuredH": "25",
- "x": "63",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Infrastructure as Code"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3653",
- "typeID": "__group__",
- "zOrder": "56",
- "measuredW": "461",
- "measuredH": "127",
- "w": "461",
- "h": "127",
- "x": "610",
- "y": "1148",
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "Label",
- "zOrder": "0",
- "measuredW": "267",
- "measuredH": "32",
- "x": "0",
- "y": "0",
+ "x": "857",
+ "y": "1754",
"properties": {
- "size": "24",
- "text": "ML vs MLOps Engineers"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "460",
- "measuredH": "26",
- "x": "1",
- "y": "41",
- "properties": {
- "size": "18",
- "text": "ML engineers develop models; MLOps engineers deploy"
+ "controlName": "108-infra-as-code"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "299",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "174",
+ "measuredH": "25",
+ "x": "63",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Infrastructure as Code"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "2",
- "typeID": "Label",
- "zOrder": "2",
- "measuredW": "449",
- "measuredH": "26",
- "x": "1",
- "y": "71",
- "properties": {
- "size": "18",
- "text": "and manage them in production, ensuring reliability and"
+ },
+ {
+ "ID": "1216",
+ "typeID": "__group__",
+ "zOrder": "56",
+ "measuredW": "461",
+ "measuredH": "127",
+ "w": "461",
+ "h": "127",
+ "x": "549",
+ "y": "895",
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "Label",
+ "zOrder": "0",
+ "measuredW": "267",
+ "measuredH": "32",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "size": "24",
+ "text": "ML vs MLOps Engineers"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "460",
+ "measuredH": "26",
+ "x": "1",
+ "y": "41",
+ "properties": {
+ "size": "18",
+ "text": "ML engineers develop models; MLOps engineers deploy"
+ }
+ },
+ {
+ "ID": "2",
+ "typeID": "Label",
+ "zOrder": "2",
+ "measuredW": "449",
+ "measuredH": "26",
+ "x": "1",
+ "y": "71",
+ "properties": {
+ "size": "18",
+ "text": "and manage them in production, ensuring reliability and"
+ }
+ },
+ {
+ "ID": "3",
+ "typeID": "Label",
+ "zOrder": "3",
+ "measuredW": "81",
+ "measuredH": "26",
+ "x": "1",
+ "y": "101",
+ "properties": {
+ "size": "18",
+ "text": "scalability."
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "3",
- "typeID": "Label",
- "zOrder": "3",
- "measuredW": "81",
- "measuredH": "26",
- "x": "1",
- "y": "101",
- "properties": {
- "size": "18",
- "text": "scalability."
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3654",
- "typeID": "__group__",
- "zOrder": "57",
- "measuredW": "295",
- "measuredH": "49",
- "w": "295",
- "h": "49",
- "x": "1162",
- "y": "1108",
- "properties": {
- "controlName": "101-version-control-systems"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1217",
+ "typeID": "__group__",
+ "zOrder": "57",
+ "measuredW": "295",
+ "measuredH": "49",
"w": "295",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1101",
+ "y": "855",
"properties": {
- "color": "16776960"
+ "controlName": "101-version-control-systems"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "295",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "186",
+ "measuredH": "25",
+ "x": "55",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Version Control Systems"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "186",
- "measuredH": "25",
- "x": "55",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Version Control Systems"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3655",
- "typeID": "__group__",
- "zOrder": "58",
- "measuredW": "205",
- "measuredH": "50",
- "w": "205",
- "h": "50",
- "x": "915",
- "y": "1328",
- "properties": {
- "controlName": "102-cloud-computing"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1218",
+ "typeID": "__group__",
+ "zOrder": "58",
+ "measuredW": "205",
+ "measuredH": "50",
"w": "205",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "854",
+ "y": "1075",
"properties": {
- "color": "16776960"
+ "controlName": "102-cloud-computing"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "205",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "133",
+ "measuredH": "25",
+ "x": "36",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Cloud Computing"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "133",
- "measuredH": "25",
- "x": "36",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Cloud Computing"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3656",
- "typeID": "__group__",
- "zOrder": "59",
- "measuredW": "237",
- "measuredH": "49",
- "w": "237",
- "h": "49",
- "x": "610",
- "y": "1328",
- "properties": {
- "controlName": "100-cloud-computing:aws-azure-gcp"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1219",
+ "typeID": "__group__",
+ "zOrder": "59",
+ "measuredW": "237",
+ "measuredH": "49",
"w": "237",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "549",
+ "y": "1075",
"properties": {
- "color": "16770457"
+ "controlName": "100-cloud-computing:aws-azure-gcp"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "237",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "149",
+ "measuredH": "25",
+ "x": "44",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "AWS / Azure / GCP"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "149",
- "measuredH": "25",
- "x": "44",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "AWS / Azure / GCP"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3657",
- "typeID": "__group__",
- "zOrder": "60",
- "measuredW": "237",
- "measuredH": "49",
- "w": "237",
- "h": "49",
- "x": "610",
- "y": "1383",
- "properties": {
- "controlName": "101-cloud-computing:cloud-native-ml-services"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1220",
+ "typeID": "__group__",
+ "zOrder": "60",
+ "measuredW": "237",
+ "measuredH": "49",
"w": "237",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "549",
+ "y": "1130",
"properties": {
- "color": "16770457"
+ "controlName": "101-cloud-computing:cloud-native-ml-services"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "237",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "197",
+ "measuredH": "25",
+ "x": "20",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Cloud-native ML Services"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "197",
- "measuredH": "25",
- "x": "20",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Cloud-native ML Services"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3658",
- "typeID": "__group__",
- "zOrder": "61",
- "measuredW": "305",
- "measuredH": "50",
- "w": "305",
- "h": "50",
- "x": "915",
- "y": "1575",
- "properties": {
- "controlName": "105-data-eng-fundamentals"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1221",
+ "typeID": "__group__",
+ "zOrder": "61",
+ "measuredW": "305",
+ "measuredH": "50",
"w": "305",
"h": "50",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "854",
+ "y": "1322",
"properties": {
- "color": "16776960"
+ "controlName": "105-data-eng-fundamentals"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "305",
+ "h": "50",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16776960"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "249",
+ "measuredH": "25",
+ "x": "28",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Data Engineering Fundamentals"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "249",
- "measuredH": "25",
- "x": "28",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Data Engineering Fundamentals"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3659",
- "typeID": "__group__",
- "zOrder": "62",
- "measuredW": "237",
- "measuredH": "49",
- "w": "237",
- "h": "49",
- "x": "610",
- "y": "1524",
- "properties": {
- "controlName": "100-data-eng-fundamentals:data-pipelines"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1222",
+ "typeID": "__group__",
+ "zOrder": "62",
+ "measuredW": "237",
+ "measuredH": "49",
"w": "237",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "549",
+ "y": "1271",
"properties": {
- "color": "16770457"
+ "controlName": "100-data-eng-fundamentals:data-pipelines"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "237",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "112",
+ "measuredH": "25",
+ "x": "63",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Data Pipelines"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "112",
- "measuredH": "25",
- "x": "63",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Data Pipelines"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3660",
- "typeID": "__group__",
- "zOrder": "63",
- "measuredW": "237",
- "measuredH": "49",
- "w": "237",
- "h": "49",
- "x": "610",
- "y": "1579",
- "properties": {
- "controlName": "101-data-eng-fundamentals:data-lakes-warehouses"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1223",
+ "typeID": "__group__",
+ "zOrder": "63",
+ "measuredW": "237",
+ "measuredH": "49",
"w": "237",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "549",
+ "y": "1326",
"properties": {
- "color": "16770457"
+ "controlName": "101-data-eng-fundamentals:data-lakes-warehouses"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "237",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "197",
+ "measuredH": "25",
+ "x": "20",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Data lakes & Warehouses"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "197",
- "measuredH": "25",
- "x": "20",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Data lakes & Warehouses"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3661",
- "typeID": "__group__",
- "zOrder": "64",
- "measuredW": "116",
- "measuredH": "49",
- "w": "116",
- "h": "49",
- "x": "773",
- "y": "1694",
- "properties": {
- "controlName": "102-data-eng-fundamentals:spark"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1224",
+ "typeID": "__group__",
+ "zOrder": "64",
+ "measuredW": "116",
+ "measuredH": "49",
"w": "116",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "712",
+ "y": "1441",
"properties": {
- "color": "16770457"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "45",
- "measuredH": "25",
- "x": "35",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Spark"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3662",
- "typeID": "Arrow",
- "zOrder": "65",
- "w": "3",
- "h": "1",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1071",
- "y": "2273",
- "properties": {
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "color": "16777215",
- "p0": {
- "x": 0.14652915468354877,
- "y": 0.452028801972574
- },
- "p1": {
- "x": 0.47345427259831346,
- "y": -0.00011162392477928299
- },
- "p2": {
- "x": 2.7298768229543384,
- "y": 0.452028801972574
- }
- }
- },
- {
- "ID": "3665",
- "typeID": "__group__",
- "zOrder": "66",
- "measuredW": "163",
- "measuredH": "49",
- "w": "163",
- "h": "49",
- "x": "1543",
- "y": "985",
- "properties": {
- "controlName": "101-programming-fundamentals:bash"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ "controlName": "102-data-eng-fundamentals:spark"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "116",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "45",
+ "measuredH": "25",
+ "x": "35",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Spark"
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "ID": "1225",
+ "typeID": "Arrow",
+ "zOrder": "65",
+ "w": "3",
+ "h": "1",
+ "measuredW": "150",
+ "measuredH": "100",
+ "x": "1010",
+ "y": "2020",
+ "properties": {
+ "direction": "bottom",
+ "leftArrow": "false",
+ "rightArrow": "false",
+ "color": "16777215",
+ "p0": {
+ "x": 0.14652915468354877,
+ "y": 0.452028801972574
+ },
+ "p1": {
+ "x": 0.47345427259831346,
+ "y": -0.00011162392477928299
+ },
+ "p2": {
+ "x": 2.7298768229543384,
+ "y": 0.452028801972574
+ }
+ }
+ },
+ {
+ "ID": "1226",
+ "typeID": "__group__",
+ "zOrder": "66",
+ "measuredW": "163",
+ "measuredH": "49",
"w": "163",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "1482",
+ "y": "732",
"properties": {
- "color": "16770457"
+ "controlName": "101-programming-fundamentals:bash"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "163",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "40",
+ "measuredH": "25",
+ "x": "62",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Bash"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "40",
- "measuredH": "25",
- "x": "62",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Bash"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3666",
- "typeID": "Arrow",
- "zOrder": "2",
- "w": "107",
- "h": "60",
- "measuredW": "150",
- "measuredH": "100",
- "x": "1450",
- "y": "902",
- "properties": {
- "color": "2848996",
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "p0": {
- "x": 106.95319991843417,
- "y": 0.21734292549183465
- },
- "p1": {
- "x": 0.48232779097387135,
- "y": 0.06750593824228049
- },
- "p2": {
- "x": -0.4816074511304578,
- "y": 59.863034899371996
- }
- }
- },
- {
- "ID": "3667",
- "typeID": "__group__",
- "zOrder": "67",
- "measuredW": "111",
- "measuredH": "49",
- "w": "111",
- "h": "49",
- "x": "610",
- "y": "1454",
- "properties": {
- "controlName": "100-data-eng-fundamentals:data-pipelines:airflow"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1227",
+ "typeID": "__group__",
+ "zOrder": "67",
+ "measuredW": "111",
+ "measuredH": "49",
"w": "111",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "549",
+ "y": "1201",
"properties": {
- "color": "16770457"
+ "controlName": "100-data-eng-fundamentals:data-pipelines:airflow"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "111",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "50",
+ "measuredH": "25",
+ "x": "31",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Airflow"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "50",
- "measuredH": "25",
- "x": "31",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Airflow"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3668",
- "typeID": "Arrow",
- "zOrder": "1",
- "w": "1",
- "h": "62",
- "measuredW": "150",
- "measuredH": "100",
- "x": "670",
- "y": "1483",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 0.08850738176079176,
- "y": 62.03857705484643
- },
- "p1": {
- "x": 0.4673783006670681,
- "y": -0.0036060514395746643
- },
- "p2": {
- "x": 0.08850738176079176,
- "y": 0.4180672042343758
- }
- }
- },
- {
- "ID": "3669",
- "typeID": "__group__",
- "zOrder": "68",
- "measuredW": "117",
- "measuredH": "49",
- "w": "117",
- "h": "49",
- "x": "772",
- "y": "1746",
- "properties": {
- "controlName": "103-data-eng-fundamentals:kafka"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1228",
+ "typeID": "__group__",
+ "zOrder": "68",
+ "measuredW": "117",
+ "measuredH": "49",
"w": "117",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "711",
+ "y": "1493",
"properties": {
- "color": "16770457"
+ "controlName": "103-data-eng-fundamentals:kafka"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "117",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "44",
+ "measuredH": "25",
+ "x": "37",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Kafka"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "44",
- "measuredH": "25",
- "x": "37",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Kafka"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3670",
- "typeID": "__group__",
- "zOrder": "69",
- "measuredW": "116",
- "measuredH": "49",
- "w": "116",
- "h": "49",
- "x": "773",
- "y": "1798",
- "properties": {
- "controlName": "104-data-eng-fundamentals:flink"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1229",
+ "typeID": "__group__",
+ "zOrder": "69",
+ "measuredW": "116",
+ "measuredH": "49",
"w": "116",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "712",
+ "y": "1545",
"properties": {
- "color": "16770457"
+ "controlName": "104-data-eng-fundamentals:flink"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "116",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "36",
+ "measuredH": "25",
+ "x": "40",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Flink"
+ }
+ }
+ ]
+ }
}
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "36",
- "measuredH": "25",
- "x": "40",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Flink"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3673",
- "typeID": "__group__",
- "zOrder": "70",
- "measuredW": "237",
- "measuredH": "49",
- "w": "237",
- "h": "49",
- "x": "610",
- "y": "1633",
- "properties": {
- "controlName": "103-data-eng-fundamentals:data-ingestion-architecture"
- },
- "children": {
- "controls": {
- "control": [
- {
- "ID": "0",
- "typeID": "TextArea",
- "zOrder": "0",
+ },
+ {
+ "ID": "1230",
+ "typeID": "__group__",
+ "zOrder": "70",
+ "measuredW": "237",
+ "measuredH": "49",
"w": "237",
"h": "49",
- "measuredW": "200",
- "measuredH": "140",
- "x": "0",
- "y": "0",
+ "x": "549",
+ "y": "1380",
"properties": {
- "color": "16770457"
- }
- },
- {
- "ID": "1",
- "typeID": "Label",
- "zOrder": "1",
- "measuredW": "211",
- "measuredH": "25",
- "x": "13",
- "y": "12",
- "properties": {
- "size": "17",
- "text": "Data Ingestion Architecture"
- }
- }
- ]
- }
- }
- },
- {
- "ID": "3674",
- "typeID": "Arrow",
- "zOrder": "0",
- "w": "92",
- "h": "54",
- "measuredW": "150",
- "measuredH": "100",
- "x": "836",
- "y": "1610",
- "properties": {
- "curvature": "-1",
- "direction": "bottom",
- "leftArrow": "false",
- "rightArrow": "false",
- "stroke": "dotted",
- "color": "10027263",
- "p0": {
- "x": 91.8899475740078,
- "y": 0.1827846917374245
- },
- "p1": {
- "x": 0.47294727744165954,
- "y": -0.11979256698357832
- },
- "p2": {
- "x": -0.12049726552004358,
- "y": 53.973506290230716
- }
- }
- }
- ]
- },
- "attributes": {
- "name": "New Wireframe 1 copy 8",
- "order": 1000000.6428282561,
- "parentID": null,
- "notes": ""
- },
- "branchID": "Master",
- "resourceID": "960B5EDB-5533-4531-9B7D-06B4366EBEAE",
- "mockupH": "1627",
- "mockupW": "1251",
- "measuredW": "1861",
- "measuredH": "2274",
- "version": "1.0"
+ "controlName": "103-data-eng-fundamentals:data-ingestion-architecture"
+ },
+ "children": {
+ "controls": {
+ "control": [
+ {
+ "ID": "0",
+ "typeID": "TextArea",
+ "zOrder": "0",
+ "w": "237",
+ "h": "49",
+ "measuredW": "200",
+ "measuredH": "140",
+ "x": "0",
+ "y": "0",
+ "properties": {
+ "color": "16770457"
+ }
+ },
+ {
+ "ID": "1",
+ "typeID": "Label",
+ "zOrder": "1",
+ "measuredW": "211",
+ "measuredH": "25",
+ "x": "13",
+ "y": "12",
+ "properties": {
+ "size": "17",
+ "text": "Data Ingestion Architecture"
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "attributes": {
+ "name": "New Wireframe 1",
+ "order": 1000000,
+ "parentID": null,
+ "notes": ""
+ },
+ "branchID": "Master",
+ "resourceID": "5A30BFEF-684E-429E-9C5D-BAAAC1A8339A",
+ "mockupH": "1627",
+ "mockupW": "1251",
+ "measuredW": "1800",
+ "measuredH": "2021",
+ "version": "1.0",
+ "calloutsOffset": {
+ "x": 549,
+ "y": 392.4520288019726
+ }
},
"groupOffset": {
- "x": 0,
- "y": 0
+ "x": 0,
+ "y": 0
},
"dependencies": [],
- "projectID": "file:///Users/kamrify/Desktop/New%20Roadmaps/Android%20Roadmap.bmpr"
+ "projectID": "file:///Users/dan/Library/Application%20Support/Balsamiq%20Wireframes/UnsavedFiles/New%20Project%201.bmpr"
}
\ No newline at end of file
diff --git a/src/data/roadmaps/react-native/content/104-core-components/100-text.md b/src/data/roadmaps/react-native/content/104-core-components/100-text.md
index 58d26ffbdfaf..6d6841c103b3 100644
--- a/src/data/roadmaps/react-native/content/104-core-components/100-text.md
+++ b/src/data/roadmaps/react-native/content/104-core-components/100-text.md
@@ -36,4 +36,8 @@ const styles = StyleSheet.create({
export default SimpleText;
```
-In this example, we create a `Text` element with some text content, apply styling, limit it to two lines, and add an `onPress` event.
\ No newline at end of file
+In this example, we create a `Text` element with some text content, apply styling, limit it to two lines, and add an `onPress` event.
+
+Visit the following resources to learn more:
+
+- [Text - React Native](https://reactnative.dev/docs/text)
diff --git a/src/data/roadmaps/react-native/content/104-core-components/104-image-background.md b/src/data/roadmaps/react-native/content/104-core-components/104-image-background.md
index 2b1d88c324cd..d08bd0cc6b92 100644
--- a/src/data/roadmaps/react-native/content/104-core-components/104-image-background.md
+++ b/src/data/roadmaps/react-native/content/104-core-components/104-image-background.md
@@ -35,4 +35,8 @@ const styles = StyleSheet.create({
export default App;
```
-In the above example, `source` prop is used to add the image URL, `style` prop for adding some custom styling, and `resizeMode` to define how the image should stretch to fill the available space. The `Text` component inside the `ImageBackground` is then rendered on top of the image.
\ No newline at end of file
+In the above example, `source` prop is used to add the image URL, `style` prop for adding some custom styling, and `resizeMode` to define how the image should stretch to fill the available space. The `Text` component inside the `ImageBackground` is then rendered on top of the image.
+
+For more information and details, you can refer to the React Native docs:
+
+- [Image Background - React Native](https://reactnative.dev/docs/imagebackground)
diff --git a/src/data/roadmaps/rust/content/103-modules-and-crates/100-code-organization.md b/src/data/roadmaps/rust/content/103-modules-and-crates/100-code-organization.md
index 0987a4aa7ae7..eea645e201f3 100644
--- a/src/data/roadmaps/rust/content/103-modules-and-crates/100-code-organization.md
+++ b/src/data/roadmaps/rust/content/103-modules-and-crates/100-code-organization.md
@@ -1,3 +1,8 @@
# Code Organization and Namespacing
-In Rust, the fundamental structure for organizing your code is through using a **module** system and **crates**. A module in Rust allows grouping of related function definitions and struct definitions in a named scope. It’s defined using the `mod` keyword. The modules can also be nested and make code more concise, readable, and manageable. On the other hand, a **crate** is a binary or a library project in Rust. It's the largest compilation unit of Rust. It's a tree of modules that produces a library or executable. The crate root is a source file which the Rust compiler starts from and makes up the root module of your crate (e.g. `main.rs` or `lib.rs`).
\ No newline at end of file
+In Rust, the fundamental structure for organizing your code is through using a **module** system and **crates**. A module in Rust allows grouping of related function definitions and struct definitions in a named scope. It’s defined using the `mod` keyword. The modules can also be nested and make code more concise, readable, and manageable. On the other hand, a **crate** is a binary or a library project in Rust. It's the largest compilation unit of Rust. It's a tree of modules that produces a library or executable. The crate root is a source file which the Rust compiler starts from and makes up the root module of your crate (e.g. `main.rs` or `lib.rs`).
+
+Visit the following resources to learn more:
+
+- [Rust by Example: Modules](https://doc.rust-lang.org/rust-by-example/mod.html)
+- [The Rust Reference: Namespaces](https://doc.rust-lang.org/reference/names/namespaces.html)
diff --git a/src/data/roadmaps/rust/content/103-modules-and-crates/101-dependency-mgmt.md b/src/data/roadmaps/rust/content/103-modules-and-crates/101-dependency-mgmt.md
index 0f15c0738818..14985f5d42b0 100644
--- a/src/data/roadmaps/rust/content/103-modules-and-crates/101-dependency-mgmt.md
+++ b/src/data/roadmaps/rust/content/103-modules-and-crates/101-dependency-mgmt.md
@@ -1,3 +1,8 @@
# Dependency Management with Cargo.toml
-Dependency management in Rust is handled by a tool called Cargo. Cargo helps you manage your Rust projects, providing functionalities for building your code, downloading the libraries your project depends on, and building those libraries. These libraries are called *crates*. A crate is a package of Rust code. In your `Cargo.toml`, you list your dependencies in a [dependencies] section. You list libraries from crates.io by their name and version number. Cargo understands Semantic Versioning, a standard for writing version numbers.
\ No newline at end of file
+Dependency management in Rust is handled by a tool called Cargo. Cargo helps you manage your Rust projects, providing functionalities for building your code, downloading the libraries your project depends on, and building those libraries. These libraries are called _crates_. A crate is a package of Rust code. In your `Cargo.toml`, you list your dependencies in a [dependencies] section. You list libraries from crates.io by their name and version number. Cargo understands Semantic Versioning, a standard for writing version numbers.
+
+Visit the following resources to learn more:
+
+- [Rust Blog: Cargo](https://blog.rust-lang.org/2016/05/05/cargo-pillars.html)
+- [Rust by Example: Dependencies](https://doc.rust-lang.org/rust-by-example/cargo/deps.html)
diff --git a/src/data/roadmaps/rust/content/103-modules-and-crates/102-publishing.md b/src/data/roadmaps/rust/content/103-modules-and-crates/102-publishing.md
index e173c98ddbcb..cb568a090ab2 100644
--- a/src/data/roadmaps/rust/content/103-modules-and-crates/102-publishing.md
+++ b/src/data/roadmaps/rust/content/103-modules-and-crates/102-publishing.md
@@ -1,3 +1,7 @@
-# Publishing to crates.io
+# Publishing on crates.io
-Publishing in Rust involves packaging up your library or executable and making it available for others to use. To publish a crate, you'll need to create an account on [crates.io](https://crates.io/), the Rust package repository. If you haven't already, you'll need to format your project in a specific way, detailing needed information in a `Cargo.toml` file. Then, use the command `cargo publish` to upload your crate to the registry. Updates to your crate can be published with the same command, but be mindful that crates.io does not allow you to delete or overwrite an existing version of a crate. Make sure that everything is in order before you publish!
\ No newline at end of file
+Publishing in Rust involves packaging up your library or executable and making it available for others to use. To publish a crate, you'll need to create an account on [crates.io](https://crates.io/), the Rust package repository. If you haven't already, you'll need to format your project in a specific way, detailing needed information in a `Cargo.toml` file. Then, use the command `cargo publish` to upload your crate to the registry. Updates to your crate can be published with the same command, but be mindful that crates.io does not allow you to delete or overwrite an existing version of a crate. Make sure that everything is in order before you publish!
+
+Visit the following resources to learn more:
+
+- [The Cargo Book: Publishing on crates.io](https://doc.rust-lang.org/cargo/reference/publishing.html)
diff --git a/src/data/roadmaps/rust/content/103-modules-and-crates/index.md b/src/data/roadmaps/rust/content/103-modules-and-crates/index.md
index 2b6db44dd77e..b65089361989 100644
--- a/src/data/roadmaps/rust/content/103-modules-and-crates/index.md
+++ b/src/data/roadmaps/rust/content/103-modules-and-crates/index.md
@@ -1,3 +1,7 @@
# Modules and Crates
-In Rust, a module is a namespace that contains definitions of functions or types. You can choose to make the definitions visible in other modules or not. This provides a method of encapsulation for your code. On the other hand, a crate is a binary or library. It is the smallest unit of compilation in Rust. A crate can link to other crates, and it is composed of many modules. Therefore, the module system allows for code organization within a crate, and the crate system allows for building and sharing functionality among multiple projects.
\ No newline at end of file
+In Rust, a module is a namespace that contains definitions of functions or types. You can choose to make the definitions visible in other modules or not. This provides a method of encapsulation for your code. On the other hand, a crate is a binary or library. It is the smallest unit of compilation in Rust. A crate can link to other crates, and it is composed of many modules. Therefore, the module system allows for code organization within a crate, and the crate system allows for building and sharing functionality among multiple projects.
+
+Visit the following resources to learn more:
+
+- [Rust Book: Managing Growing Projects with Packages, Crates, and Modules](https://doc.rust-lang.org/book/ch07-00-managing-growing-projects-with-packages-crates-and-modules.html)
diff --git a/src/data/roadmaps/rust/content/105-traits-generics/100-trait-def.md b/src/data/roadmaps/rust/content/105-traits-generics/100-trait-def.md
index 95592beb66ac..97fc85fdd52d 100644
--- a/src/data/roadmaps/rust/content/105-traits-generics/100-trait-def.md
+++ b/src/data/roadmaps/rust/content/105-traits-generics/100-trait-def.md
@@ -1,3 +1,7 @@
# Trait Definitions and Implementations
-A `trait` definition in Rust is a way to define a set of behaviors necessary for a certain type. It is essentially an interface that types can implement. The `trait` def is created using the `trait` keyword followed by its name and the set of methods it includes enclosed in curly brackets. These methods are defined under the trait with their signature but without their implementation. Once a trait is defined, it can be implemented for any data type. Note that the type that this trait applies to is represented by the keyword `Self`. For example, `trait GetName { fn get_name(&self) -> String; }` defines a trait `GetName` with a method `get_name`. This trait can then be implemented for any type that needs the behaviour `get_name`.
\ No newline at end of file
+A `trait` definition in Rust is a way to define a set of behaviors necessary for a certain type. It is essentially an interface that types can implement. The `trait` def is created using the `trait` keyword followed by its name and the set of methods it includes enclosed in curly brackets. These methods are defined under the trait with their signature but without their implementation. Once a trait is defined, it can be implemented for any data type. Note that the type that this trait applies to is represented by the keyword `Self`. For example, `trait GetName { fn get_name(&self) -> String; }` defines a trait `GetName` with a method `get_name`. This trait can then be implemented for any type that needs the behaviour `get_name`.
+
+Visit the following resources to learn more:
+
+- [Rust by Example: Traits](https://doc.rust-lang.org/rust-by-example/trait.html)
diff --git a/src/data/roadmaps/rust/content/105-traits-generics/102-advanced-generics.md b/src/data/roadmaps/rust/content/105-traits-generics/102-advanced-generics.md
index 201a81a269b3..e2a51b71d10d 100644
--- a/src/data/roadmaps/rust/content/105-traits-generics/102-advanced-generics.md
+++ b/src/data/roadmaps/rust/content/105-traits-generics/102-advanced-generics.md
@@ -1,3 +1,8 @@
# Advanced Generics and Type-level Programming
-Advanced generics in Rust offer a powerful set of tools for creating reusable and efficient code. The `where` syntax in generics can be used to specify trait and lifetime bounds, creating a more expressive declaration and avoiding numerous `T: Trait` inline annotations. Additionally, the `
` syntax allows for using dynamically sized types in generics. Advanced generics also allow for defining methods that apply to a subset of variations of generic types using an associated type. Furthermore, this allows for operator overloading through the use of associated types in traits, enhancing flexibility while retaining strong typing. Another advanced use of generics is 'higher kinded types', allowing a type constructor to take another type constructor as a parameter. This is the system Rust uses for handling `Option`, `Result`, and other similar types.
\ No newline at end of file
+Advanced generics in Rust offer a powerful set of tools for creating reusable and efficient code. The `where` syntax in generics can be used to specify trait and lifetime bounds, creating a more expressive declaration and avoiding numerous `T: Trait` inline annotations. Additionally, the `` syntax allows for using dynamically sized types in generics. Advanced generics also allow for defining methods that apply to a subset of variations of generic types using an associated type. Furthermore, this allows for operator overloading through the use of associated types in traits, enhancing flexibility while retaining strong typing. Another advanced use of generics is 'higher kinded types', allowing a type constructor to take another type constructor as a parameter. This is the system Rust uses for handling `Option`, `Result`, and other similar types.
+
+Visit the following resources to learn more:
+
+- [Book: Generics](https://doc.rust-lang.org/book/ch10-01-syntax.html)
+- [Rust by Example: Generics](https://doc.rust-lang.org/rust-by-example/generics.html)
diff --git a/src/data/roadmaps/rust/content/105-traits-generics/index.md b/src/data/roadmaps/rust/content/105-traits-generics/index.md
index 10ac6391f0c9..6c07c5ac5c2e 100644
--- a/src/data/roadmaps/rust/content/105-traits-generics/index.md
+++ b/src/data/roadmaps/rust/content/105-traits-generics/index.md
@@ -1,3 +1,7 @@
# Traits and Generics
-Traits generics are a notable feature in Rust that pertain to defining shared behavior across data types. With them, you can specify placeholder types in trait definitions, letting you abstract over a range of possibilities. They're a means for defining shared behavior -- abstracting over functionality that types can have in common. You can apply traits to generics to constrain the types passed to the generic, hence permitting trait methods to be called on those types. You identify a generic parameter's type by the trait it implements, making it possible to use generic types in the trait methods. In essence, Rust achieves polymorphism through utilizing traits on generics.
\ No newline at end of file
+Traits generics are a notable feature in Rust that pertain to defining shared behavior across data types. With them, you can specify placeholder types in trait definitions, letting you abstract over a range of possibilities. They're a means for defining shared behavior -- abstracting over functionality that types can have in common. You can apply traits to generics to constrain the types passed to the generic, hence permitting trait methods to be called on those types. You identify a generic parameter's type by the trait it implements, making it possible to use generic types in the trait methods. In essence, Rust achieves polymorphism through utilizing traits on generics.
+
+Visit the following resources to learn more:
+
+- [Book: Generic Types, Traits, and Lifetimes](https://doc.rust-lang.org/book/ch10-00-generics.html)
diff --git a/src/data/roadmaps/rust/content/109-async-programming/100-tokio.md b/src/data/roadmaps/rust/content/109-async-programming/100-tokio.md
index f5d606dce10c..7d50ce258d4b 100644
--- a/src/data/roadmaps/rust/content/109-async-programming/100-tokio.md
+++ b/src/data/roadmaps/rust/content/109-async-programming/100-tokio.md
@@ -1,3 +1,8 @@
# Tokio
-Tokio, a Rust framework for developing applications, is used primarily for asynchronous programming that enables you to write asynchronous inputs/output, networking, and other features. Its primary function is to deliver high-performance, reliable, and easy-to-use asynchronous event-driven platform. It is built on the futures library and uses the async/await syntax of Rust for readability purposes. Tokio's 'runtime' provides I/O driver functions, scheduling and timers offering a foundation for asynchronous programming. It is designed to handle a high volume of network connections concurrently, making it ideal for building network applications.
\ No newline at end of file
+Tokio, a Rust framework for developing applications, is used primarily for asynchronous programming that enables you to write asynchronous inputs/output, networking, and other features. Its primary function is to deliver high-performance, reliable, and easy-to-use asynchronous event-driven platform. It is built on the futures library and uses the async/await syntax of Rust for readability purposes. Tokio's 'runtime' provides I/O driver functions, scheduling and timers offering a foundation for asynchronous programming. It is designed to handle a high volume of network connections concurrently, making it ideal for building network applications.
+
+Visit the following resources to learn more:
+
+- [Official Website](https://tokio.rs/)
+- [Docs.rs: Tokio](https://docs.rs/tokio/latest/tokio/)
diff --git a/src/data/roadmaps/rust/content/109-async-programming/101-async-std.md b/src/data/roadmaps/rust/content/109-async-programming/101-async-std.md
index bf650c9a1b14..a57596be0b39 100644
--- a/src/data/roadmaps/rust/content/109-async-programming/101-async-std.md
+++ b/src/data/roadmaps/rust/content/109-async-programming/101-async-std.md
@@ -1,3 +1,7 @@
# async-std
-`async-std` is a Rust library that provides an asynchronous version of the standard library. With the goal of being a drop-in replacement for Rust's standard library, it brings asynchronous programming directly into Rust's native system library, std. The most essential part inside `async-std` is an asynchronous runtime which includes IO and task scheduling. It lets you write asynchronous code that looks like synchronous code without having to worry about using future combinators or remembering to check if futures are ready. This significantly simplifies Rust's asynchronous programming model.
\ No newline at end of file
+`async-std` is a Rust library that provides an asynchronous version of the standard library. With the goal of being a drop-in replacement for Rust's standard library, it brings asynchronous programming directly into Rust's native system library, std. The most essential part inside `async-std` is an asynchronous runtime which includes IO and task scheduling. It lets you write asynchronous code that looks like synchronous code without having to worry about using future combinators or remembering to check if futures are ready. This significantly simplifies Rust's asynchronous programming model.
+
+Visit the following resources to learn more:
+
+- [Docs.rs: async-std](https://docs.rs/async-std/latest/async_std/)
diff --git a/src/data/roadmaps/rust/content/109-async-programming/102-smol.md b/src/data/roadmaps/rust/content/109-async-programming/102-smol.md
index 7d126fc6c47e..6113d0818851 100644
--- a/src/data/roadmaps/rust/content/109-async-programming/102-smol.md
+++ b/src/data/roadmaps/rust/content/109-async-programming/102-smol.md
@@ -1,3 +1,7 @@
# smol
-`smol` is a small, fast, and modern async runtime for Rust programming language. It is built on top of async-std and tokio. With very few lines of code, it allows users to perform tasks such as creating async functions, waiting on a future, creating a timer, among others. Although it is feature-rich, smol keeps its API minimal and clean, making it the go-to choice for many developers working with Rust. It supports async/.await natively and is highly efficient due to its superior scheduling capabilities.
\ No newline at end of file
+`smol` is a small, fast, and modern async runtime for Rust programming language. It is built on top of async-std and tokio. With very few lines of code, it allows users to perform tasks such as creating async functions, waiting on a future, creating a timer, among others. Although it is feature-rich, smol keeps its API minimal and clean, making it the go-to choice for many developers working with Rust. It supports async/.await natively and is highly efficient due to its superior scheduling capabilities.
+
+Visit the following resources to learn more:
+
+- [Docs.rs: smol](https://docs.rs/smol/latest/smol/)
diff --git a/src/data/roadmaps/rust/content/110-networking/100-reqwest.md b/src/data/roadmaps/rust/content/110-networking/100-reqwest.md
index 59174086e7f9..a093fa907c07 100644
--- a/src/data/roadmaps/rust/content/110-networking/100-reqwest.md
+++ b/src/data/roadmaps/rust/content/110-networking/100-reqwest.md
@@ -1,3 +1,7 @@
# reqwest
-`Reqwest` is a Rust library which is designed to make HTTP requests easy and effortless. It offers a mix of convenience methods for both synchronous and asynchronous requests,GET,POST and other HTTP methods. It also supports JSON content and is built on `hyper` for HTTP and `tokio` for asynchronous I/O. This means you can take advantage of the powerful asynchronous features of Rust such as Futures and async/await. Furthermore, `Reqwest` takes care of many tedious aspects of HTTP for you, such as handling cookies and encoding/decoding different formats.
\ No newline at end of file
+`Reqwest` is a Rust library which is designed to make HTTP requests easy and effortless. It offers a mix of convenience methods for both synchronous and asynchronous requests,GET,POST and other HTTP methods. It also supports JSON content and is built on `hyper` for HTTP and `tokio` for asynchronous I/O. This means you can take advantage of the powerful asynchronous features of Rust such as Futures and async/await. Furthermore, `Reqwest` takes care of many tedious aspects of HTTP for you, such as handling cookies and encoding/decoding different formats.
+
+Visit the following resources to learn more:
+
+- [Docs.rs: Reqwest](https://docs.rs/reqwest/latest/reqwest/)
diff --git a/src/data/roadmaps/rust/content/110-networking/101-hyper.md b/src/data/roadmaps/rust/content/110-networking/101-hyper.md
index f456bc8ddb5f..768a60909046 100644
--- a/src/data/roadmaps/rust/content/110-networking/101-hyper.md
+++ b/src/data/roadmaps/rust/content/110-networking/101-hyper.md
@@ -1,3 +1,8 @@
# hyper
-"Hyper" is a fast, safe and concurrent HTTP client and server written in Rust. It uses a non-blocking I/O model for efficient execution, leverages the Tokio platform for event-driven, asynchronous I/O, and includes support for HTTP/2. It has a modular design, allowing you to choose the features you need. Hyper also features a server-side framework for building your own HTTP applications. For security and speed, it comes with native support for HTTP/1 and HTTP/2, and automatically negotiates these protocols. Most importantly, it is designed from the ground up to take advantage of Rust's memory safety and concurrency features.
\ No newline at end of file
+"Hyper" is a fast, safe and concurrent HTTP client and server written in Rust. It uses a non-blocking I/O model for efficient execution, leverages the Tokio platform for event-driven, asynchronous I/O, and includes support for HTTP/2. It has a modular design, allowing you to choose the features you need. Hyper also features a server-side framework for building your own HTTP applications. For security and speed, it comes with native support for HTTP/1 and HTTP/2, and automatically negotiates these protocols. Most importantly, it is designed from the ground up to take advantage of Rust's memory safety and concurrency features.
+
+Visit the following resources to learn more:
+
+- [Official Website](https://hyper.rs/)
+- [Docs.rs: Hyper](https://docs.rs/hyper/latest/hyper/)
diff --git a/src/data/roadmaps/rust/content/110-networking/102-quinn.md b/src/data/roadmaps/rust/content/110-networking/102-quinn.md
index d35993e2ef2d..f946614d0501 100644
--- a/src/data/roadmaps/rust/content/110-networking/102-quinn.md
+++ b/src/data/roadmaps/rust/content/110-networking/102-quinn.md
@@ -1,3 +1,7 @@
# quinn
-`Quinn` is a Rust networking library providing high-level access to the QUIC protocol. It is built on top of the `tokio` runtime and implements the QUIC transport protocol as specified by the IETF. It provides an async, futures-based API for working with QUIC connections and streams. It is designed to offer high performance with robustness and flexibility, supporting both client and server roles. The QUIC protocol itself is a multiplexed and secure transport protocol positioned as a modern alternative to TCP, offering better performance for many networking applications.
\ No newline at end of file
+`Quinn` is a Rust networking library providing high-level access to the QUIC protocol. It is built on top of the `tokio` runtime and implements the QUIC transport protocol as specified by the IETF. It provides an async, futures-based API for working with QUIC connections and streams. It is designed to offer high performance with robustness and flexibility, supporting both client and server roles. The QUIC protocol itself is a multiplexed and secure transport protocol positioned as a modern alternative to TCP, offering better performance for many networking applications.
+
+Visit the following resources to learn more:
+
+- [Docs.rs: quinn](https://docs.rs/quinn/latest/quinn/)
diff --git a/src/data/roadmaps/rust/content/119-testing/100-unit-integration.md b/src/data/roadmaps/rust/content/119-testing/100-unit-integration.md
index 92c76594fb87..a5569abfc45b 100644
--- a/src/data/roadmaps/rust/content/119-testing/100-unit-integration.md
+++ b/src/data/roadmaps/rust/content/119-testing/100-unit-integration.md
@@ -1,3 +1,8 @@
# Unit and Integration Testing
-In Rust language, the concept of unit integration encompasses writing tests for individual units of your code, typically a function or method, as well as for multiple units that interact with each other. Unit tests are written in the same files as the code and are used to verify the functionality of a single unit of software in isolation. On the other hand, integration tests are stored in an entirely different directory and are meant to test how multiple components or modules of your application work together. They rely on combining units of code and testing the group, identifying issues that may not be visible when units are tested in isolation.
\ No newline at end of file
+In Rust language, the concept of unit integration encompasses writing tests for individual units of your code, typically a function or method, as well as for multiple units that interact with each other. Unit tests are written in the same files as the code and are used to verify the functionality of a single unit of software in isolation. On the other hand, integration tests are stored in an entirely different directory and are meant to test how multiple components or modules of your application work together. They rely on combining units of code and testing the group, identifying issues that may not be visible when units are tested in isolation.
+
+Visit the following resources to learn more:
+
+- [Rust Book: How to Write Tests](https://doc.rust-lang.org/book/ch11-01-writing-tests.html)
+- [Rust by Example: Unit testing](https://doc.rust-lang.org/rust-by-example/testing/unit_testing.html)
diff --git a/src/data/roadmaps/rust/content/119-testing/101-mocking.md b/src/data/roadmaps/rust/content/119-testing/101-mocking.md
index a736ba8246c1..4c40a3b382dc 100644
--- a/src/data/roadmaps/rust/content/119-testing/101-mocking.md
+++ b/src/data/roadmaps/rust/content/119-testing/101-mocking.md
@@ -1,3 +1,9 @@
# Mocking and Property-based Testing
-In Rust, **mocking** is a process that lets you create fake functions, objects, or behaviors to test different conditions and scenarios in your code. Rust does not natively support mocking, however, there are external libraries present to help you perform mocking. Some of the popular libraries for mocking in rust are `mockall`, `mockiato`, and `double`. These libraries give you the ability to create mock structures with the same API as your original code and allow you to set predefined responses from functions or validate function calls, thus helping you test your rust code thoroughly.
\ No newline at end of file
+In Rust, **mocking** is a process that lets you create fake functions, objects, or behaviors to test different conditions and scenarios in your code. Rust does not natively support mocking, however, there are external libraries present to help you perform mocking. Some of the popular libraries for mocking in rust are `mockito`, `mockall`, and `mockall_double`. These libraries give you the ability to create mock structures with the same API as your original code and allow you to set predefined responses from functions or validate function calls, thus helping you test your rust code thoroughly.
+
+Visit the following resources to learn more:
+
+- [Docs.rs: mockito](https://docs.rs/mockito/latest/mockito/)
+- [Docs.rs: mockall](https://docs.rs/mockall/latest/mockall/)
+- [Docs.rs: mockall_double](https://docs.rs/mockall_double/latest/mockall_double/)
diff --git a/src/data/roadmaps/rust/content/119-testing/index.md b/src/data/roadmaps/rust/content/119-testing/index.md
index ae0c5e19862d..4e9822acb724 100644
--- a/src/data/roadmaps/rust/content/119-testing/index.md
+++ b/src/data/roadmaps/rust/content/119-testing/index.md
@@ -1,3 +1,8 @@
# Testing
-"Testing" in Rust is a crucial part of any programming project. This procedure involves creating specific scenarios to determine whether your code functions as expected. Rust has built-in support for this via the `cargo test` command which will run your test functions. These test functions are typically marked with the `#[test]` attribute to signify that they are not regular functions but testing adjuncts. Rust also provides a few macros such as `assert!`, `assert_eq!`, and `assert_ne!` for comparison checks and confirming expected behavior.
\ No newline at end of file
+"Testing" in Rust is a crucial part of any programming project. This procedure involves creating specific scenarios to determine whether your code functions as expected. Rust has built-in support for this via the `cargo test` command which will run your test functions. These test functions are typically marked with the `#[test]` attribute to signify that they are not regular functions but testing adjuncts. Rust also provides a few macros such as `assert!`, `assert_eq!`, and `assert_ne!` for comparison checks and confirming expected behavior.
+
+Visit the following resources to learn more:
+
+- [Rust Book: Writing Automated Tests](https://doc.rust-lang.org/book/ch11-00-testing.html)
+- [YouTube](https://www.youtube.com/watch?v=8XaVlL3lObQ)
diff --git a/src/data/roadmaps/rust/rust.json b/src/data/roadmaps/rust/rust.json
index 606ddbf8a70c..c4bd7d867b20 100644
--- a/src/data/roadmaps/rust/rust.json
+++ b/src/data/roadmaps/rust/rust.json
@@ -6229,7 +6229,7 @@
"y": "13",
"properties": {
"size": "17",
- "text": "Publishing to crates.io"
+ "text": "Publishing on crates.io"
}
}
]