From 9a241448efea2bf8f04d9788f38d08b141c6294d Mon Sep 17 00:00:00 2001 From: Abdullahi Abdiaziz yusuf <91767628+Abdullahi-abdiaziz@users.noreply.github.com> Date: Mon, 14 Oct 2024 11:49:07 +0300 Subject: [PATCH 001/159] Add a free article to the documentation (#7467) Added a section on 'Testing JavaScript with Vultr' to the documentation. The article explains how to deploy and test JavaScript applications on the Vultr cloud platform, covering setup, environment configuration, and basic test scripts for ensuring performance and reliability. --- src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md b/src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md index 08c4219bc..a8ea9f241 100644 --- a/src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md +++ b/src/data/roadmaps/react/content/jest@opa61u9gYgSpoPtxp58wu.md @@ -6,3 +6,4 @@ Visit the following resources to learn more: - [@official@Jest Website](https://jestjs.io/) - [@feed@Explore top posts about Jest](https://app.daily.dev/tags/jest?ref=roadmapsh) +- [@article@Testing JavaScript with Jest on Vultr](https://developer.mozilla.org/en-US/blog/test-javascript-with-jest-on-vultr/) From 426766f2613c4ef80a664f9f534c80ec9d511fb2 Mon Sep 17 00:00:00 2001 From: Kabeer Arora <77068315+kabeer05@users.noreply.github.com> Date: Mon, 14 Oct 2024 14:20:30 +0530 Subject: [PATCH 002/159] fix: update router content in cybersecurity roadmap (#7465) * fix: update router content in cybersecurity roadmap * fix: update video titles for router in cyber-security roadmap --- .../cyber-security/content/router@lwSFIbIX-xOZ0QK2sGFb1.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/data/roadmaps/cyber-security/content/router@lwSFIbIX-xOZ0QK2sGFb1.md b/src/data/roadmaps/cyber-security/content/router@lwSFIbIX-xOZ0QK2sGFb1.md index 4f7fdd3a8..defd7202b 100644 --- a/src/data/roadmaps/cyber-security/content/router@lwSFIbIX-xOZ0QK2sGFb1.md +++ b/src/data/roadmaps/cyber-security/content/router@lwSFIbIX-xOZ0QK2sGFb1.md @@ -1,9 +1,10 @@ # Router -Amazon Simple Storage Service (S3) is a scalable, object-based cloud storage service provided by AWS. It allows users to store and retrieve large amounts of data, such as files, backups, or media content, with high durability and availability. S3 is designed for flexibility, enabling users to access data from anywhere via the internet while offering security features like encryption and access controls. It is widely used for data storage, content distribution, disaster recovery, and big data analytics, providing cost-effective, scalable storage for a variety of applications. +A router is a networking device that directs data packets between different networks, ensuring they reach their destination. It operates at the network layer (Layer 3) of the OSI model and forwards data based on the IP addresses of the source and destination. Routers are essential for connecting devices to the internet or linking multiple networks together. They maintain a routing table to decide the best path for data and can dynamically update routes using protocols like RIP, OSPF, or BGP. Routers also handle Network Address Translation (NAT), allowing multiple devices to share a single public IP address. Many modern routers offer Wi-Fi for wireless connectivity and include basic firewall security to protect the network from threats. Learn more from the following resources: - [@article@What is a Router](https://www.cloudflare.com/en-gb/learning/network-layer/what-is-a-router/) - [@video@What is a router and how does it work?](https://www.youtube.com/watch?v=UIJzHLpG9bM) - +- [@video@Everything Routers do](https://youtu.be/AzXys5kxpAM?si=nEsCH6jG2Lj6Ua8N) +- [@video@How Routers forward Packets?](https://youtu.be/Ep-x_6kggKA?si=II5xBPoXjYEjLvWX) From 566210ace59ad89fbfec32d3b342da2e2a52dfb1 Mon Sep 17 00:00:00 2001 From: Moulishwaran Balaji Date: Mon, 14 Oct 2024 10:02:34 +0100 Subject: [PATCH 003/159] Updated nose -python description (nose is deprecated now) (#7443) * Update nose@SSnzpijHLO5_l7DNEoMfx.md As nose is deprecated and not actively maintained the information is added to this page. * Update src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md --------- Co-authored-by: dsh --- src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md b/src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md index a43fed201..dba7331ce 100644 --- a/src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md +++ b/src/data/roadmaps/python/content/nose@SSnzpijHLO5_l7DNEoMfx.md @@ -1,6 +1,6 @@ # Nose -Nose is another opensource testing framework that extends `unittest` to provide a more flexible testing framework. +Nose is another opensource testing framework that extends `unittest` to provide a more flexible testing framework. Note that Nose is no longer maintained and `pytest` is considered the replacement. Visit the following resources to learn more: From 1426959f77e0302adec48959af4eae6fa67a8651 Mon Sep 17 00:00:00 2001 From: dsh Date: Mon, 14 Oct 2024 10:14:56 +0100 Subject: [PATCH 004/159] removed broken link (#7472) --- .../devops/content/white--grey-listing@E-lSLGzgOPrz-25ER2Hk7.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/data/roadmaps/devops/content/white--grey-listing@E-lSLGzgOPrz-25ER2Hk7.md b/src/data/roadmaps/devops/content/white--grey-listing@E-lSLGzgOPrz-25ER2Hk7.md index 0ab4439de..0a98993ad 100644 --- a/src/data/roadmaps/devops/content/white--grey-listing@E-lSLGzgOPrz-25ER2Hk7.md +++ b/src/data/roadmaps/devops/content/white--grey-listing@E-lSLGzgOPrz-25ER2Hk7.md @@ -4,7 +4,6 @@ Whitelisting involves creating a list of trusted entities (such as IP addresses, Visit the following resources to learn more: -- [@article@Basic Introduction to whitelisting](https://www.cblohm.com/blog/education-marketing-trends/what-is-email-whitelisting/) - [@article@Detailed Introduction to greylisting](https://en.wikipedia.org/wiki/Greylisting_(email)) - [@video@Greylisting](https://www.youtube.com/watch?v=ljtU6I0sIiw) - [@video@How to Whitelist an Email Address?](https://www.youtube.com/watch?v=NqQIBtY7ySw) From 24a2da024f8c7af411d46af07327a96d21b2c1ef Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 14 Oct 2024 15:55:40 +0100 Subject: [PATCH 005/159] Add team sponsor --- src/components/PageSponsor.tsx | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/components/PageSponsor.tsx b/src/components/PageSponsor.tsx index cdc21b5ec..392cf0c02 100644 --- a/src/components/PageSponsor.tsx +++ b/src/components/PageSponsor.tsx @@ -59,7 +59,7 @@ export function PageSponsor(props: PageSponsorProps) { currentPath.startsWith('/guides') || currentPath.startsWith('/videos') || currentPath.startsWith('/account') || - currentPath.startsWith('/team') + currentPath.startsWith('/team/') ) { return; } @@ -127,6 +127,8 @@ export function PageSponsor(props: PageSponsorProps) { const { url, title, imageUrl, description, company, gaLabel } = sponsor; + const isRoadmapAd = title.toLowerCase() === 'advertise with us!'; + return ( {title} {description} - Partner Content - - Partner Content - + {!isRoadmapAd && ( + <> + + Partner Content + + + Partner Content + + + )} ); From 677e66b8060109d1d7a9ebc2783e693ae05f7815 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 14 Oct 2024 15:58:26 +0100 Subject: [PATCH 006/159] Add AI engineer roadmap link --- readme.md | 1 + 1 file changed, 1 insertion(+) diff --git a/readme.md b/readme.md index a63d9282f..b41c3e500 100644 --- a/readme.md +++ b/readme.md @@ -41,6 +41,7 @@ Here is the list of available roadmaps with more being actively worked upon. - [Computer Science Roadmap](https://roadmap.sh/computer-science) - [Data Structures and Algorithms Roadmap](https://roadmap.sh/datastructures-and-algorithms) - [AI and Data Scientist Roadmap](https://roadmap.sh/ai-data-scientist) +- [AI Engineer Roadmap](https://roadmap.sh/ai-engineer) - [AWS Roadmap](https://roadmap.sh/aws) - [Linux Roadmap](https://roadmap.sh/linux) - [Terraform Roadmap](https://roadmap.sh/terraform) From 737126ebc45b69b42f4be1ba59ce820d3d7f2fc4 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 14 Oct 2024 16:27:51 +0100 Subject: [PATCH 007/159] Add a button to visit homepage from bookmarks --- src/components/Dashboard/ProgressStack.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/Dashboard/ProgressStack.tsx b/src/components/Dashboard/ProgressStack.tsx index ed53de4cf..44bc18353 100644 --- a/src/components/Dashboard/ProgressStack.tsx +++ b/src/components/Dashboard/ProgressStack.tsx @@ -201,7 +201,7 @@ export function ProgressStack(props: ProgressStackProps) { emptyLinkHref={'/roadmaps'} emptyLinkText={'Explore Roadmaps'} > -
+
{userProgressesToShow.length > 0 && ( <> {userProgressesToShow.map((progress) => { @@ -239,6 +239,14 @@ export function ProgressStack(props: ProgressStackProps) { /> )}
+ + + + View All Roadmaps +
From 2b9e86cd67af7e1383fbc8cf2ce57e8e9bd9ba8d Mon Sep 17 00:00:00 2001 From: dsh Date: Mon, 14 Oct 2024 16:31:28 +0100 Subject: [PATCH 008/159] change JSON to Markdown (#7471) --- contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributing.md b/contributing.md index 1bd29b362..e6f603081 100644 --- a/contributing.md +++ b/contributing.md @@ -73,7 +73,7 @@ For new roadmaps, you can either: For the existing roadmaps, please follow the details listed for the nature of contribution: -- **Fixing Typos** — Make your changes in the [roadmap JSON file](https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data/roadmaps) and submit a [PR](https://github.com/kamranahmedse/developer-roadmap/pulls). +- **Fixing Typos** — Make your changes in the [roadmap Markdown file](https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data/roadmaps) and submit a [PR](https://github.com/kamranahmedse/developer-roadmap/pulls). - **Adding or Removing Nodes** — Please open an [issue](https://github.com/kamranahmedse/developer-roadmap/issues) with your suggestion. **Note:** Please note that our goal is not to have the biggest list of items. Our goal is to list items or skills most relevant today. From 51d7dfb0a4fa88736c216acc8cfc915cc9225bf4 Mon Sep 17 00:00:00 2001 From: Vedansh Date: Mon, 14 Oct 2024 21:02:48 +0530 Subject: [PATCH 009/159] Improve API design roadmap content (#7462) * Phase - 1st * Phase - 2 * Phase - 3 * Phase - 4 * Phase - 5 * Added Some Special Content. --- .../content/api-gateways@MJeUD4fOHaJu1oxk4uQ-x.md | 2 +- ...api-integration-patterns@R3aRhqCslwhegMfHtxg5z.md | 2 +- .../api-keys--management@tzUJwXu_scwQHnPPT0oY-.md | 4 ++-- ...api-lifecycle-management@At5exN7ZAx2IzY3cTCzHm.md | 6 +++--- .../content/api-performance@d9ZXdU73jiCdeNHQv1_DH.md | 4 ++-- .../content/api-testing@Wpk4TvxcZOJgAoXjrOsZF.md | 4 ++-- ...ased-access-control-abac@dZTe_kxIUQsc9N3w920aR.md | 2 +- .../authentication-methods@cQnQ9v3mH27MGNwetz3JW.md | 6 +++++- .../authorization-methods@nHbn8_sMY7J8o6ckbD-ER.md | 6 +++++- .../content/basic-auth@0FzHERK5AeYL5wv1FBJbH.md | 1 + .../batch-processing@X68HXAAV-nKo-V4Fu1o72.md | 4 ++-- .../content/best-practices@q1yaf-RbHIQsOqfzjn4k4.md | 4 ++-- ...lding-json--restful-apis@awdoiCHz7Yc3kYac_iy-a.md | 6 +++--- .../caching-strategies@PrvRCR4HCdGar0vcUbG_a.md | 4 ++-- .../api-design/content/ccpa@a-_iIE7UdoXzD00fD9MxN.md | 2 +- .../common-vulnerabilities@G70wvcOM1Isrx5ZBvS2xP.md | 2 +- .../content-negotiation@TX_hg7EobNJhmWKsMCaT1.md | 2 +- .../contract-testing@NqeBglhzukVMMEF9p2CXc.md | 6 +++--- .../different-api-styles@o8i093VQv-T5Qf1yGqU0R.md | 8 +++++++- .../error-handling--retries@XD1vDtrRQFbLyKJaD1AlA.md | 8 +++----- .../content/error-handling@8tELdagrOaGCf3nMVs8t3.md | 4 ++-- ...vent-driven-architecture@oMfOBkVsgiLvFLicOUdx6.md | 6 +++--- .../functional-testing@6lm3wy9WTAERTqXCn6pFt.md | 4 ++-- .../content/graphql-apis@MKVcPM2EzAr2_Ieyp9Fu3.md | 3 ++- .../content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md | 6 +----- .../content/http-headers@rE-0yibRH6B2UBKp351cf.md | 4 ++-- .../content/http-methods@rADHM-6NAxEjzmgiHefDX.md | 4 ++-- .../content/http-versions@ACALE93mL4gnX5ThRIdRp.md | 2 +- .../api-design/content/jwt@tWg68AHLIr1gIZA1za3jp.md | 1 + .../content/load-balancing@p5wsniYnOS7cbHd92RxGk.md | 5 +++-- .../content/load-testing@7JNEx_cbqnAx3esvwZMOd.md | 6 +++--- .../messaging-queues@IkPZel5zxXWIx90Qx7fZI.md | 4 ++-- ...croservices-architecture@PPeBbooE121zrgNwpVTiA.md | 4 ++-- .../content/oauth-20@TLuNtQ6HKYQXmglyVk8-t.md | 5 +++-- .../performance-metrics@nQpczZUcn-TvrfT80dv0Q.md | 2 +- .../content/postman@KQAus72RGqx5f-3-YeJby.md | 3 ++- ...profiling-and-monitoring@-qdwBg7HvwlbLy3IKCRij.md | 4 ++-- .../content/rabbit-mq@H22jAI2W5QLL-b1rq-c56.md | 4 +--- .../content/readmecom@LxWHkhlikUaMT2G8YmVDQ.md | 4 ++-- ...ased-access-control-rbac@wFsbmMi5Ey9UyDADdbdPW.md | 4 ++-- .../session-based-auth@eQWoy4CpYP3TJL2bbhPB_.md | 2 +- .../simple-json-apis@TVR-SkErlOHbDKLBGfxep.md | 4 ++-- ...standards-and-compliance@yvdfoly5WHHTq2Puss355.md | 12 ++++-------- .../swagger--open-api@5RY7AlfRQydjxWK65Z4cv.md | 4 ++-- .../token-based-auth@QTH7sy9uQZWl6ieBz7erY.md | 2 +- .../content/uri-design@b3qRTLwCC_9uDoPGrd9Bu.md | 4 ++-- ...l-query--path-parameters@P-rGIk50Bg7nFmWieAW07.md | 2 +- .../versioning-strategies@itILK2SXvLvAjk1Kul7EK.md | 6 +++--- .../content/web-sockets@UQ8N7gcVpRLAYXgUNHBt5.md | 4 ++-- .../content/what-are-apis@r8M3quACGO2piu0u_R4hO.md | 4 +++- 50 files changed, 108 insertions(+), 98 deletions(-) diff --git a/src/data/roadmaps/api-design/content/api-gateways@MJeUD4fOHaJu1oxk4uQ-x.md b/src/data/roadmaps/api-design/content/api-gateways@MJeUD4fOHaJu1oxk4uQ-x.md index 3696e79bd..6175cb24e 100644 --- a/src/data/roadmaps/api-design/content/api-gateways@MJeUD4fOHaJu1oxk4uQ-x.md +++ b/src/data/roadmaps/api-design/content/api-gateways@MJeUD4fOHaJu1oxk4uQ-x.md @@ -5,4 +5,4 @@ API Gateways act as the main point of entry in a microservices architecture, oft Learn more from the following resources: - [@article@What does an API Gateway do?](https://www.redhat.com/en/topics/api/what-does-an-api-gateway-do) -- [@article@What are API Gateways?](https://www.ibm.com/blog/api-gateway/) \ No newline at end of file +- [@article@What are API Gateways?](https://www.ibm.com/blog/api-gateway/) diff --git a/src/data/roadmaps/api-design/content/api-integration-patterns@R3aRhqCslwhegMfHtxg5z.md b/src/data/roadmaps/api-design/content/api-integration-patterns@R3aRhqCslwhegMfHtxg5z.md index ed6e3b801..cb501a67f 100644 --- a/src/data/roadmaps/api-design/content/api-integration-patterns@R3aRhqCslwhegMfHtxg5z.md +++ b/src/data/roadmaps/api-design/content/api-integration-patterns@R3aRhqCslwhegMfHtxg5z.md @@ -5,4 +5,4 @@ API Integration Patterns, in the context of API Design, refers to the common par Learn more from the following resources: - [@article@API Integration Patterns - Dzone](https://dzone.com/refcardz/api-integration-patterns) -- [@article@API Integration Patterns](https://uk.devoteam.com/expert-view/api-integration-patterns/) +- [@article@API Integration Patterns - Devoteam](https://uk.devoteam.com/expert-view/api-integration-patterns/) diff --git a/src/data/roadmaps/api-design/content/api-keys--management@tzUJwXu_scwQHnPPT0oY-.md b/src/data/roadmaps/api-design/content/api-keys--management@tzUJwXu_scwQHnPPT0oY-.md index 9a36ae15a..755696a54 100644 --- a/src/data/roadmaps/api-design/content/api-keys--management@tzUJwXu_scwQHnPPT0oY-.md +++ b/src/data/roadmaps/api-design/content/api-keys--management@tzUJwXu_scwQHnPPT0oY-.md @@ -4,5 +4,5 @@ API keys and management is an integral part of API design. An API key is a uniqu Learn more from the following resources: -- [@article@What is API key management?](https://www.akeyless.io/secrets-management-glossary/api-key-management/) -- [@article@API Key Management | Definition and Best Practices](https://infisical.com/blog/api-key-management) \ No newline at end of file +- [@article@What is API Key Management?](https://www.akeyless.io/secrets-management-glossary/api-key-management/) +- [@article@API Key Management - Definition and Best Practices](https://infisical.com/blog/api-key-management) diff --git a/src/data/roadmaps/api-design/content/api-lifecycle-management@At5exN7ZAx2IzY3cTCzHm.md b/src/data/roadmaps/api-design/content/api-lifecycle-management@At5exN7ZAx2IzY3cTCzHm.md index eb6470fe9..e6b33f41e 100644 --- a/src/data/roadmaps/api-design/content/api-lifecycle-management@At5exN7ZAx2IzY3cTCzHm.md +++ b/src/data/roadmaps/api-design/content/api-lifecycle-management@At5exN7ZAx2IzY3cTCzHm.md @@ -4,6 +4,6 @@ API Lifecycle Management is a crucial aspect in API design that oversees the pro Learn more from the following resources: -- [@article@What is the API lifecycle?](https://www.postman.com/api-platform/api-lifecycle/) -- [@article@What is API lifescycle management?](https://swagger.io/blog/api-strategy/what-is-api-lifecycle-management/) -- [@video@Day in the lifecycle of an API](https://www.youtube.com/watch?v=VxY_cz0VQXE) \ No newline at end of file +- [@article@What is the API Lifecycle?](https://www.postman.com/api-platform/api-lifecycle/) +- [@article@What is API Lifecycle Management?](https://swagger.io/blog/api-strategy/what-is-api-lifecycle-management/) +- [@video@Day in the Lifecycle of an API](https://www.youtube.com/watch?v=VxY_cz0VQXE) diff --git a/src/data/roadmaps/api-design/content/api-performance@d9ZXdU73jiCdeNHQv1_DH.md b/src/data/roadmaps/api-design/content/api-performance@d9ZXdU73jiCdeNHQv1_DH.md index 0113fc315..0aa76a698 100644 --- a/src/data/roadmaps/api-design/content/api-performance@d9ZXdU73jiCdeNHQv1_DH.md +++ b/src/data/roadmaps/api-design/content/api-performance@d9ZXdU73jiCdeNHQv1_DH.md @@ -4,5 +4,5 @@ When we talk about API design, one crucial aspect that demands our attention is Learn more from the following resources: -- [@video@Top 7 Ways to 10x Your API Performance](https://www.youtube.com/watch?v=zvWKqUiovAM) -- [@article@10 Tips for Improving API Performance](https://nordicapis.com/10-tips-for-improving-api-performance/) \ No newline at end of file +- [@article@10 Tips for Improving API Performance](https://nordicapis.com/10-tips-for-improving-api-performance/) +- [@video@Top 7 Ways to 10x Your API Performance](https://www.youtube.com/watch?v=zvWKqUiovAM) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/api-testing@Wpk4TvxcZOJgAoXjrOsZF.md b/src/data/roadmaps/api-design/content/api-testing@Wpk4TvxcZOJgAoXjrOsZF.md index 391c293d1..27bd01d88 100644 --- a/src/data/roadmaps/api-design/content/api-testing@Wpk4TvxcZOJgAoXjrOsZF.md +++ b/src/data/roadmaps/api-design/content/api-testing@Wpk4TvxcZOJgAoXjrOsZF.md @@ -4,5 +4,5 @@ API Testing refers to the process of checking the functionality, reliability, pe Learn more from the following resources: -- [@article@What is API testing?](https://www.postman.com/api-platform/api-testing/) -- [@article@API Testing : What It is, How to Test & Best Practices](https://testsigma.com/guides/api-testing/) \ No newline at end of file +- [@article@What is API Testing?](https://www.postman.com/api-platform/api-testing/) +- [@article@API Testing : What It is, How to Test & Best Practices](https://testsigma.com/guides/api-testing/) diff --git a/src/data/roadmaps/api-design/content/attribute-based-access-control-abac@dZTe_kxIUQsc9N3w920aR.md b/src/data/roadmaps/api-design/content/attribute-based-access-control-abac@dZTe_kxIUQsc9N3w920aR.md index b8aeba4c2..5093d4d24 100644 --- a/src/data/roadmaps/api-design/content/attribute-based-access-control-abac@dZTe_kxIUQsc9N3w920aR.md +++ b/src/data/roadmaps/api-design/content/attribute-based-access-control-abac@dZTe_kxIUQsc9N3w920aR.md @@ -5,4 +5,4 @@ Attribute Based Access Control (ABAC) is a flexible and powerful authorization m Learn more from the following resources: - [@article@What is Attribute Based Access Control?](https://www.okta.com/uk/blog/2020/09/attribute-based-access-control-abac/) -- [@article@Attribute Based Access Control](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) \ No newline at end of file +- [@article@Attribute Based Access Control](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) diff --git a/src/data/roadmaps/api-design/content/authentication-methods@cQnQ9v3mH27MGNwetz3JW.md b/src/data/roadmaps/api-design/content/authentication-methods@cQnQ9v3mH27MGNwetz3JW.md index 12379efe6..63df44938 100644 --- a/src/data/roadmaps/api-design/content/authentication-methods@cQnQ9v3mH27MGNwetz3JW.md +++ b/src/data/roadmaps/api-design/content/authentication-methods@cQnQ9v3mH27MGNwetz3JW.md @@ -1,3 +1,7 @@ # Authentication Methods in API Design -Application Programming Interfaces (APIs) are critical components in software development that allow different software systems to communicate and share functionality. To ensure secure communication, it's essential to authenticate the parties involved in the API transactions. The authentication process confirms the identity of the API user. There are numerous authentication methods available when designing an API, each with its own pros and cons. This includes Basic Authentication, API Key Authentication, OAuth, and JWT among others. Understanding these different methods and their best use cases is fundamental to designing secure and effective APIs. \ No newline at end of file +Application Programming Interfaces (APIs) are critical components in software development that allow different software systems to communicate and share functionality. To ensure secure communication, it's essential to authenticate the parties involved in the API transactions. The authentication process confirms the identity of the API user. There are numerous authentication methods available when designing an API, each with its own pros and cons. This includes Basic Authentication, API Key Authentication, OAuth, and JWT among others. Understanding these different methods and their best use cases is fundamental to designing secure and effective APIs. + +Learn more from the following resources: + +- [@article@API Authentication](https://www.postman.com/api-platform/api-authentication/) diff --git a/src/data/roadmaps/api-design/content/authorization-methods@nHbn8_sMY7J8o6ckbD-ER.md b/src/data/roadmaps/api-design/content/authorization-methods@nHbn8_sMY7J8o6ckbD-ER.md index 4ba6866d0..9ddf24856 100644 --- a/src/data/roadmaps/api-design/content/authorization-methods@nHbn8_sMY7J8o6ckbD-ER.md +++ b/src/data/roadmaps/api-design/content/authorization-methods@nHbn8_sMY7J8o6ckbD-ER.md @@ -1,3 +1,7 @@ # Authorization Methods in API Design -In API design, authorization methods play a crucial role in ensuring the security and integrity of data transactions. They are the mechanisms through which an API identifies and validates a user, system, or application before granting them access to specific resources. These methods include Basic Authentication, OAuth, Token-based authentication, JSON Web Tokens (JWT), and API Key based, among others. So, understanding these methods enhances the ability to design APIs that effectively protect resources while allowing necessary access. Each method has its own pros and cons, usage scenarios and security features that make them more suitable for certain situations rather than others. \ No newline at end of file +In API design, authorization methods play a crucial role in ensuring the security and integrity of data transactions. They are the mechanisms through which an API identifies and validates a user, system, or application before granting them access to specific resources. These methods include Basic Authentication, OAuth, Token-based authentication, JSON Web Tokens (JWT), and API Key based, among others. So, understanding these methods enhances the ability to design APIs that effectively protect resources while allowing necessary access. Each method has its own pros and cons, usage scenarios and security features that make them more suitable for certain situations rather than others. + +Visit the following resources to learn more: + +- [@article@API Authorization Methods](https://konghq.com/blog/engineering/common-api-authentication-methods) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/basic-auth@0FzHERK5AeYL5wv1FBJbH.md b/src/data/roadmaps/api-design/content/basic-auth@0FzHERK5AeYL5wv1FBJbH.md index 2e7d24010..a90fa23c1 100644 --- a/src/data/roadmaps/api-design/content/basic-auth@0FzHERK5AeYL5wv1FBJbH.md +++ b/src/data/roadmaps/api-design/content/basic-auth@0FzHERK5AeYL5wv1FBJbH.md @@ -4,6 +4,7 @@ Basic Auth, short for Basic Authentication, is a simple method often used in API Learn more from the following resources: +- [@roadmap@Basic Authentication](https://roadmap.sh/guides/basic-authentication) - [@article@Basic Auth Generation Header](https://www.debugbear.com/basic-auth-header-generator) - [@article@Basic Authentication - Swagger.io](https://swagger.io/docs/specification/authentication/basic-authentication/) - [@article@Basic Authentication - Twillio](https://www.twilio.com/docs/glossary/what-is-basic-authentication) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/batch-processing@X68HXAAV-nKo-V4Fu1o72.md b/src/data/roadmaps/api-design/content/batch-processing@X68HXAAV-nKo-V4Fu1o72.md index 9d72149f7..457079f3f 100644 --- a/src/data/roadmaps/api-design/content/batch-processing@X68HXAAV-nKo-V4Fu1o72.md +++ b/src/data/roadmaps/api-design/content/batch-processing@X68HXAAV-nKo-V4Fu1o72.md @@ -4,5 +4,5 @@ Batch Processing refers to the method of handling bulk data requests in API desi Learn more from the following resources: -- [@article@API design guidance: bulk vs batch import](https://tyk.io/blog/api-design-guidance-bulk-and-batch-import/) -- [@video@Stream vs Batch processing explained with examples](https://www.youtube.com/watch?v=1xgBQTF24mU) \ No newline at end of file +- [@article@API Design Guidance: Bulk vs Batch Import](https://tyk.io/blog/api-design-guidance-bulk-and-batch-import/) +- [@video@Stream vs Batch Processing Explained with Examples](https://www.youtube.com/watch?v=1xgBQTF24mU) diff --git a/src/data/roadmaps/api-design/content/best-practices@q1yaf-RbHIQsOqfzjn4k4.md b/src/data/roadmaps/api-design/content/best-practices@q1yaf-RbHIQsOqfzjn4k4.md index 8d11b1e7d..41763a764 100644 --- a/src/data/roadmaps/api-design/content/best-practices@q1yaf-RbHIQsOqfzjn4k4.md +++ b/src/data/roadmaps/api-design/content/best-practices@q1yaf-RbHIQsOqfzjn4k4.md @@ -4,5 +4,5 @@ API design has rapidly emerged as a vital component of software development. Whe Learn more from the following resources: -- [@article@Best practices for REST API design](https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/) -- [@article@Best practices in API design](https://swagger.io/resources/articles/best-practices-in-api-design/) \ No newline at end of file +- [@article@Best Practices for REST API Design](https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/) +- [@article@Best Practices in API Design](https://swagger.io/resources/articles/best-practices-in-api-design/) diff --git a/src/data/roadmaps/api-design/content/building-json--restful-apis@awdoiCHz7Yc3kYac_iy-a.md b/src/data/roadmaps/api-design/content/building-json--restful-apis@awdoiCHz7Yc3kYac_iy-a.md index d5d1a3fd4..10a6182f4 100644 --- a/src/data/roadmaps/api-design/content/building-json--restful-apis@awdoiCHz7Yc3kYac_iy-a.md +++ b/src/data/roadmaps/api-design/content/building-json--restful-apis@awdoiCHz7Yc3kYac_iy-a.md @@ -4,6 +4,6 @@ Building JSON/RESTful APIs involves designing and implementing APIs that adhere Learn more from the following resources: -- [@article@A specification for building APIs in JSON](https://jsonapi.org/) -- [@article@How to make a REST API](https://www.integrate.io/blog/how-to-make-a-rest-api/) -- [@video@What is a REST API?](https://www.youtube.com/watch?v=lsMQRaeKNDk&t=170s) \ No newline at end of file +- [@official@Specification for Building APIs in JSON](https://jsonapi.org/) +- [@article@How to Make a RESTful API](https://www.integrate.io/blog/how-to-make-a-rest-api/) +- [@video@What is a REST API?](https://www.youtube.com/watch?v=lsMQRaeKNDk&t=170s) diff --git a/src/data/roadmaps/api-design/content/caching-strategies@PrvRCR4HCdGar0vcUbG_a.md b/src/data/roadmaps/api-design/content/caching-strategies@PrvRCR4HCdGar0vcUbG_a.md index 3df901581..9c5b57cd2 100644 --- a/src/data/roadmaps/api-design/content/caching-strategies@PrvRCR4HCdGar0vcUbG_a.md +++ b/src/data/roadmaps/api-design/content/caching-strategies@PrvRCR4HCdGar0vcUbG_a.md @@ -5,5 +5,5 @@ Caching in API design serves as a technique that allows you to store copies of d Learn more from the following resources: - [@article@Caching Strategies for APIs](https://medium.com/@satyendra.jaiswal/caching-strategies-for-apis-improving-performance-and-reducing-load-1d4bd2df2b44) -- [@article@Using caching strategies to improve API performance](https://www.lonti.com/blog/using-caching-strategies-to-improve-api-performance) -- [@video@Cache Systems Every Developer Should Know](https://www.youtube.com/watch?v=dGAgxozNWFE) \ No newline at end of file +- [@article@Using Caching Strategies to Improve API Performance](https://www.lonti.com/blog/using-caching-strategies-to-improve-api-performance) +- [@video@Cache Systems Every Developer Should Know](https://www.youtube.com/watch?v=dGAgxozNWFE) diff --git a/src/data/roadmaps/api-design/content/ccpa@a-_iIE7UdoXzD00fD9MxN.md b/src/data/roadmaps/api-design/content/ccpa@a-_iIE7UdoXzD00fD9MxN.md index a64e23064..de22cdec4 100644 --- a/src/data/roadmaps/api-design/content/ccpa@a-_iIE7UdoXzD00fD9MxN.md +++ b/src/data/roadmaps/api-design/content/ccpa@a-_iIE7UdoXzD00fD9MxN.md @@ -1,4 +1,4 @@ -# CCPA under Standards and Compliance in API Design +# CCPA Under Standards and Compliance in API Design The California Consumer Privacy Act (CCPA) is a pivotal state statute meant to enhance privacy rights and consumer protection for individuals within California, United States. API Design greatly impacts compliance with CCPA, as improper management and exposure of user data can potentially violate this law. Crucially, designing APIs means considering data privacy, security, and user consent from the very foundation. Programmatically, CCPA compliance may involve structuring APIs to respond to user demands such as data access, data deletion, and opt-out requests. It imposes a significant responsibility on API developers to enforce user control over data and maintain rigorous standards of data protection. diff --git a/src/data/roadmaps/api-design/content/common-vulnerabilities@G70wvcOM1Isrx5ZBvS2xP.md b/src/data/roadmaps/api-design/content/common-vulnerabilities@G70wvcOM1Isrx5ZBvS2xP.md index 24a8b9209..588fcdf32 100644 --- a/src/data/roadmaps/api-design/content/common-vulnerabilities@G70wvcOM1Isrx5ZBvS2xP.md +++ b/src/data/roadmaps/api-design/content/common-vulnerabilities@G70wvcOM1Isrx5ZBvS2xP.md @@ -5,4 +5,4 @@ API design is a critical component of modern software development, enabling vari Learn more from the following resources: - [@article@API Vulnerability Overview](https://apimike.com/api-vulnerabilities) -- [@article@Top API Vulnerabilities and 6 Ways to Mitigate Them](https://brightsec.com/blog/top-api-vulnerabilities-and-6-ways-to-mitigate-them/) \ No newline at end of file +- [@article@Top API Vulnerabilities and 6 Ways to Mitigate Them](https://brightsec.com/blog/top-api-vulnerabilities-and-6-ways-to-mitigate-them/) diff --git a/src/data/roadmaps/api-design/content/content-negotiation@TX_hg7EobNJhmWKsMCaT1.md b/src/data/roadmaps/api-design/content/content-negotiation@TX_hg7EobNJhmWKsMCaT1.md index 5d0b8f1c3..5276c484c 100644 --- a/src/data/roadmaps/api-design/content/content-negotiation@TX_hg7EobNJhmWKsMCaT1.md +++ b/src/data/roadmaps/api-design/content/content-negotiation@TX_hg7EobNJhmWKsMCaT1.md @@ -5,4 +5,4 @@ In the context of API design, Content Negotiation refers to the process where th Learn more from the following resources: - [@article@Content Negotiation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation) -- [@article@Content Negotiation in practice](https://softwaremill.com/content-negotiation-in-practice/) \ No newline at end of file +- [@article@Content Negotiation in Practice](https://softwaremill.com/content-negotiation-in-practice/) diff --git a/src/data/roadmaps/api-design/content/contract-testing@NqeBglhzukVMMEF9p2CXc.md b/src/data/roadmaps/api-design/content/contract-testing@NqeBglhzukVMMEF9p2CXc.md index 9640c4c0c..d4e3826e0 100644 --- a/src/data/roadmaps/api-design/content/contract-testing@NqeBglhzukVMMEF9p2CXc.md +++ b/src/data/roadmaps/api-design/content/contract-testing@NqeBglhzukVMMEF9p2CXc.md @@ -4,6 +4,6 @@ Contract Testing is a critical aspect of maintaining a robust and reliable API i Learn more from the following resources: -- [@article@A complete guide to Contract Testing](https://testsigma.com/blog/api-contract-testing/) -- [@article@Get started with API Contract Testing](https://saucelabs.com/resources/blog/getting-started-with-api-contract-testing) -- [@article@Contract Testing](https://www.postman.com/templates/42247877-8529-429d-acba-4de20c3b5b3b/Contract-testing/) \ No newline at end of file +- [@article@Complete Guide to Contract Testing](https://testsigma.com/blog/api-contract-testing/) +- [@article@Geting Started with API Contract Testing](https://saucelabs.com/resources/blog/getting-started-with-api-contract-testing) +- [@article@Contract Testing](https://www.postman.com/templates/42247877-8529-429d-acba-4de20c3b5b3b/Contract-testing/) diff --git a/src/data/roadmaps/api-design/content/different-api-styles@o8i093VQv-T5Qf1yGqU0R.md b/src/data/roadmaps/api-design/content/different-api-styles@o8i093VQv-T5Qf1yGqU0R.md index cbcb86a72..35263c9a4 100644 --- a/src/data/roadmaps/api-design/content/different-api-styles@o8i093VQv-T5Qf1yGqU0R.md +++ b/src/data/roadmaps/api-design/content/different-api-styles@o8i093VQv-T5Qf1yGqU0R.md @@ -1,3 +1,9 @@ # Different API Styles -Application Programming Interface (API) design isn't a one-size-fits-all endeavor. APIs can be structured in various styles, each with its own unique characteristics, advantages, and use cases. Early identification of the appropriate API style is crucial in ensuring a functional, efficient and seamless end-user experience. Commonly used API styles include REST, SOAP, GraphQL, and gRPC. Understanding these diverse API styles would help in making better design choices, fostering efficient overall system architecture, and promoting an intuitive and easy-to-use application. \ No newline at end of file +Application Programming Interface (API) design isn't a one-size-fits-all endeavor. APIs can be structured in various styles, each with its own unique characteristics, advantages, and use cases. Early identification of the appropriate API style is crucial in ensuring a functional, efficient and seamless end-user experience. Commonly used API styles include REST, SOAP, GraphQL, and gRPC. Understanding these diverse API styles would help in making better design choices, fostering +efficient overall system architecture, and promoting an intuitive and easy-to-use application. + +Visit the following resources to learn more: + +- [@article@API Styles](https://www.redhat.com/architect/api-styles) +- [@video@Top API Styles](https://www.youtube.com/watch?v=4vLxWqE94l4) diff --git a/src/data/roadmaps/api-design/content/error-handling--retries@XD1vDtrRQFbLyKJaD1AlA.md b/src/data/roadmaps/api-design/content/error-handling--retries@XD1vDtrRQFbLyKJaD1AlA.md index 4e30567e8..f08819772 100644 --- a/src/data/roadmaps/api-design/content/error-handling--retries@XD1vDtrRQFbLyKJaD1AlA.md +++ b/src/data/roadmaps/api-design/content/error-handling--retries@XD1vDtrRQFbLyKJaD1AlA.md @@ -1,10 +1,8 @@ # Error Handling / Retries -When creating effective API designs, addressing Error Handling and Retries forms an essential facet. This is primarily due to the fact that APIs aren't always error-free and instances of network hiccups or input inaccuracies from users can occur. Without robust error handling, such occurrences can easily lead to catastrophic application failure or unsatisfactory user experiences. - -In this context, error handling can refer to validating inputs, managing exceptions, and returning appropriate error message or status codes to the user. Meanwhile, the concept of retries comes into play to ensure maximum request success amidst transient failures. Through correctly implemented retries, an API can repeatedly attempt to execute a request until it is successful, thus ensuring seamless operation. The criteria and mechanisms of retries, including the count, delay, and conditions for retries, are crucial aspects to solidify during the API design. +When creating effective API designs, addressing Error Handling and Retries forms an essential facet. This is primarily due to the fact that APIs aren't always error-free and instances of network hiccups or input inaccuracies from users can occur. Without robust error handling, such occurrences can easily lead to catastrophic application failure or unsatisfactory user experiences. Error handling can refer to validating inputs, managing exceptions, and returning appropriate error message or status codes to the user. Meanwhile, the concept of retries comes into play to ensure maximum request success amidst transient failures. Through correctly implemented retries, an API can repeatedly attempt to execute a request until it is successful, thus ensuring seamless operation. Learn more from the following resources: -- [@video@How to make resilient web applications with retries](https://www.youtube.com/watch?v=Gly94hp3Eec) -- [@article@How To Improve Your Backend By Adding Retries to Your API Calls](https://hackernoon.com/how-to-improve-your-backend-by-adding-retries-to-your-api-calls-83r3udx) \ No newline at end of file +- [@article@How To Improve Your Backend By Adding Retries to Your API Calls](https://hackernoon.com/how-to-improve-your-backend-by-adding-retries-to-your-api-calls-83r3udx) +- [@video@How to Make Resilient Web Applications with Retries](https://www.youtube.com/watch?v=Gly94hp3Eec) diff --git a/src/data/roadmaps/api-design/content/error-handling@8tELdagrOaGCf3nMVs8t3.md b/src/data/roadmaps/api-design/content/error-handling@8tELdagrOaGCf3nMVs8t3.md index ac2056a87..90b90217f 100644 --- a/src/data/roadmaps/api-design/content/error-handling@8tELdagrOaGCf3nMVs8t3.md +++ b/src/data/roadmaps/api-design/content/error-handling@8tELdagrOaGCf3nMVs8t3.md @@ -4,6 +4,6 @@ Error Handling is a crucial aspect of API design that ensures the stability, usa Learn more from the following resources: -- [@article@Best practices for API error handling](https://blog.postman.com/best-practices-for-api-error-handling/) +- [@article@Best Practices for API Error Handling](https://blog.postman.com/best-practices-for-api-error-handling/) - [@article@Best Practices for REST API Error Handling](https://www.baeldung.com/rest-api-error-handling-best-practices) -- [@video@Handling HTTP API Errors with Problem Details](https://www.youtube.com/watch?v=uvTT_0hqhyY) \ No newline at end of file +- [@video@Handling HTTP API Errors with Problem Details](https://www.youtube.com/watch?v=uvTT_0hqhyY) diff --git a/src/data/roadmaps/api-design/content/event-driven-architecture@oMfOBkVsgiLvFLicOUdx6.md b/src/data/roadmaps/api-design/content/event-driven-architecture@oMfOBkVsgiLvFLicOUdx6.md index 7ac338c60..2787dcc00 100644 --- a/src/data/roadmaps/api-design/content/event-driven-architecture@oMfOBkVsgiLvFLicOUdx6.md +++ b/src/data/roadmaps/api-design/content/event-driven-architecture@oMfOBkVsgiLvFLicOUdx6.md @@ -4,6 +4,6 @@ Event-driven architecture (EDA) is a software design concept that revolves aroun Learn more form the following resources: -- [@article@Event-driven architecture style](https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven) -- [@article@Event-driven architecture](https://aws.amazon.com/event-driven-architecture/) -- [@video@Event-Driven Architecture: Explained in 7 Minutes!](https://www.youtube.com/watch?v=gOuAqRaDdHA) \ No newline at end of file +- [@article@Event Driven Architecture Style](https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven) +- [@article@Event-driven Architecture](https://aws.amazon.com/event-driven-architecture/) +- [@video@Event-Driven Architecture: Explained in 7 Minutes!](https://www.youtube.com/watch?v=gOuAqRaDdHA) diff --git a/src/data/roadmaps/api-design/content/functional-testing@6lm3wy9WTAERTqXCn6pFt.md b/src/data/roadmaps/api-design/content/functional-testing@6lm3wy9WTAERTqXCn6pFt.md index a12d3c0ca..a11ca3034 100644 --- a/src/data/roadmaps/api-design/content/functional-testing@6lm3wy9WTAERTqXCn6pFt.md +++ b/src/data/roadmaps/api-design/content/functional-testing@6lm3wy9WTAERTqXCn6pFt.md @@ -1,8 +1,8 @@ # Functional Testing in API Design -Functional testing in the context of API design involves validating the endpoints and key-value pairs of an API. It ensures the server response works as expected and assesses the functionality of the API -- whether it is performing all the intended functions correctly. Various approaches like testing request-response pairs, error codes, and data accuracy are used. Functional testing can provide invaluable insights into how well an API meets the specified requirements and whether it is ready for integration into applications. +Functional testing in the context of API design involves validating the endpoints and key-value pairs of an API. It ensures the server response works as expected and assesses the functionality of the API whether it is performing all the intended functions correctly. Various approaches like testing request-response pairs, error codes, and data accuracy are used. Functional testing can provide invaluable insights into how well an API meets the specified requirements and whether it is ready for integration into applications. Learn more from the following resources: - [@article@API Functional Testing – Why Is It Important And How to Test](https://testsigma.com/blog/api-functional-testing/) -- [@video@What Is API Functional Testing?](https://www.youtube.com/watch?v=CvJHDKMWofk) \ No newline at end of file +- [@video@What Is API Functional Testing?](https://www.youtube.com/watch?v=CvJHDKMWofk) diff --git a/src/data/roadmaps/api-design/content/graphql-apis@MKVcPM2EzAr2_Ieyp9Fu3.md b/src/data/roadmaps/api-design/content/graphql-apis@MKVcPM2EzAr2_Ieyp9Fu3.md index 9562df496..8cf0360b6 100644 --- a/src/data/roadmaps/api-design/content/graphql-apis@MKVcPM2EzAr2_Ieyp9Fu3.md +++ b/src/data/roadmaps/api-design/content/graphql-apis@MKVcPM2EzAr2_Ieyp9Fu3.md @@ -4,6 +4,7 @@ GraphQL is an open-source data query and manipulation language for APIs, and a r Learn more from the following resources: +- [@roadmap@Visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql) - [@official@GraphQL Website](https://graphql.org/) - [@opensource@Public GraphQL APIs](https://github.com/graphql-kit/graphql-apis) -- [@video@GraphQL explained in 100 seconds](https://www.youtube.com/watch?v=eIQh02xuVw4) \ No newline at end of file +- [@video@GraphQL Explained in 100 Seconds](https://www.youtube.com/watch?v=eIQh02xuVw4) diff --git a/src/data/roadmaps/api-design/content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md b/src/data/roadmaps/api-design/content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md index 7c419d92e..47700299e 100644 --- a/src/data/roadmaps/api-design/content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md +++ b/src/data/roadmaps/api-design/content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md @@ -1,10 +1,6 @@ # gRPC -gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first. - -It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#. - -gRPC uses the protocol buffer language to define the structure of the data that is +gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first. It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#. Visit the following resources to learn more: diff --git a/src/data/roadmaps/api-design/content/http-headers@rE-0yibRH6B2UBKp351cf.md b/src/data/roadmaps/api-design/content/http-headers@rE-0yibRH6B2UBKp351cf.md index 8debd7200..91e9030fe 100644 --- a/src/data/roadmaps/api-design/content/http-headers@rE-0yibRH6B2UBKp351cf.md +++ b/src/data/roadmaps/api-design/content/http-headers@rE-0yibRH6B2UBKp351cf.md @@ -5,5 +5,5 @@ HTTP Headers play a crucial role in API Design as they provide essential informa Learn more from the following resources: - [@article@HTTP Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) -- [@article@What are HTTP headers?](https://blog.postman.com/what-are-http-headers/) -- [@article@What are HTTP Headers & Understand different types of HTTP headers](https://requestly.com/blog/what-are-http-headers-understand-different-types-of-http-headers/) \ No newline at end of file +- [@article@What are HTTP Headers?](https://blog.postman.com/what-are-http-headers/) +- [@article@What are HTTP Headers & Types of HTTP headers](https://requestly.com/blog/what-are-http-headers-understand-different-types-of-http-headers/) diff --git a/src/data/roadmaps/api-design/content/http-methods@rADHM-6NAxEjzmgiHefDX.md b/src/data/roadmaps/api-design/content/http-methods@rADHM-6NAxEjzmgiHefDX.md index cf24c29ba..d7320ed5b 100644 --- a/src/data/roadmaps/api-design/content/http-methods@rADHM-6NAxEjzmgiHefDX.md +++ b/src/data/roadmaps/api-design/content/http-methods@rADHM-6NAxEjzmgiHefDX.md @@ -4,6 +4,6 @@ HTTP (Hypertext Transfer Protocol) Methods play a significant role in API design Learn more from the following resources: -- [@article@HTTP request methods](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) +- [@article@HTTP Methods - MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods) - [@article@HTTP Request Methods - W3Schools](https://www.w3schools.com/tags/ref_httpmethods.asp) -- [@article@What are HTTP Methods?](https://blog.postman.com/what-are-http-methods/) \ No newline at end of file +- [@article@What are HTTP Methods? - Postman](https://blog.postman.com/what-are-http-methods/) diff --git a/src/data/roadmaps/api-design/content/http-versions@ACALE93mL4gnX5ThRIdRp.md b/src/data/roadmaps/api-design/content/http-versions@ACALE93mL4gnX5ThRIdRp.md index 801de976f..1108f4daa 100644 --- a/src/data/roadmaps/api-design/content/http-versions@ACALE93mL4gnX5ThRIdRp.md +++ b/src/data/roadmaps/api-design/content/http-versions@ACALE93mL4gnX5ThRIdRp.md @@ -5,4 +5,4 @@ HTTP or Hypertext Transfer Protocol is pivotal in the world of API design. HTTP Visit the following resources to learn more: - [@article@Evolution of HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP) -- [@article@HTTP: 1.0 vs. 1.1 vs 2.0 vs. 3.0](https://www.baeldung.com/cs/http-versions) +- [@article@HTTP: 1.0 vs 1.1 vs 2.0 vs 3.0](https://www.baeldung.com/cs/http-versions) diff --git a/src/data/roadmaps/api-design/content/jwt@tWg68AHLIr1gIZA1za3jp.md b/src/data/roadmaps/api-design/content/jwt@tWg68AHLIr1gIZA1za3jp.md index 4ab74a169..bd6e75b25 100644 --- a/src/data/roadmaps/api-design/content/jwt@tWg68AHLIr1gIZA1za3jp.md +++ b/src/data/roadmaps/api-design/content/jwt@tWg68AHLIr1gIZA1za3jp.md @@ -4,6 +4,7 @@ JSON Web Tokens, or JWT, are a popular and secure method of transferring informa Learn more from the following resources: +- [@roadmap@JWT Authentication](https://roadmap.sh/guides/jwt-authentication) - [@official@Introduction to JSON Web Tokens](https://jwt.io/introduction) - [@article@JSON Web Tokens](https://auth0.com/docs/secure/tokens/json-web-tokens) - [@video@Why is JWT popular?](https://www.youtube.com/watch?v=P2CPd9ynFLg) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/load-balancing@p5wsniYnOS7cbHd92RxGk.md b/src/data/roadmaps/api-design/content/load-balancing@p5wsniYnOS7cbHd92RxGk.md index 9166c446a..ea7cdaf1a 100644 --- a/src/data/roadmaps/api-design/content/load-balancing@p5wsniYnOS7cbHd92RxGk.md +++ b/src/data/roadmaps/api-design/content/load-balancing@p5wsniYnOS7cbHd92RxGk.md @@ -4,6 +4,7 @@ Load Balancing plays a crucial role in the domain of API Design. It primarily re Learn more from the following resources: -- [@article@What is load balancing?](https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/) +- [@article@What is Load Balancing?](https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/) +- [@article@Load Balancers in API](https://learn.microsoft.com/en-us/rest/api/load-balancer/) - [@article@API Gateway vs Load Balancer: Which is Right for Your Application?](https://konghq.com/blog/engineering/api-gateway-vs-load-balancer) -- [@video@What is a load balancer?](https://www.youtube.com/watch?v=sCR3SAVdyCc) \ No newline at end of file +- [@video@What is a Load Balancer?](https://www.youtube.com/watch?v=sCR3SAVdyCc) diff --git a/src/data/roadmaps/api-design/content/load-testing@7JNEx_cbqnAx3esvwZMOd.md b/src/data/roadmaps/api-design/content/load-testing@7JNEx_cbqnAx3esvwZMOd.md index 509844a9f..eaa300319 100644 --- a/src/data/roadmaps/api-design/content/load-testing@7JNEx_cbqnAx3esvwZMOd.md +++ b/src/data/roadmaps/api-design/content/load-testing@7JNEx_cbqnAx3esvwZMOd.md @@ -4,6 +4,6 @@ Load testing is a crucial aspect of API design that ensures reliability, efficie Learn more from the following resources: -- [@article@API load testing - a beginners guide](https://grafana.com/blog/2024/01/30/api-load-testing/) -- [@article@Test your API’s performance by simulating real-world traffic](https://blog.postman.com/postman-api-performance-testing/) -- [@video@Load testing your API's](https://www.youtube.com/watch?v=a5hWE4hMOoY) \ No newline at end of file +- [@article@API Load Testing - Beginners Guide](https://grafana.com/blog/2024/01/30/api-load-testing/) +- [@article@Test Your API’s Performance by Simulating Real-world Traffic](https://blog.postman.com/postman-api-performance-testing/) +- [@video@Load Testing API's](https://www.youtube.com/watch?v=a5hWE4hMOoY) diff --git a/src/data/roadmaps/api-design/content/messaging-queues@IkPZel5zxXWIx90Qx7fZI.md b/src/data/roadmaps/api-design/content/messaging-queues@IkPZel5zxXWIx90Qx7fZI.md index 0c75b90fd..57340068c 100644 --- a/src/data/roadmaps/api-design/content/messaging-queues@IkPZel5zxXWIx90Qx7fZI.md +++ b/src/data/roadmaps/api-design/content/messaging-queues@IkPZel5zxXWIx90Qx7fZI.md @@ -4,5 +4,5 @@ Messaging Queues play a fundamental role in API design, particularly in creating Learn more from the following resources: -- [@article@What is a message queue?](https://aws.amazon.com/message-queue/) -- [@video@REST API message queues explained](https://www.youtube.com/watch?v=2idPgA6IN_Q) \ No newline at end of file +- [@article@What is a Message Queue?](https://aws.amazon.com/message-queue/) +- [@video@REST API Message Queues Explained](https://www.youtube.com/watch?v=2idPgA6IN_Q) diff --git a/src/data/roadmaps/api-design/content/microservices-architecture@PPeBbooE121zrgNwpVTiA.md b/src/data/roadmaps/api-design/content/microservices-architecture@PPeBbooE121zrgNwpVTiA.md index 72d06caeb..acd199d2e 100644 --- a/src/data/roadmaps/api-design/content/microservices-architecture@PPeBbooE121zrgNwpVTiA.md +++ b/src/data/roadmaps/api-design/content/microservices-architecture@PPeBbooE121zrgNwpVTiA.md @@ -4,6 +4,6 @@ When it comes to API Design, Microservices Architecture plays a crucial role. It Learn more from the following resources: -- [@video@Microservices explained in 5 minutes](https://www.youtube.com/watch?v=lL_j7ilk7rc) +- [@video@Microservices Explained in 5 Minutes](https://www.youtube.com/watch?v=lL_j7ilk7rc) - [@article@What is Microservices Architecture?](https://cloud.google.com/learn/what-is-microservices-architecture) -- [@article@Microservice Architecture Style](https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices) \ No newline at end of file +- [@article@Microservice Architecture Style](https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices) diff --git a/src/data/roadmaps/api-design/content/oauth-20@TLuNtQ6HKYQXmglyVk8-t.md b/src/data/roadmaps/api-design/content/oauth-20@TLuNtQ6HKYQXmglyVk8-t.md index 42592cce1..fcbe61de6 100644 --- a/src/data/roadmaps/api-design/content/oauth-20@TLuNtQ6HKYQXmglyVk8-t.md +++ b/src/data/roadmaps/api-design/content/oauth-20@TLuNtQ6HKYQXmglyVk8-t.md @@ -4,6 +4,7 @@ OAuth 2.0 is an authorization framework that allows applications to obtain limit Learn more from the following resources: +- [@roadmap@OAuth](https://roadmap.sh/guides/oauth) - [@official@OAuth Website](https://oauth.net/2/) -- [@article@What is OAuth 2.0?](https://auth0.com/intro-to-iam/what-is-oauth-2) -- [@video@OAuth 2 Explained In Simple Terms](https://www.youtube.com/watch?v=ZV5yTm4pT8g) \ No newline at end of file +- [@official@What is OAuth 2.0?](https://auth0.com/intro-to-iam/what-is-oauth-2) +- [@video@OAuth 2 Explained In Simple Terms](https://www.youtube.com/watch?v=ZV5yTm4pT8g) diff --git a/src/data/roadmaps/api-design/content/performance-metrics@nQpczZUcn-TvrfT80dv0Q.md b/src/data/roadmaps/api-design/content/performance-metrics@nQpczZUcn-TvrfT80dv0Q.md index 067951aeb..9f4516a2d 100644 --- a/src/data/roadmaps/api-design/content/performance-metrics@nQpczZUcn-TvrfT80dv0Q.md +++ b/src/data/roadmaps/api-design/content/performance-metrics@nQpczZUcn-TvrfT80dv0Q.md @@ -5,4 +5,4 @@ API Design performance metrics play a critical role in ensuring APIs are efficie Learn more from the following resources: - [@article@API Performance Monitoring](https://www.catchpoint.com/api-monitoring-tools/api-performance-monitoring) -- [@article@How does API monitoring improve API performance?](https://tyk.io/blog/api-product-metrics-what-you-need-to-know/) \ No newline at end of file +- [@article@How does API Monitoring Improves API Performance?](https://tyk.io/blog/api-product-metrics-what-you-need-to-know/) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/postman@KQAus72RGqx5f-3-YeJby.md b/src/data/roadmaps/api-design/content/postman@KQAus72RGqx5f-3-YeJby.md index 0bd3dfebe..911d45b31 100644 --- a/src/data/roadmaps/api-design/content/postman@KQAus72RGqx5f-3-YeJby.md +++ b/src/data/roadmaps/api-design/content/postman@KQAus72RGqx5f-3-YeJby.md @@ -5,4 +5,5 @@ Postman is a popular tool in web development for designing, testing, and managin Learn more from the following resources: - [@official@Postman Website](https://www.postman.com/) -- [@video@Postman Api Testing Tutorial for beginners](https://www.youtube.com/watch?v=MFxk5BZulVU) \ No newline at end of file +- [@official@Postman Docs](https://www.postman.com/api-documentation-tool/) +- [@video@Postman Tutorial for Beginners](https://www.youtube.com/watch?v=MFxk5BZulVU) diff --git a/src/data/roadmaps/api-design/content/profiling-and-monitoring@-qdwBg7HvwlbLy3IKCRij.md b/src/data/roadmaps/api-design/content/profiling-and-monitoring@-qdwBg7HvwlbLy3IKCRij.md index 659eed04c..610fe2c77 100644 --- a/src/data/roadmaps/api-design/content/profiling-and-monitoring@-qdwBg7HvwlbLy3IKCRij.md +++ b/src/data/roadmaps/api-design/content/profiling-and-monitoring@-qdwBg7HvwlbLy3IKCRij.md @@ -4,5 +4,5 @@ Profiling and monitoring are critical aspects of API design and implementation. Learn more from the following resources: -- [@article@Monitor health and performance of your APIs](https://learning.postman.com/docs/monitoring-your-api/intro-monitors/) -- [@article@API profiling at Pintrest](https://medium.com/pinterest-engineering/api-profiling-at-pinterest-6fa9333b4961) \ No newline at end of file +- [@article@Monitor Health and Performance of your APIs](https://learning.postman.com/docs/monitoring-your-api/intro-monitors/) +- [@article@API profiling at Pintrest](https://medium.com/pinterest-engineering/api-profiling-at-pinterest-6fa9333b4961) diff --git a/src/data/roadmaps/api-design/content/rabbit-mq@H22jAI2W5QLL-b1rq-c56.md b/src/data/roadmaps/api-design/content/rabbit-mq@H22jAI2W5QLL-b1rq-c56.md index d143b1bb7..3e5b28a54 100644 --- a/src/data/roadmaps/api-design/content/rabbit-mq@H22jAI2W5QLL-b1rq-c56.md +++ b/src/data/roadmaps/api-design/content/rabbit-mq@H22jAI2W5QLL-b1rq-c56.md @@ -1,8 +1,6 @@ # RabbitMQ in API Design -RabbitMQ is an open-source message-broker software/system that plays a crucial role in API design, specifically in facilitating effective and efficient inter-process communication. It implements the Advanced Message Queuing Protocol (AMQP) to enable secure and reliable data transmission in various formats such as text, binary, or serialized objects. - -In API design, RabbitMQ comes in handy in decoupling application processes for scalability and robustness, whilst ensuring that data delivery occurs safely and seamlessly. It introduces queuing as a way of handling multiple users or service calls at once hence enhancing responsiveness and performance of APIs. Its queue system elegantly digests API request loads, allowing services to evenly process data while preventing overloading. +RabbitMQ is an open-source message-broker software/system that plays a crucial role in API design, specifically in facilitating effective and efficient inter-process communication. It implements the Advanced Message Queuing Protocol (AMQP) to enable secure and reliable data transmission in various formats such as text, binary, or serialized objects. RabbitMQ comes in handy in decoupling application processes for scalability and robustness, whilst ensuring that data delivery occurs safely and seamlessly. It introduces queuing as a way of handling multiple users or service calls at once hence enhancing responsiveness and performance of APIs. Its queue system elegantly digests API request loads, allowing services to evenly process data while preventing overloading. Learn more from the following resources: diff --git a/src/data/roadmaps/api-design/content/readmecom@LxWHkhlikUaMT2G8YmVDQ.md b/src/data/roadmaps/api-design/content/readmecom@LxWHkhlikUaMT2G8YmVDQ.md index 9b2b62e19..6a05ee23d 100644 --- a/src/data/roadmaps/api-design/content/readmecom@LxWHkhlikUaMT2G8YmVDQ.md +++ b/src/data/roadmaps/api-design/content/readmecom@LxWHkhlikUaMT2G8YmVDQ.md @@ -4,5 +4,5 @@ Readme.com is an invaluable tool in the realm of API Design, renowned for provid Learn more from the following resources: -- [@official@readme.com](https://readme.com) -- [@opensource@readmeio](https://github.com/readmeio) \ No newline at end of file +- [@official@ReadMe Website](https://readme.com) +- [@opensource@ReadMe](https://github.com/orgs/readmeio/repositories?type=source) diff --git a/src/data/roadmaps/api-design/content/role-based-access-control-rbac@wFsbmMi5Ey9UyDADdbdPW.md b/src/data/roadmaps/api-design/content/role-based-access-control-rbac@wFsbmMi5Ey9UyDADdbdPW.md index edce876cb..8b7337aa9 100644 --- a/src/data/roadmaps/api-design/content/role-based-access-control-rbac@wFsbmMi5Ey9UyDADdbdPW.md +++ b/src/data/roadmaps/api-design/content/role-based-access-control-rbac@wFsbmMi5Ey9UyDADdbdPW.md @@ -5,5 +5,5 @@ Role-Based Access Control (RBAC) is a method of managing authorization in API de Learn more from the following resources: - [@article@Role-Based Access Control](https://auth0.com/docs/manage-users/access-control/rbac) -- [@article@What is role-based access control (RBAC)?](https://www.redhat.com/en/topics/security/what-is-role-based-access-control) -- [@video@Role-based access control (RBAC) vs. Attribute-based access control (ABAC)](https://www.youtube.com/watch?v=rvZ35YW4t5k) \ No newline at end of file +- [@article@What is Role-based Access Control (RBAC)?](https://www.redhat.com/en/topics/security/what-is-role-based-access-control) +- [@video@Role-based Access Control (RBAC) vs. Attribute-based Access Control (ABAC)](https://www.youtube.com/watch?v=rvZ35YW4t5k) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/session-based-auth@eQWoy4CpYP3TJL2bbhPB_.md b/src/data/roadmaps/api-design/content/session-based-auth@eQWoy4CpYP3TJL2bbhPB_.md index 6d4f99289..056d9f5e5 100644 --- a/src/data/roadmaps/api-design/content/session-based-auth@eQWoy4CpYP3TJL2bbhPB_.md +++ b/src/data/roadmaps/api-design/content/session-based-auth@eQWoy4CpYP3TJL2bbhPB_.md @@ -8,6 +8,6 @@ Understanding Session Based Authentication is crucial for secure API design, esp Learn more from the following resources: -- [@official@Session Based Authentication - Roadmap.sh](https://roadmap.sh/guides/session-based-authentication) +- [@roadmap@Session Based Authentication](https://roadmap.sh/guides/session-based-authentication) - [@video@Session Based Authentication - Roadmap.sh](https://www.youtube.com/watch?v=gKkBEOq_shs) - [@article@Session vs Token Authentication](https://www.authgear.com/post/session-vs-token-authentication) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/simple-json-apis@TVR-SkErlOHbDKLBGfxep.md b/src/data/roadmaps/api-design/content/simple-json-apis@TVR-SkErlOHbDKLBGfxep.md index 47646aff9..d3285fddc 100644 --- a/src/data/roadmaps/api-design/content/simple-json-apis@TVR-SkErlOHbDKLBGfxep.md +++ b/src/data/roadmaps/api-design/content/simple-json-apis@TVR-SkErlOHbDKLBGfxep.md @@ -4,5 +4,5 @@ Simple JSON (JavaScript Object Notation) APIs are a popular form of API or "Appl Learn more from the following resources: -- [@video@JSON API: Explained in 4 minutes (+ EXAMPLES)](https://www.youtube.com/watch?v=N-4prIh7t38) -- [@opensource@A specification for building JSON APIs](https://github.com/json-api/json-api) \ No newline at end of file +- [@video@JSON API: Explained in 4 Minutes](https://www.youtube.com/watch?v=N-4prIh7t38) +- [@opensource@Specification for Building JSON APIs](https://github.com/json-api/json-api) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/standards-and-compliance@yvdfoly5WHHTq2Puss355.md b/src/data/roadmaps/api-design/content/standards-and-compliance@yvdfoly5WHHTq2Puss355.md index e70fd4219..af8bf9d61 100644 --- a/src/data/roadmaps/api-design/content/standards-and-compliance@yvdfoly5WHHTq2Puss355.md +++ b/src/data/roadmaps/api-design/content/standards-and-compliance@yvdfoly5WHHTq2Puss355.md @@ -1,13 +1,9 @@ # Standards and Compliance in API Design -When designing APIs, it's crucial to consider the concept of standards and compliance. Standards represent the set of rules and best practices that guide developers to create well-structured and easily maintainable APIs. They can range from the proper structure of the endpoints, the standardization of error responses, to naming conventions, and the usage of HTTP verbs. - -Compliance on the other hand, emphasizes on meeting protocol requirements or standards such as REST or SOAP. Furthermore, operating within regulated industries can also necessitate certain compliance measures like GDPR, HIPAA and others. Compliance in API Design ensures interoperability and safety of data transmission between systems. - -In essence, Standards and Compliance in API Design contributes towards building more secure, robust, and efficient APIs that are user-friendly and universally understandable. +When designing APIs, it's crucial to consider the concept of standards and compliance. Standards represent the set of rules and best practices that guide developers to create well-structured and easily maintainable APIs. They can range from the proper structure of the endpoints, the standardization of error responses, to naming conventions, and the usage of HTTP verbs. Compliance on the other hand, emphasizes on meeting protocol requirements or standards such as REST or SOAP. Furthermore, operating within regulated industries can also necessitate certain compliance measures like GDPR, HIPAA and others. Compliance in API Design ensures interoperability and safety of data transmission between systems. Learn more from the following resources: -- [@article@What is API compliance?](https://tyk.io/learning-center/api-compliance/) -- [@article@What is API compliance and why is it important?](https://www.traceable.ai/blog-post/achieve-api-compliance) -- [@article@REST API standards](https://www.integrate.io/blog/rest-api-standards/) \ No newline at end of file +- [@article@What is API Compliance?](https://tyk.io/learning-center/api-compliance/) +- [@article@What is API Compliance and Why is it important?](https://www.traceable.ai/blog-post/achieve-api-compliance) +- [@article@REST API Standards](https://www.integrate.io/blog/rest-api-standards/) diff --git a/src/data/roadmaps/api-design/content/swagger--open-api@5RY7AlfRQydjxWK65Z4cv.md b/src/data/roadmaps/api-design/content/swagger--open-api@5RY7AlfRQydjxWK65Z4cv.md index 601e3d017..ad1e25121 100644 --- a/src/data/roadmaps/api-design/content/swagger--open-api@5RY7AlfRQydjxWK65Z4cv.md +++ b/src/data/roadmaps/api-design/content/swagger--open-api@5RY7AlfRQydjxWK65Z4cv.md @@ -5,5 +5,5 @@ Swagger, also known as OpenAPI (not to be confused with OpenAI), is a set of too Learn more from the following resources: - [@official@Swagger Website](https://swagger.io/) -- [@article@What is Swagger?](https://blog.hubspot.com/website/what-is-swagger) -- [@official@OpenAPI Inititive](https://www.openapis.org/) \ No newline at end of file +- [@official@OpenAPI Inititive](https://www.openapis.org/) +- [@article@What is Swagger?](https://blog.hubspot.com/website/what-is-swagger) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/token-based-auth@QTH7sy9uQZWl6ieBz7erY.md b/src/data/roadmaps/api-design/content/token-based-auth@QTH7sy9uQZWl6ieBz7erY.md index 438546435..63b891dfc 100644 --- a/src/data/roadmaps/api-design/content/token-based-auth@QTH7sy9uQZWl6ieBz7erY.md +++ b/src/data/roadmaps/api-design/content/token-based-auth@QTH7sy9uQZWl6ieBz7erY.md @@ -4,6 +4,6 @@ Token-based authentication is a crucial aspect of API design. It involves provid Learn more from the following resources: +- [@roadmap@Token Based Authentication](https://roadmap.sh/guides/token-authentication) - [@article@What Is Token-Based Authentication?](https://www.okta.com/uk/identity-101/what-is-token-based-authentication/) - [@video@Session vs Token Authentication in 100 Seconds](https://www.youtube.com/watch?v=UBUNrFtufWo) -- [@video@Token based auth](https://www.youtube.com/watch?v=woNZJMSNbuo) \ No newline at end of file diff --git a/src/data/roadmaps/api-design/content/uri-design@b3qRTLwCC_9uDoPGrd9Bu.md b/src/data/roadmaps/api-design/content/uri-design@b3qRTLwCC_9uDoPGrd9Bu.md index 2add6cab8..d57a95a25 100644 --- a/src/data/roadmaps/api-design/content/uri-design@b3qRTLwCC_9uDoPGrd9Bu.md +++ b/src/data/roadmaps/api-design/content/uri-design@b3qRTLwCC_9uDoPGrd9Bu.md @@ -4,5 +4,5 @@ URI (Uniform Resource Identifier) is a string of characters used to identify a n Learn more from the following resources: -- [@article@Guidelines for URI design](https://css-tricks.com/guidelines-for-uri-design/) -- [@article@Designing URIs](https://www.oreilly.com/library/view/restful-web-services/9780596809140/ch04.html) \ No newline at end of file +- [@article@Guidelines for URI Design](https://css-tricks.com/guidelines-for-uri-design/) +- [@article@Designing URIs](https://www.oreilly.com/library/view/restful-web-services/9780596809140/ch04.html) diff --git a/src/data/roadmaps/api-design/content/url-query--path-parameters@P-rGIk50Bg7nFmWieAW07.md b/src/data/roadmaps/api-design/content/url-query--path-parameters@P-rGIk50Bg7nFmWieAW07.md index fd7d80278..92de27fea 100644 --- a/src/data/roadmaps/api-design/content/url-query--path-parameters@P-rGIk50Bg7nFmWieAW07.md +++ b/src/data/roadmaps/api-design/content/url-query--path-parameters@P-rGIk50Bg7nFmWieAW07.md @@ -6,4 +6,4 @@ Learn more from the following resources: - [@article@Understanding Path Variables and Query Parameters in HTTP Requests](https://medium.com/@averydcs/understanding-path-variables-and-query-parameters-in-http-requests-232248b71a8) - [@article@Describing parameters](https://swagger.io/docs/specification/describing-parameters/) -- [@article@Path parameters](https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters) \ No newline at end of file +- [@article@Path Parameters](https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters) diff --git a/src/data/roadmaps/api-design/content/versioning-strategies@itILK2SXvLvAjk1Kul7EK.md b/src/data/roadmaps/api-design/content/versioning-strategies@itILK2SXvLvAjk1Kul7EK.md index a62bf03cc..2bc625675 100644 --- a/src/data/roadmaps/api-design/content/versioning-strategies@itILK2SXvLvAjk1Kul7EK.md +++ b/src/data/roadmaps/api-design/content/versioning-strategies@itILK2SXvLvAjk1Kul7EK.md @@ -4,6 +4,6 @@ API Versioning is a critical component of API Design and Management. As the APIs Learn more from the following resources: -- [@article@What is API versioning?](https://www.postman.com/api-platform/api-versioning/) -- [@article@4 API versioning best practices](https://kodekloud.com/blog/api-versioning-best-practices/) -- [@video@Versioning your APIs](https://www.youtube.com/watch?v=Np_Jr6AvCOc) \ No newline at end of file +- [@article@What is API Versioning?](https://www.postman.com/api-platform/api-versioning/) +- [@article@API Versioning Best Practices](https://kodekloud.com/blog/api-versioning-best-practices/) +- [@video@Versioning your APIs](https://www.youtube.com/watch?v=Np_Jr6AvCOc) diff --git a/src/data/roadmaps/api-design/content/web-sockets@UQ8N7gcVpRLAYXgUNHBt5.md b/src/data/roadmaps/api-design/content/web-sockets@UQ8N7gcVpRLAYXgUNHBt5.md index 382865697..ff54719ba 100644 --- a/src/data/roadmaps/api-design/content/web-sockets@UQ8N7gcVpRLAYXgUNHBt5.md +++ b/src/data/roadmaps/api-design/content/web-sockets@UQ8N7gcVpRLAYXgUNHBt5.md @@ -5,5 +5,5 @@ Web Sockets provide a long-lived connection between a client and a server over w Learn more from the following resources: - [@article@The WebSocket API (WebSockets)](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) -- [@article@What are websockets?](https://www.pubnub.com/guides/websockets/) -- [@video@How web sockets work](https://www.youtube.com/watch?v=pnj3Jbho5Ck) \ No newline at end of file +- [@article@What are Web Sockets?](https://www.pubnub.com/guides/websockets/) +- [@video@How Web Sockets Work](https://www.youtube.com/watch?v=pnj3Jbho5Ck) diff --git a/src/data/roadmaps/api-design/content/what-are-apis@r8M3quACGO2piu0u_R4hO.md b/src/data/roadmaps/api-design/content/what-are-apis@r8M3quACGO2piu0u_R4hO.md index 57981a8a9..132a0710c 100644 --- a/src/data/roadmaps/api-design/content/what-are-apis@r8M3quACGO2piu0u_R4hO.md +++ b/src/data/roadmaps/api-design/content/what-are-apis@r8M3quACGO2piu0u_R4hO.md @@ -4,5 +4,7 @@ APIs, or Application Programming Interfaces, provide a manner in which software Visit the following resources to learn more: -- [@article@What is an API?](https://aws.amazon.com/what-is/api/) +- [@article@Getting Started with APIs - Postman](https://www.postman.com/what-is-an-api/) +- [@article@API - IBM](https://www.ibm.com/topics/api) +- [@article@What is an API? - AWS](https://aws.amazon.com/what-is/api/) - [@video@What is an API?](https://www.youtube.com/watch?v=s7wmiS2mSXY) From 3a1c7e5300707b76037ff1e6275696f994dd8eec Mon Sep 17 00:00:00 2001 From: dsh Date: Mon, 14 Oct 2024 16:36:34 +0100 Subject: [PATCH 010/159] Update docker roadmap content (#7440) * rework docker roadmap content * remove h2 --- .../100-what-are-containers.md | 6 +-- .../101-need-for-containers.md | 8 +-- .../102-bare-metal-vm-containers.md | 14 ++--- .../100-introduction/103-docker-and-oci.md | 10 ---- .../100-namespaces.md | 12 +---- .../101-cgroups.md | 5 +- .../100-docker-desktop.md | 8 --- .../101-docker-engine.md | 6 +-- .../content/102-installation-setup/index.md | 2 +- .../100-ephemeral-container-fs.md | 15 +----- .../104-data-persistence/101-volume-mounts.md | 52 +------------------ .../104-data-persistence/102-bind-mounts.md | 1 + .../100-databases.md | 21 +------- .../101-interactive-test-environments.md | 21 +------- .../102-command-line-utilities.md | 20 ------- .../105-using-third-party-images/index.md | 13 +---- .../100-dockerfiles.md | 33 ------------ .../101-efficient-layer-caching.md | 23 +------- .../102-image-size-and-security.md | 31 +---------- .../106-building-container-images/index.md | 29 +---------- .../107-container-registries/100-dockerhub.md | 27 +--------- .../101-dockerhub-alt.md | 18 +------ .../102-image-tagging-best-practices.md | 18 +------ .../content/107-container-registries/index.md | 10 +--- .../108-running-containers/100-docker-run.md | 29 +---------- .../101-docker-compose.md | 34 +----------- .../102-runtime-config-options.md | 41 +-------------- .../content/108-running-containers/index.md | 34 +----------- .../100-image-security.md | 14 +---- .../101-runtime-security.md | 17 +----- .../content/109-container-security/index.md | 10 +--- .../content/110-docker-cli/100-images.md | 23 ++------ .../content/110-docker-cli/101-containers.md | 18 +------ .../content/110-docker-cli/102-networks.md | 14 +---- .../content/110-docker-cli/102-volumes.md | 26 +--------- .../docker/content/110-docker-cli/index.md | 41 +-------------- .../111-developer-experience/102-tests.md | 2 +- .../content/111-developer-experience/index.md | 10 +--- .../100-paas-options.md | 18 +------ .../101-kubernetes.md | 18 +------ .../102-docker-swarm.md | 12 +---- .../content/112-deploying-containers/index.md | 16 ------ 42 files changed, 49 insertions(+), 731 deletions(-) diff --git a/src/data/roadmaps/docker/content/100-introduction/100-what-are-containers.md b/src/data/roadmaps/docker/content/100-introduction/100-what-are-containers.md index 94a08abb8..6251ed2c1 100644 --- a/src/data/roadmaps/docker/content/100-introduction/100-what-are-containers.md +++ b/src/data/roadmaps/docker/content/100-introduction/100-what-are-containers.md @@ -2,12 +2,8 @@ Containers are lightweight, portable, and isolated software environments that allow developers to run and package applications with their dependencies, consistently across different platforms. They help to streamline application development, deployment, and management processes while ensuring that applications run consistently, regardless of the underlying infrastructure. -## Containers and Docker - -Docker is a platform that simplifies the process of creating, deploying, and managing containers. It provides developers and administrators with a set of tools and APIs to manage containerized applications. With Docker, you can build and package application code, libraries, and dependencies into a container image, which can be distributed and run consistently in any environment that supports Docker. - Visit the following resources to learn more: - [@official@What is a Container?](https://www.docker.com/resources/what-container/) -- [@article@Introduction to Containers - AWS Skill Builder](https://explore.skillbuilder.aws/learn/course/106/introduction-to-containers) +- [@course@Introduction to Containers - AWS Skill Builder](https://explore.skillbuilder.aws/learn/course/106/introduction-to-containers) - [@feed@Explore top posts about Containers](https://app.daily.dev/tags/containers?ref=roadmapsh) diff --git a/src/data/roadmaps/docker/content/100-introduction/101-need-for-containers.md b/src/data/roadmaps/docker/content/100-introduction/101-need-for-containers.md index b936adb11..c710535f1 100644 --- a/src/data/roadmaps/docker/content/100-introduction/101-need-for-containers.md +++ b/src/data/roadmaps/docker/content/100-introduction/101-need-for-containers.md @@ -1,12 +1,6 @@ # Need for Containers -In the world of software development and deployment, consistency and efficiency are crucial. Before containers came into the picture, developers often faced challenges when deploying applications across different environments including: - -- **Inconsistent environments:** Developers often work in different environments which might have different configurations and libraries compared to production servers. This leads to compatibility issues in deploying applications. - -- **Inefficient resource utilization:** Virtual Machines (VMs) were widely used to overcome environment inconsistency. However, VMs require an entire OS to be running for each application, making the resource utilization inefficient. - -- **Slow processes and scalability issues:** Traditional deployment methods have a slower time to market and scaling difficulties, which hinders fast delivery of software updates. +Containers solve the issue around inconsistent environments when working in large teams. Before containers or virtual environments, a lot of issues and time loss was caused by having to install and configure local environments to build projects shared by co-workers or freinds. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/100-introduction/102-bare-metal-vm-containers.md b/src/data/roadmaps/docker/content/100-introduction/102-bare-metal-vm-containers.md index 7a6421eef..267bfdb80 100644 --- a/src/data/roadmaps/docker/content/100-introduction/102-bare-metal-vm-containers.md +++ b/src/data/roadmaps/docker/content/100-introduction/102-bare-metal-vm-containers.md @@ -1,17 +1,9 @@ # Bare Metal vs VM vs Containers -## Bare Metal - -Bare metal is a term used to describe a computer that is running directly on the hardware without any virtualization. This is the most performant way to run an application, but it is also the least flexible. You can only run one application per server, and you cannot easily move the application to another server. - -## Virtual Machines - -Virtual machines (VMs) are a way to run multiple applications on a single server. Each VM runs on top of a hypervisor, which is a piece of software that emulates the hardware of a computer. The hypervisor allows you to run multiple operating systems on a single server, and it also provides isolation between applications running on different VMs. - -## Containers - -Containers are a way to run multiple applications on a single server without the overhead of a hypervisor. Each container runs on top of a container engine, which is a piece of software that emulates the operating system of a computer. +Bare metal is a term used to describe a computer that is running directly on the hardware without any virtualization. This is the most performant way to run an application, but it is also the least flexible. You can only run one application per server, and you cannot easily move the application to another server. Virtual machines (VMs) are a way to run multiple applications on a single server. Each VM runs on top of a hypervisor, which is a piece of software that emulates the hardware of a computer. The hypervisor allows you to run multiple operating systems on a single server, and it also provides isolation between applications running on different VMs. Containers are a way to run multiple applications on a single server without the overhead of a hypervisor. Each container runs on top of a container engine, which is a piece of software that emulates the operating system of a computer. You can learn more from the following resources: - [@article@History of Virtualization](https://courses.devopsdirective.com/docker-beginner-to-pro/lessons/01-history-and-motivation/03-history-of-virtualization) +- [@article@Bare Metal Machine](https://glossary.cncf.io/bare-metal-machine/) +- [@article@What is a Virtual Machine?](https://azure.microsoft.com/en-au/resources/cloud-computing-dictionary/what-is-a-virtual-machine) diff --git a/src/data/roadmaps/docker/content/100-introduction/103-docker-and-oci.md b/src/data/roadmaps/docker/content/100-introduction/103-docker-and-oci.md index dec138f56..2f41123e2 100644 --- a/src/data/roadmaps/docker/content/100-introduction/103-docker-and-oci.md +++ b/src/data/roadmaps/docker/content/100-introduction/103-docker-and-oci.md @@ -2,16 +2,6 @@ The Open Container Initiative (OCI) is a Linux Foundation project which aims at creating industry standards for container formats and runtimes. Its primary goal is to ensure the compatibility and interoperability of container environments through defined technical specifications. -## OCI Specifications - -OCI has three main specifications: - -- **Runtime Specification (runtime-spec):** It defines the specification for executing a container via an isolation technology, like a container engine. The container runtime built by Docker, called 'containerd', has guided the development of the OCI runtime-spec. - -- **Image Specification (image-spec):** It defines the container image format, which describes the contents of a container and can be run by a compliant runtime. Docker's initial image format has led to the creation of the OCI image-spec. - -- **Distribution Specification (distribution-spec):** It defines an API protocol to facilitate and standardize the distribution of content. Docker's existing registry API served as a starting point and heavily influenced the design of the OCI Distro Spec. - You can learn more from the following resources: - [@official@Open Container Initiative](https://opencontainers.org/) diff --git a/src/data/roadmaps/docker/content/101-underlying-technologies/100-namespaces.md b/src/data/roadmaps/docker/content/101-underlying-technologies/100-namespaces.md index d292700d0..fea5111d3 100644 --- a/src/data/roadmaps/docker/content/101-underlying-technologies/100-namespaces.md +++ b/src/data/roadmaps/docker/content/101-underlying-technologies/100-namespaces.md @@ -1,16 +1,8 @@ # What are Namespaces? -In the Linux kernel, namespaces are a feature that allows the isolation of various system resources, making it possible for a process and its children to have a view of a subset of the system that is separate from other processes. Namespaces help to create an abstraction layer to keep containerized processes separate from one another and from the host system. - -There are several types of namespaces in Linux, including: - -- **PID (Process IDs)**: Isolates the process ID number space, which means that processes within a container only see their own processes, not those on the host or in other containers. -- **Network (NET)**: Provides each container with a separate view of the network stack, including its own network interfaces, routing tables, and firewall rules. -- **Mount (MNT)**: Isolates the file system mount points in such a way that each container has its own root file system, and mounted resources appear only within that container. -- **UTS (UNIX Time Sharing System)**: Allows each container to have its own hostname and domain name, separate from other containers and the host system. -- **User (USER)**: Maps user and group identifiers between the container and the host, so different permissions can be set for resources within the container. -- **IPC (Inter-Process Communication)**: Allows or restricts the communication between processes in different containers. +Docker namespaces are a fundamental feature of Linux that Docker uses to create isolated environments for containers. They provide a layer of isolation by creating separate instances of global system resources, making each container believe it has its own unique set of resources. Docker utilizes several types of namespaces, including PID (Process ID), NET (Network), MNT (Mount), UTS (Unix Timesharing System), IPC (InterProcess Communication), and USER namespaces and by leveraging these namespaces, Docker can create lightweight, portable, and secure containers that run consistently across different environments. Visit the following resources to learn more: - [@official@Docker Namespaces](https://docs.docker.com/engine/security/userns-remap/) +- [@article@Linux Namespaces](https://man7.org/linux/man-pages/man7/namespaces.7.html) diff --git a/src/data/roadmaps/docker/content/101-underlying-technologies/101-cgroups.md b/src/data/roadmaps/docker/content/101-underlying-technologies/101-cgroups.md index 1b610c870..1ed8d9abd 100644 --- a/src/data/roadmaps/docker/content/101-underlying-technologies/101-cgroups.md +++ b/src/data/roadmaps/docker/content/101-underlying-technologies/101-cgroups.md @@ -1,10 +1,9 @@ # cgroups -**cgroups** or **control groups** is a Linux kernel feature that allows you to allocate and manage resources, such as CPU, memory, network bandwidth, and I/O, among groups of processes running on a system. It plays a crucial role in providing resource isolation and limiting the resources that a running container can use. - -Docker utilizes cgroups to enforce resource constraints on containers, allowing them to have a consistent and predictable behavior. Below are some of the key features and benefits of cgroups in the context of Docker containers: +cgroups or "control groups" are a Linux kernel feature that allows you to allocate and manage resources, such as CPU, memory, network bandwidth, and I/O, among groups of processes running on a system. It plays a crucial role in providing resource isolation and limiting the resources that a running container can use. Docker utilizes cgroups to enforce resource constraints on containers, allowing them to have a consistent and predictable behavior. Below are some of the key features and benefits of cgroups in the context of Docker containers: Visit the following resources to learn more: - [@official@Control Groups](https://www.docker.com/resources/what-container/#control-groups) - [@article@Control Groups - Medium](https://medium.com/@furkan.turkal/how-does-docker-actually-work-the-hard-way-a-technical-deep-diving-c5b8ea2f0422) +- [@video@An introduction to cgroups, runc & containerD](https://www.youtube.com/watch?v=u1LeMndEk70) \ No newline at end of file diff --git a/src/data/roadmaps/docker/content/102-installation-setup/100-docker-desktop.md b/src/data/roadmaps/docker/content/102-installation-setup/100-docker-desktop.md index 97e7801c5..a9b34c7a0 100644 --- a/src/data/roadmaps/docker/content/102-installation-setup/100-docker-desktop.md +++ b/src/data/roadmaps/docker/content/102-installation-setup/100-docker-desktop.md @@ -2,14 +2,6 @@ Docker Desktop is an easy-to-install application that enables developers to quickly set up a Docker environment on their desktop machines. It is available for both Windows and macOS operating systems. Docker Desktop is designed to simplify the process of managing and running Docker containers, providing a user-friendly interface and seamless integration with the host operating system. -## Installation - -To install Docker Desktop on your machine, follow these steps: - -- **Download the installer**: You can download the installer for your operating system from the Docker Desktop website. Make sure to choose the appropriate version (Windows or Mac). -- **Run the installer**: Double-click on the downloaded installer file and follow the setup wizard to complete the installation process. -- **Launch Docker Desktop**: Once the installation is complete, start Docker Desktop and sign in with your Docker Hub account. If you don't have an account, you can sign up for a free account on the Docker Hub website. - Learn more from the following resources: - [@official@Docker Desktop Documentation](https://docs.docker.com/desktop/) diff --git a/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md b/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md index 2958e855d..2a341cae9 100644 --- a/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md +++ b/src/data/roadmaps/docker/content/102-installation-setup/101-docker-engine.md @@ -2,12 +2,8 @@ There is often confusion between "Docker Desktop" and "Docker Engine". Docker Engine refers specifically to a subset of the Docker Desktop components which are free and open source and can be installed only on Linux. Docker Engine can build container images, run containers from them, and generally do most things that Docker Desktop can, but it is Linux only and doesn't provide all of the developer experience polish that Docker Desktop provides. -Docker Engine includes: - -- Docker Command Line Interface (CLI) -- Docker daemon (dockerd), exposing the Docker Application Programming Interface (API) - For more information about docker engine see: - [@official@Docker Engine - Docker Documentation](https://docs.docker.com/engine/) +- [@video@Docker Engine for Linux Servers Setup and Tips](https://www.youtube.com/watch?v=YeF7ObTnDwc) - [@feed@Explore top posts about Docker](https://app.daily.dev/tags/docker?ref=roadmapsh) diff --git a/src/data/roadmaps/docker/content/102-installation-setup/index.md b/src/data/roadmaps/docker/content/102-installation-setup/index.md index f7812eff6..6204793d9 100644 --- a/src/data/roadmaps/docker/content/102-installation-setup/index.md +++ b/src/data/roadmaps/docker/content/102-installation-setup/index.md @@ -1,6 +1,6 @@ # Installation Setup -Docker provides a desktop application called **Docker Desktop** that simplifies the installation and setup process. There is also another option to install using the **Docker Engine**. +Docker provides a desktop application called*Docker Desktop that simplifies the installation and setup process. There is also another option to install using the Docker Engine but be aware that installing just the Docker Engine will not provide you with any GUI capabilites. - [@official@Docker Desktop website](https://www.docker.com/products/docker-desktop) - [@official@Docker Engine](https://docs.docker.com/engine/install/) diff --git a/src/data/roadmaps/docker/content/104-data-persistence/100-ephemeral-container-fs.md b/src/data/roadmaps/docker/content/104-data-persistence/100-ephemeral-container-fs.md index 14fb917bb..cf90a4eea 100644 --- a/src/data/roadmaps/docker/content/104-data-persistence/100-ephemeral-container-fs.md +++ b/src/data/roadmaps/docker/content/104-data-persistence/100-ephemeral-container-fs.md @@ -1,19 +1,8 @@ # Ephemeral FS -By default, the storage within a Docker container is ephemeral, meaning that any data changes or modifications made inside a container will only persist as long as the container is running. Once the container is stopped and removed, all the associated data will be lost. This is because Docker containers are designed to be stateless by nature. - -This temporary or short-lived storage is called the "ephemeral container file system". It is an essential feature of Docker, as it enables fast and consistent deployment of applications across different environments without worrying about the state of a container. - -## Ephemeral FS and Data Persistence - -As any data stored within the container's ephemeral FS is lost when the container is stopped and removed, it poses a challenge to data persistence in applications. This is especially problematic for applications like databases, which require data to be persisted across multiple container life cycles. - -To overcome these challenges, Docker provides several methods for data persistence, such as: - -- **Volumes**: A Docker managed storage option, stored outside the container's FS, allowing data to be persisted across container restarts and removals. -- **Bind mounts**: Mapping a host machine's directory or file into a container, effectively sharing host's storage with the container. -- **tmpfs mounts**: In-memory storage, useful for cases where just the persistence of data within the life-cycle of the container is required. +By default, the storage within a Docker container is ephemeral, meaning that any data changes or modifications made inside a container will only persist as long as the container is running. Once the container is stopped and removed, all the associated data will be lost. This is because Docker containers are designed to be stateless by nature. This temporary or short-lived storage is called the "ephemeral container file system". It is an essential feature of Docker, as it enables fast and consistent deployment of applications across different environments without worrying about the state of a container. Visit the following resources to learn more: - [@official@Data Persistence - Docker Documentation](https://docs.docker.com/get-started/docker-concepts/running-containers/persisting-container-data/) +- [@video@Docker Concepts - Persisting container data](https://www.youtube.com/watch?v=10_2BjqB_Ls) diff --git a/src/data/roadmaps/docker/content/104-data-persistence/101-volume-mounts.md b/src/data/roadmaps/docker/content/104-data-persistence/101-volume-mounts.md index 186cd8244..688d98527 100644 --- a/src/data/roadmaps/docker/content/104-data-persistence/101-volume-mounts.md +++ b/src/data/roadmaps/docker/content/104-data-persistence/101-volume-mounts.md @@ -2,58 +2,8 @@ Volume mounts are a way to map a folder or file on the host system to a folder or file inside a container. This allows the data to persist outside the container even when the container is removed. Additionally, multiple containers can share the same volume, making data sharing between containers easy. -## Creating a Volume - -To create a volume in Docker, you need to run the following command: - -```bash -docker volume create my-volume -``` - -This command will create a volume named `my-volume`. You can inspect the details of the created volume using the command: - -```bash -docker volume inspect my-volume -``` - -## Mounting a Volume in a Container - -To mount a volume to a container, you need to use the `-v` or `--mount` flag while running the container. Here's an example: - -Using `-v` flag: - -```bash -docker run -d -v my-volume:/data your-image -``` - -Using `--mount` flag: - -```bash -docker run -d --mount source=my-volume,destination=/data your-image -``` - -In both examples above, `my-volume` is the name of the volume we created earlier, and `/data` is the path inside the container where the volume will be mounted. - -## Sharing Volumes Between Containers - -To share a volume between multiple containers, simply mount the same volume on multiple containers. Here's how to share `my-volume` between two containers running different images: - -```bash -docker run -d -v my-volume:/data1 image1 -docker run -d -v my-volume:/data2 image2 -``` - -In this example, `image1` and `image2` would have access to the same data stored in `my-volume`. - -## Removing a Volume - -To remove a volume, you can use the `docker volume rm` command followed by the volume name: - -```bash -docker volume rm my-volume -``` - Visit the following resources to learn more: - [@official@Docker Volumes](https://docs.docker.com/storage/volumes/). - [@official@Docker Volume Flags](https://docs.docker.com/storage/bind-mounts/#choose-the--v-or---mount-flag) +- [@video@Docker Volumes explained in 6 minutes](https://www.youtube.com/watch?v=p2PH_YPCsis) diff --git a/src/data/roadmaps/docker/content/104-data-persistence/102-bind-mounts.md b/src/data/roadmaps/docker/content/104-data-persistence/102-bind-mounts.md index eb81f5773..21eae9cef 100644 --- a/src/data/roadmaps/docker/content/104-data-persistence/102-bind-mounts.md +++ b/src/data/roadmaps/docker/content/104-data-persistence/102-bind-mounts.md @@ -5,3 +5,4 @@ Bind mounts have limited functionality compared to volumes. When you use a bind Visit the following resources to learn more: - [@official@Docker Bind Mounts](https://docs.docker.com/storage/bind-mounts/) +- [@article@How to Use Bind Mount in Docker?](https://www.geeksforgeeks.org/how-to-use-bind-mount-in-docker/) diff --git a/src/data/roadmaps/docker/content/105-using-third-party-images/100-databases.md b/src/data/roadmaps/docker/content/105-using-third-party-images/100-databases.md index e6c8fea05..69599eabe 100644 --- a/src/data/roadmaps/docker/content/105-using-third-party-images/100-databases.md +++ b/src/data/roadmaps/docker/content/105-using-third-party-images/100-databases.md @@ -2,26 +2,7 @@ Running your database in a Docker container can help streamline your development process and ease deployment. Docker Hub provides numerous pre-made images for popular databases such as MySQL, PostgreSQL, and MongoDB. -## Example: Using PostgreSQL Image - -For PostgreSQL, follow similar steps to those outlined above. First, search for the official image: - -```bash -docker search postgres -``` - -Pull the image: - -```bash -docker pull postgres -``` - -Run a PostgreSQL container, specifying environment variables such as `POSTGRES_PASSWORD`: - -```bash -docker run --name some-postgres -e POSTGRES_PASSWORD=my-secret-pw -p 5432:5432 -d postgres -``` - Visit the following resources to learn more: - [@official@Containerized Databases](https://docs.docker.com/guides/use-case/databases/) +- [@video@How to Setup MySQL Database with Docker](https://www.youtube.com/watch?v=igc2zsOKPJs) diff --git a/src/data/roadmaps/docker/content/105-using-third-party-images/101-interactive-test-environments.md b/src/data/roadmaps/docker/content/105-using-third-party-images/101-interactive-test-environments.md index ca60f9844..412fbcb23 100644 --- a/src/data/roadmaps/docker/content/105-using-third-party-images/101-interactive-test-environments.md +++ b/src/data/roadmaps/docker/content/105-using-third-party-images/101-interactive-test-environments.md @@ -2,26 +2,7 @@ Docker allows you to create isolated, disposable environments that can be deleted once you're done with testing. This makes it much easier to work with third party software, test different dependencies or versions, and quickly experiment without the risk of damaging your local setup. -## Creating an Interactive Test Environment with Docker - -To demonstrate how to setup an interactive test environment, let's use the Python programming language as an example. We will use a public Python image available on Docker Hub. - -- To start an interactive test environment using the Python image, simply run the following command: - -```bash -docker run -it --rm python -``` - -Here, `-it` flag ensures that you're running the container in interactive mode with a tty, and `--rm` flag will remove the container once it is stopped. - -- You should now be inside an interactive Python shell within the container. You can execute any Python command or install additional packages using `pip` as you normally would. - -```python -print("Hello, Docker!") -``` - -- Once you are done with your interactive session, you can simply type `exit()` or press `CTRL+D` to exit the container. The container will be automatically removed as specified by the `--rm` flag. - Visit the following resources to learn more: +- [@official@Launch a Dev Environment](https://docs.docker.com/desktop/dev-environments/create-dev-env/) - [@article@Test Environments - Medium](https://manishsaini74.medium.com/containerized-testing-orchestrating-test-environments-with-docker-5201bfadfdf2) diff --git a/src/data/roadmaps/docker/content/105-using-third-party-images/102-command-line-utilities.md b/src/data/roadmaps/docker/content/105-using-third-party-images/102-command-line-utilities.md index a3f904110..5f9514609 100644 --- a/src/data/roadmaps/docker/content/105-using-third-party-images/102-command-line-utilities.md +++ b/src/data/roadmaps/docker/content/105-using-third-party-images/102-command-line-utilities.md @@ -2,26 +2,6 @@ Docker images can include command line utilities or standalone applications that we can run inside containers. -## BusyBox - -BusyBox is a small (1-2 Mb) and simple command line application that provides a large number of the commonly used Unix utilities, such as `awk`, `grep`, `vi`, etc. To run BusyBox inside a Docker container, you simply need to pull the image and run it with Docker: - -```bash -docker pull busybox -docker run -it busybox /bin/sh -``` - -### cURL - -cURL is a well-known command line tool that can be used to transfer data using various network protocols. It is often used for testing APIs or downloading files from the internet. To use cURL inside a Docker container, you can use the official cURL image available on Docker Hub: - -```bash -docker pull curlimages/curl -docker run --rm curlimages/curl https://example.com -``` - -In this example, the `--rm` flag is used to remove the container after the command has finished running. - Visit the following resources to learn more: - [@official@Docker Images](https://docs.docker.com/engine/reference/commandline/images/) diff --git a/src/data/roadmaps/docker/content/105-using-third-party-images/index.md b/src/data/roadmaps/docker/content/105-using-third-party-images/index.md index 50fa8c0b5..72e475b4d 100644 --- a/src/data/roadmaps/docker/content/105-using-third-party-images/index.md +++ b/src/data/roadmaps/docker/content/105-using-third-party-images/index.md @@ -1,18 +1,7 @@ # Using Third Party Images -Third-party images are pre-built Docker container images that are available on [Docker Hub](https://hub.docker.com) or other container registries. These images are created and maintained by individuals or organizations and can be used as a starting point for your containerized applications. +Third-party images are pre-built Docker container images that are available on Docker Hub or other container registries. These images are created and maintained by individuals or organizations and can be used as a starting point for your containerized applications. -## Using an Image in Your Dockerfile - -For example: If you're looking for a `Node.js` image, you can search for "node" on Docker Hub and you'll find the official Node.js image along with many other community-maintained images. - -To use a third-party image in your Dockerfile, simply set the image name as the base image using the `FROM` directive. Here's an example using the official Node.js image: - -```dockerfile -FROM node:20 - -# The rest of your Dockerfile... -``` Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/106-building-container-images/100-dockerfiles.md b/src/data/roadmaps/docker/content/106-building-container-images/100-dockerfiles.md index 8416b2a56..87667b3a6 100644 --- a/src/data/roadmaps/docker/content/106-building-container-images/100-dockerfiles.md +++ b/src/data/roadmaps/docker/content/106-building-container-images/100-dockerfiles.md @@ -2,39 +2,6 @@ A Dockerfile is a text document that contains a list of instructions used by the Docker engine to build an image. Each instruction in the Dockerfile adds a new layer to the image. Docker will build the image based on these instructions, and then you can run containers from the image. -## Structure of a Dockerfile - -A Dockerfile is organized in a series of instructions, one per line. Each instruction has a specific format. - -```bash -INSTRUCTION arguments -``` - -The following is an example of a simple Dockerfile: - -```bash -# Use an official Python runtime as a parent image -FROM python:3.7-slim - -# Set the working directory to /app -WORKDIR /app - -# Copy the current directory contents into the container at /app -COPY . /app - -# Install any needed packages specified in requirements.txt -RUN pip install --trusted-host pypi.python.org -r requirements.txt - -# Make port 80 available to the world outside this container -EXPOSE 80 - -# Define environment variable -ENV NAME World - -# Run app.py when the container launches -CMD ["python", "app.py"] -``` - Visit the following resources to learn more: - [@official@Dockerfile Reference](https://docs.docker.com/engine/reference/builder/) diff --git a/src/data/roadmaps/docker/content/106-building-container-images/101-efficient-layer-caching.md b/src/data/roadmaps/docker/content/106-building-container-images/101-efficient-layer-caching.md index b9df658e5..ef933f343 100644 --- a/src/data/roadmaps/docker/content/106-building-container-images/101-efficient-layer-caching.md +++ b/src/data/roadmaps/docker/content/106-building-container-images/101-efficient-layer-caching.md @@ -1,27 +1,8 @@ # Efficient Layer Caching -When building container images, Docker caches the newly created layers. These layers can then be used later on when building other images, reducing the build time and minimizing bandwidth usage. However, to make the most of this caching mechanism, you should be aware of how to efficiently use layer caching. - -## How Docker Layer Caching Works - -Docker creates a new layer for each instruction (e.g., `RUN`, `COPY`, `ADD`, etc.) in the Dockerfile. If the instruction hasn't changed since the last build, Docker will reuse the existing layer. - -For example, consider the following Dockerfile: - -```dockerfile -FROM node:14 - -WORKDIR /app - -COPY package.json /app/ - -RUN npm install - -COPY . /app/ - -CMD ["npm", "start"] -``` +When building container images, Docker caches the newly created layers. These layers can then be used later on when building other images, reducing the build time and minimizing bandwidth usage. However, to make the most of this caching mechanism, you should be aware of how to efficiently use layer caching. Docker creates a new layer for each instruction (e.g., `RUN`, `COPY`, `ADD`, etc.) in the Dockerfile. If the instruction hasn't changed since the last build, Docker will reuse the existing layer. Visit the following resources to learn more: - [@official@Docker Layer Caching](https://docs.docker.com/build/cache/) +- [@video@Layer Caching](https://www.youtube.com/watch?v=_nMpndIyaBU) \ No newline at end of file diff --git a/src/data/roadmaps/docker/content/106-building-container-images/102-image-size-and-security.md b/src/data/roadmaps/docker/content/106-building-container-images/102-image-size-and-security.md index c005e313b..87b05f9b8 100644 --- a/src/data/roadmaps/docker/content/106-building-container-images/102-image-size-and-security.md +++ b/src/data/roadmaps/docker/content/106-building-container-images/102-image-size-and-security.md @@ -1,35 +1,6 @@ # Reducing Image Size -- **Use an appropriate base image:** Choose a smaller, more lightweight base image that includes only the necessary components for your application. For example, consider using the `alpine` variant of an official image, if available, as it's typically much smaller in size. - - ```dockerfile - FROM node:14-alpine - ``` - -- **Run multiple commands in a single `RUN` statement:** Each `RUN` statement creates a new layer in the image, which contributes to the image size. Combine multiple commands into a single `RUN` statement using `&&` to minimize the number of layers and reduce the final image size. - - ```dockerfile - RUN apt-get update && \ - apt-get install -y some-required-package - ``` - -- **Remove unnecessary files in the same layer:** When you install packages or add files during the image build process, remove temporary or unused files in the same layer to reduce the final image size. - - ```dockerfile - RUN apt-get update && \ - apt-get install -y some-required-package && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - ``` - -- **Use multi-stage builds:** Use multi-stage builds to create smaller images. Multi-stage builds allow you to use multiple `FROM` statements in your Dockerfile. Each `FROM` statement creates a new stage in the build process. You can copy files from one stage to another using the `COPY --from` statement. - -- **Use `.dockerignore` file:** Use a `.dockerignore` file to exclude unnecessary files from the build context that might cause cache invalidation and increase the final image size. - - ```dockerfile - node_modules - npm-debug.log - ``` +Reducing Docker image size is crucial for optimizing storage, transfer speeds, and deployment times. Key strategies include using minimal base images like Alpine Linux, leveraging multi-stage builds to exclude unnecessary build tools, removing unnecessary files and packages, and minimizing the number of layers by combining commands. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/106-building-container-images/index.md b/src/data/roadmaps/docker/content/106-building-container-images/index.md index 4aa50663d..551a7183b 100644 --- a/src/data/roadmaps/docker/content/106-building-container-images/index.md +++ b/src/data/roadmaps/docker/content/106-building-container-images/index.md @@ -1,33 +1,6 @@ # Building Container Images -Container images are executable packages that include everything required to run an application: code, runtime, system tools, libraries, and settings. By building custom images, you can deploy applications seamlessly with all their dependencies on any Docker-supported platform. - -## Dockerfile - -The key component in building a container image is the `Dockerfile`. It is essentially a script containing instructions on how to assemble a Docker image. Each instruction in the Dockerfile creates a new layer in the image, making it easier to track changes and minimize the image size. Here's a simple example of a Dockerfile: - -```dockerfile -# Use an official Python runtime as a parent image -FROM python:3.7-slim - -# Set the working directory to /app -WORKDIR /app - -# Copy the current directory contents into the container at /app -COPY . /app - -# Install any needed packages specified in requirements.txt -RUN pip install --trusted-host pypi.python.org -r requirements.txt - -# Make port 80 available to the world outside this container -EXPOSE 80 - -# Define environment variable -ENV NAME World - -# Run app.py when the container launches -CMD ["python", "app.py"] -``` +Container images are executable packages that include everything required to run an application: code, runtime, system tools, libraries, and settings. By building custom images, you can deploy applications seamlessly with all their dependencies on any Docker-supported platform. The key component in building a container image is the `Dockerfile`. It is essentially a script containing instructions on how to assemble a Docker image. Each instruction in the Dockerfile creates a new layer in the image, making it easier to track changes and minimize the image size. Here's a simple example of a Dockerfile: Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/107-container-registries/100-dockerhub.md b/src/data/roadmaps/docker/content/107-container-registries/100-dockerhub.md index eb0fce404..08c02ec7c 100644 --- a/src/data/roadmaps/docker/content/107-container-registries/100-dockerhub.md +++ b/src/data/roadmaps/docker/content/107-container-registries/100-dockerhub.md @@ -1,31 +1,6 @@ # DockerHub -DockerHub is a cloud-based registry service provided by Docker Inc. It is the default public container registry where you can store, manage, and distribute your Docker images. - -## Features of DockerHub - -- **Public and private repositories:** Store your images in public repositories that are accessible to everyone, or opt for private repositories with access limited to your team or organization. - -- **Automated Builds:** DockerHub integrates with popular code repositories such as GitHub and Bitbucket, allowing you to set up automated builds for your Docker images - -- **Webhooks:** DockerHub allows you to configure webhooks to notify other applications or services when an image has been built or updated. - -- **Organizations and Teams:** Make collaboration easy by creating organizations and teams to manage access to your images and repositories. - -- **Official Images:** DockerHub provides a curated set of official images for popular software like MongoDB, Node.js, Redis, etc. These images are maintained by Docker Inc. - -To push an image to DockerHub, you need to log in to the registry using your DockerHub credentials: - -```bash -docker tag your-image your-username/your-repository:your-tag -docker push your-username/your-repository:your-tag -``` - -To pull images from DockerHub, you can use the `docker pull` command: - -```bash -docker pull your-username/your-repository:your-tag -``` +Docker Hub is a cloud-based registry service that serves as the primary public repository for Docker container images. It allows users to store, share, and distribute Docker images, offering both free public repositories and paid private ones and integrates seamlessly with Docker CLI, enabling easy pushing and pulling of images. It features official images maintained by software vendors, automated builds linked to source code repositories, and webhooks for triggering actions based on repository events. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/107-container-registries/101-dockerhub-alt.md b/src/data/roadmaps/docker/content/107-container-registries/101-dockerhub-alt.md index 5ddd1b7c6..8dfd93ff4 100644 --- a/src/data/roadmaps/docker/content/107-container-registries/101-dockerhub-alt.md +++ b/src/data/roadmaps/docker/content/107-container-registries/101-dockerhub-alt.md @@ -1,22 +1,6 @@ # DockerHub Alternatives -These alternatives provide a different set of features and functionalities that may suit your container registry needs. - -## Artifact Registry - -Artifact Registry is a container registry service provided by Google Cloud Platform (GCP). It offers a fully managed, private Docker container registry that integrates with other GCP services like Cloud Build, Cloud Run, and Kubernetes Engine. - -### Amazon Elastic Container Registry (ECR) - -Amazon Elastic Container Registry (ECR) is a fully-managed Docker container registry by Amazon Web Services (AWS) that simplifies the process of storing, managing, and deploying Docker images. - -### Azure Container Registry (ACR) - -Azure Container Registry (ACR) is Microsoft Azure's container registry offering. It provides a wide range of functionalities, including geo-replication for high availability. - -### GitHub Container Registry (GHCR) - -GitHub Container Registry (GHCR) is the container registry service provided by GitHub. It enhances the support for Docker in GitHub Packages by providing a more streamlined experience for managing and deploying Docker images. +Container images can be stored in many different registries, not just Dockerhub. Most major cloud platforms now provide container registries such as "Artifact Registry" on Google Cloud Platform, Elastic Container Registry on AWS and Azure Container Registry on Microsoft Azure. GitHub also provides it's own resistry which is useful when container builds are included in your GitHub Actions workflow. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/107-container-registries/102-image-tagging-best-practices.md b/src/data/roadmaps/docker/content/107-container-registries/102-image-tagging-best-practices.md index 4b2d9f096..26c764d4d 100644 --- a/src/data/roadmaps/docker/content/107-container-registries/102-image-tagging-best-practices.md +++ b/src/data/roadmaps/docker/content/107-container-registries/102-image-tagging-best-practices.md @@ -1,22 +1,6 @@ # Image Tagging Best Practices -Properly tagging your Docker images is crucial for efficient container management and deployment. In this section, we will discuss some best practices for image tagging. - -## Use Semantic Versioning - -When tagging your image, it is recommended to follow Semantic Versioning guidelines. Semantic versioning is a widely recognized method that can help better maintain your application. Docker image tags should have the following structure `..`. Example: `3.2.1`. - -## Tag the Latest Version - -Docker allows you to tag an image as 'latest' in addition to a version number. It is a common practice to tag the most recent stable version of your image as 'latest' so that users can quickly access it without having to specify a version number. However, it is important to keep this tag updated as the new versions are released. - -```sh -docker build -t your-username/app-name:latest . -``` - -## Use Automated Build and Tagging Tools - -Consider using CI/CD tools (Jenkins, GitLab CI, Travis-CI) to automate image builds and tagging based on commits, branches, or other rules. This ensures consistency and reduces the likelihood of errors caused by manual intervention. +Docker image tagging best practices center on creating clear, consistent, and informative labels. Adopt semantic versioning for releases, avoid the ambiguous "latest" tag in production, and include relevant metadata like build dates or Git commit hashes. Implement a strategy distinguishing between environments, use descriptive tags for variants, and automate tagging in CI/CD pipelines. Regularly clean up old tags and document your conventions to maintain clarity and facilitate team-wide adoption. These practices ensure efficient image management and improve collaboration across your organization. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/107-container-registries/index.md b/src/data/roadmaps/docker/content/107-container-registries/index.md index c12e7c87b..c38f84c13 100644 --- a/src/data/roadmaps/docker/content/107-container-registries/index.md +++ b/src/data/roadmaps/docker/content/107-container-registries/index.md @@ -1,14 +1,6 @@ # Container Registries -A **Container Registry** is a centralized storage and distribution system for Docker container images. It allows developers to easily share and deploy applications in the form of these images. Container registries play a crucial role in the deployment of containerized applications, as they provide a fast, reliable, and secure way to distribute container images across various production environments. - -Below is a list of popular container registries available today: - -- **Docker Hub**: Docker Hub is the default registry for public Docker images and serves as a platform for sharing and distributing images among developers. - -- **Artifact Registry**: Artifact Registry is a managed container registry provided by Google Cloud Platform (GCP), offering private storage and distribution of container images. - -- **Amazon Elastic Container Registry (ECR)**: Amazon ECR is a fully-managed Docker container registry provided by Amazon Web Services, offering high scalability and performance for storing, managing, and deploying container images. +A Container Registry is a centralized storage and distribution system for Docker container images. It allows developers to easily share and deploy applications in the form of these images. Container registries play a crucial role in the deployment of containerized applications, as they provide a fast, reliable, and secure way to distribute container images across various production environments. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/108-running-containers/100-docker-run.md b/src/data/roadmaps/docker/content/108-running-containers/100-docker-run.md index 430c4217e..ba818fade 100644 --- a/src/data/roadmaps/docker/content/108-running-containers/100-docker-run.md +++ b/src/data/roadmaps/docker/content/108-running-containers/100-docker-run.md @@ -1,33 +1,6 @@ # Running Containers -The `docker run` command creates a new container from the specified image and starts it. - -The basic syntax for the `docker run` command is as follows: - -```bash -docker run [OPTIONS] IMAGE [COMMAND] [ARG...] -``` - -- `OPTIONS`: These are command-line flags that can be used to adjust the container's settings, like memory constraints, ports, environment variables, etc. -- `IMAGE`: The Docker image that the container will run. This can be an image from Docker Hub or your own image that is stored locally. -- `COMMAND`: This is the command that will be executed inside the container when it starts. If not specified, the default entrypoint of the image will be used. -- `ARG...`: These are optional arguments that can be passed to the command being executed. - -## Examples - -Here are some sample commands to help you understand how to use `docker run`: - -- Run an interactive session of an Ubuntu container: - -```bash -docker run -it --name=my-ubuntu ubuntu -``` - -- Run an Nginx web server and publish the port 80 on the host: - -```bash -docker run -d --name=my-nginx -p 80:80 nginx -``` +The `docker run` command creates and starts a new container from a specified image. It combines `docker create` and `docker start` operations, offering a range of options to customize the container's runtime environment. Users can set environment variables, map ports and volumes, define network connections, and specify resource limits. The command supports detached mode for background execution, interactive mode for shell access, and the ability to override the default command defined in the image. Common flags include `-d` for detached mode, `-p` for port mapping, `-v` for volume mounting, and `--name` for assigning a custom container name. Understanding `docker run` is fundamental to effectively deploying and managing Docker containers. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/108-running-containers/101-docker-compose.md b/src/data/roadmaps/docker/content/108-running-containers/101-docker-compose.md index 067775b7e..89e6803e8 100644 --- a/src/data/roadmaps/docker/content/108-running-containers/101-docker-compose.md +++ b/src/data/roadmaps/docker/content/108-running-containers/101-docker-compose.md @@ -2,37 +2,7 @@ Docker Compose is a tool for defining and running multi-container Docker applications. It allows you to create, manage, and run your applications using a simple YAML file called `docker-compose.yml`. This file describes your application's services, networks, and volumes, allowing you to easily run and manage your containers using just a single command. -## Creating a Docker Compose File - -To create a `docker-compose.yml` file, start by specifying the version of Docker Compose you want to use, followed by the services you want to define. Here's an example of a basic `docker-compose.yml` file: - -```yaml -version: "3.9" -services: - web: - image: nginx:latest - ports: - - "80:80" - depends_on: - - db - db: - image: mysql:latest - environment: - MYSQL_ROOT_PASSWORD: mysecretpassword -``` - -The web server exposes its port 80 to the host machine and depends on the launch of the database (`db`). - -## Running Docker Compose - -To run your Docker Compose application, simply navigate to the directory containing your `docker-compose.yml` file and run the following command: - -```bash -docker-compose up -``` - -Docker Compose will read the file and start the defined services in the specified order. - Visit the following resources to learn more: -- [@official@Docker Compose documentation](https://docs.docker.com/compose/). +- [@official@Docker Compose documentation](https://docs.docker.com/compose/) +- [@video@Docker Compose Tutorial](https://www.youtube.com/watch?v=DM65_JyGxCo) diff --git a/src/data/roadmaps/docker/content/108-running-containers/102-runtime-config-options.md b/src/data/roadmaps/docker/content/108-running-containers/102-runtime-config-options.md index 35aca9e09..c53a1d94b 100644 --- a/src/data/roadmaps/docker/content/108-running-containers/102-runtime-config-options.md +++ b/src/data/roadmaps/docker/content/108-running-containers/102-runtime-config-options.md @@ -1,45 +1,8 @@ # Runtime Configuration Options -Runtime configuration options allow you to customize the behavior and resources of your Docker containers when you run them. These options can be helpful in managing container resources, security, and networking. - -Here's a brief summary of some commonly used runtime configuration options: - -- **CPU:** You can limit the CPU usage of a container with the `--cpus` and `--cpu-shares` options. `--cpus` limits the number of CPU cores a container can use, while `--cpu-shares` assigns relative share of CPU time for the container. - - ```bash - docker run --cpus=2 --cpu-shares=512 your-image - ``` - -- **Memory:** You can limit and reserve memory for a container using the `--memory` and `--memory-reservation` options. This can help prevent a container from consuming too many system resources. - - ```bash - docker run --memory=1G --memory-reservation=500M your-image - ``` - -- **User:** By default, containers run as the `root` user. To increase security, you can use the `--user` option to run a container as another user or UID. - - ```bash - docker run --user 1000 your-image - ``` - -- **Read-only root file system:** To prevent unwanted changes to the container file system, you can use the `--read-only` option to mount the root file system as read-only. - - ```bash - docker run --read-only your-image - ``` - -- **Publish Ports:** You can use the `--publish` (or `-p`) option to publish a container's ports to the host system. This allows external systems to access the containerized service. - - ```bash - docker run -p 80:80 your-image - ``` - -- **Hostname and DNS:** You can customize the hostname and DNS settings of a container using the `--hostname` and `--dns` options. - - ```bash - docker run --hostname=my-container --dns=8.8.8.8 your-image - ``` +Docker runtime configuration options give you powerful control over your containers' environments. By tweaking resource limits, network settings, security profiles, and logging drivers, you can optimize performance and enhance security. You'll also find options for setting environment variables, mounting volumes, and overriding default behaviors – all crucial for tailoring containers to your specific needs. For more advanced users, there are tools to adjust kernel capabilities and set restart policies. Whether you're using command-line flags or Docker Compose files, these options help ensure your containers run smoothly and consistently, no matter where they're deployed. Visit the following resources to learn more: - [@official@Docker Documentation](https://docs.docker.com/engine/reference/run/) +- [@article@Docker Runtime Arguments](https://galea.medium.com/docker-runtime-arguments-604593479f45) 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 aff40f292..98e83a233 100644 --- a/src/data/roadmaps/docker/content/108-running-containers/index.md +++ b/src/data/roadmaps/docker/content/108-running-containers/index.md @@ -1,38 +1,6 @@ # Running Containers -To start a new container, we use the `docker run` command followed by the image name. The basic syntax is as follows: - -```bash -docker run [options] IMAGE [COMMAND] [ARG...] -``` - -For example, to run the official Nginx image, we would use: - -```bash -docker run -d -p 8080:80 nginx -``` - -To list all running containers, use the `docker container ls` command. - -```bash -docker container ls -a -``` - -To access a running container's shell, use the `docker exec` command: - -```bash -docker exec -it CONTAINER_ID bash -``` - -To stop a running container, use the `docker stop` command followed by the container ID or name: - -```bash -docker container stop CONTAINER_ID -``` - -```bash -docker container rm CONTAINER_ID -``` +Running docker containers is typically done with a simple `docker run` command, which is a combination of the `docker create` and `docker start` commands. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/109-container-security/100-image-security.md b/src/data/roadmaps/docker/content/109-container-security/100-image-security.md index 67beb351f..56e4b3c72 100644 --- a/src/data/roadmaps/docker/content/109-container-security/100-image-security.md +++ b/src/data/roadmaps/docker/content/109-container-security/100-image-security.md @@ -1,18 +1,6 @@ # Image Security -Image security is a crucial aspect of deploying Docker containers in your environment. Ensuring the images you use are secure, up to date, and free of vulnerabilities is essential. In this section, we will review best practices and tools for securing and managing your Docker images. - -## Use Trusted Image Sources - -When pulling images from public repositories, always use trusted, official images as a starting point for your containerized applications. Official images are vetted by Docker and are regularly updated with security fixes. You can find these images on the Docker Hub or other trusted registries. - -## Scan Images for Vulnerabilities - -Regularly scan your images for known vulnerabilities using tools like Clair or Anchore. These tools can detect potential risks in your images and container configurations, allowing you to address them before pushing images to a registry or deploying them in production. - -## Sign and Verify Images - -To ensure the integrity and authenticity of your images, always sign them using Docker Content Trust (DCT). DCT uses digital signatures to guarantee that the images you pull or push are the ones you expect and haven't been tampered with in transit. +Image security is a crucial aspect of deploying Docker containers in your environment. Ensuring the images you use are secure, up to date, and free of vulnerabilities is essential. In this section, we will review best practices and tools for securing and managing your Docker images. When pulling images from public repositories, always use trusted, official images as a starting point for your containerized applications. Official images are vetted by Docker and are regularly updated with security fixes. You can find these images on the Docker Hub or other trusted registries. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/109-container-security/101-runtime-security.md b/src/data/roadmaps/docker/content/109-container-security/101-runtime-security.md index 701b26732..1db0fd3ae 100644 --- a/src/data/roadmaps/docker/content/109-container-security/101-runtime-security.md +++ b/src/data/roadmaps/docker/content/109-container-security/101-runtime-security.md @@ -1,21 +1,6 @@ # Runtime Security -Runtime security focuses on ensuring the security of Docker containers while they are running in production. This is a critical aspect of container security, as threats may arrive or be discovered after your containers have been deployed. - -- Ensure that your containers are regularly scanned for vulnerabilities, both in the images themselves and in the runtime environment. -- Isolate your containers' resources, such as CPU, memory, and network, to prevent a single compromised container from affecting other containers or the host system. -- Maintain audit logs of container activity to help with incident response, troubleshooting, and compliance. - -## Least Privilege Principle - -- Run your containers as a non-root user whenever possible. -- Avoid running privileged containers, which have access to all of the host's resources. -- Use Linux capabilities to strip away unnecessary permissions from your containers. - -## Read-only Filesystems - -- Use the `--read-only` flag when starting your containers to make their filesystems read-only. -- Implement volume mounts or `tmpfs` mounts for locations that require write access. +Runtime security in Docker focuses on ensuring the safety and integrity of containers during their execution, safeguarding against vulnerabilities and malicious activities that could arise while the containerized application is running. This involves monitoring container behavior for anomalies, implementing access controls to limit permissions, and employing tools to detect and respond to suspicious activity in real time. Effective runtime security also ensures that only verified images are deployed and continuously audits the system to maintain compliance, thereby providing a robust defense layer to prevent exploits and maintain the desired security posture throughout the container lifecycle. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/109-container-security/index.md b/src/data/roadmaps/docker/content/109-container-security/index.md index aa8ce1ee2..35f1a35ce 100644 --- a/src/data/roadmaps/docker/content/109-container-security/index.md +++ b/src/data/roadmaps/docker/content/109-container-security/index.md @@ -1,14 +1,6 @@ # Container Security -- Container security is a critical aspect of implementing and managing container technologies like Docker. It encompasses a set of practices, tools, and technologies designed to protect containerized applications and the infrastructure they run on. - -- Isolation is crucial for ensuring the robustness and security of containerized environments. Containers should be isolated from each other and the host system, to prevent unauthorized access and mitigate the potential damage in case an attacker manages to compromise one container. - -- Implementing best practices and specific security patterns during the development, deployment, and operation of containers is essential to maintaining a secure environment. - -- Access controls should be applied to both container management and container data, in order to protect sensitive information and maintain the overall security posture. - -- Containers can be vulnerable to attacks, as their images depend on a variety of packages and libraries. To mitigate these risks, vulnerability management should be included in the container lifecycle. +Container security encompasses a broad set of practices and tools aimed at protecting containerized applications from development through deployment and runtime. It involves securing the container image, ensuring that only trusted and non-vulnerable code is used, implementing strong access controls for container environments, and configuring containers to follow the principle of least privilege. Additionally, it includes monitoring for unexpected behavior, protecting communication between containers, and maintaining the host environment’s security. Effective container security integrates seamlessly into DevSecOps workflows to provide continuous visibility and protection across the container lifecycle without disrupting development speed or agility. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/110-docker-cli/100-images.md b/src/data/roadmaps/docker/content/110-docker-cli/100-images.md index 06df99d94..00047aceb 100644 --- a/src/data/roadmaps/docker/content/110-docker-cli/100-images.md +++ b/src/data/roadmaps/docker/content/110-docker-cli/100-images.md @@ -1,23 +1,8 @@ # Docker Images -Docker images are lightweight, standalone, and executable packages that include everything needed to run an application. These images contain all necessary dependencies, libraries, runtime, system tools, and code to enable the application to run consistently across different environments. +Docker images are lightweight, standalone, and executable software packages that include everything needed to run a piece of software, such as the application code, runtime, libraries, and system tools. They serve as the blueprint for creating containers and are built in layers, where each layer represents a file system change, allowing for efficient storage and distribution. Docker images can be stored in and pulled from container registries like Docker Hub, enabling developers to share, deploy, and version their applications consistently across different environments, ensuring reproducibility and simplifying the process of managing dependencies. -## Working with Docker Images +Learn more from the following resources: -Docker CLI provides several commands to manage and work with Docker images. Some essential commands include: - -- `docker image ls`: List all available images on your local system. -- `docker build`: Build an image from a Dockerfile. -- `docker image rm`: Remove one or more images. -- `docker pull`: Pull an image from a registry (e.g., Docker Hub) to your local system. -- `docker push`: Push an image to a repository. - -For example, to pull the official Ubuntu image from Docker Hub, you can run the following command: - -```bash -docker pull ubuntu:latest -``` - -## Sharing Images - -Docker images can be shared and distributed using container registries, such as Docker Hub, Google Container Registry, or Amazon Elastic Container Registry (ECR). Once your images are pushed to a registry, others can easily access and utilize them. +- [@article@What’s the Difference Between Docker Images and Containers?](https://aws.amazon.com/compare/the-difference-between-docker-images-and-containers/) +- [@video@What is an image?](https://www.youtube.com/watch?v=NyvT9REqLe4) \ No newline at end of file diff --git a/src/data/roadmaps/docker/content/110-docker-cli/101-containers.md b/src/data/roadmaps/docker/content/110-docker-cli/101-containers.md index e6c578faf..75f6787e7 100644 --- a/src/data/roadmaps/docker/content/110-docker-cli/101-containers.md +++ b/src/data/roadmaps/docker/content/110-docker-cli/101-containers.md @@ -1,22 +1,6 @@ # Containers -Containers can be thought of as lightweight, stand-alone, and executable software packages that include everything needed to run a piece of software, including the code, runtime, libraries, environment variables, and config files. Containers isolate software from its surroundings, ensuring that it works uniformly across different environments. - -## Working with Containers using Docker CLI - -Docker CLI offers several commands to help you create, manage, and interact with containers. Some common commands include: - -- `docker run`: Used to create and start a new container. - -- `docker container ls`: Lists running containers. - -- `docker container stop`: Stops a running container. - -- `docker container rm`: Removes a stopped container. - -- `docker exec`: Executes a command inside a running container. - -- `docker logs`: Fetches the logs of a container, useful for debugging issues. +Containers are isolated, lightweight environments that run applications using a shared operating system kernel, ensuring consistency and portability across different computing environments. They encapsulate everything needed to run an application, such as code, dependencies, and configurations, making it easy to move and run the containerized application anywhere. Using the Docker CLI, you can create, start, stop, and manage containers with commands like `docker run`, `docker ps` to list running containers, `docker stop` to halt them, and `docker exec` to interact with them in real time. The CLI provides a powerful interface for developers to build, control, and debug containers effortlessly, allowing for streamlined development and operational workflows. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/110-docker-cli/102-networks.md b/src/data/roadmaps/docker/content/110-docker-cli/102-networks.md index 4972eb3eb..b8d63fe1b 100644 --- a/src/data/roadmaps/docker/content/110-docker-cli/102-networks.md +++ b/src/data/roadmaps/docker/content/110-docker-cli/102-networks.md @@ -1,19 +1,9 @@ # Docker Networks -Docker networks provide an essential way of managing container communication. It allows containers to talk to each other and to the host machine using various network drivers. By understanding and utilizing different types of network drivers, you can design container networks to accommodate specific scenarios or application requirements. - -## Managing Docker Networks - -Docker CLI provides various commands to manage the networks. Here are a few useful commands: - -- List all networks: `docker network ls` -- Inspect a network: `docker network inspect ` -- Create a new network: `docker network create --driver ` -- Connect containers to a network: `docker network connect ` -- Disconnect containers from a network: `docker network disconnect ` -- Remove a network: `docker network rm ` +Docker networks enable containers to communicate with each other and with external systems, providing the necessary connectivity for microservices architectures. By default, Docker offers several network types such as bridge, host, and overlay, each suited for different use cases like isolated environments, high-performance scenarios, or multi-host communication. Using the Docker CLI, you can create, inspect, and manage networks with commands like `docker network create` to define custom networks, `docker network ls` to list existing networks, and `docker network connect` to attach a container to a network. This flexibility allows developers to control how containers interact, ensuring secure and efficient communication across distributed applications. Visit the following resources to learn more: - [@official@Docker Networks](https://docs.docker.com/network/) - [@official@Docker Network Commands](https://docs.docker.com/engine/reference/commandline/network/) +- [@video@Docker Networking](https://www.youtube.com/watch?v=bKFMS5C4CG0) diff --git a/src/data/roadmaps/docker/content/110-docker-cli/102-volumes.md b/src/data/roadmaps/docker/content/110-docker-cli/102-volumes.md index 4594ad7ee..dd6dfc2c8 100644 --- a/src/data/roadmaps/docker/content/110-docker-cli/102-volumes.md +++ b/src/data/roadmaps/docker/content/110-docker-cli/102-volumes.md @@ -1,30 +1,6 @@ # Docker Volumes -Docker volumes are a mechanism for persisting data generated by and used by Docker containers. They allow you to separate the data from the container itself, making it easy to backup, migrate, and manage your persistent data. - -## Types of Volumes - -There are three types of volumes in Docker: - -- **Host Volumes** -- **Anonymous Volumes** -- **Named Volumes** - -## Volume Management with Docker CLI - -Docker CLI provides various commands to manage volumes: - -- `docker volume create`: Creates a new volume with a given name. -- `docker volume ls`: Lists all volumes on the system. -- `docker volume inspect`: Provides detailed information about a specific volume. -- `docker volume rm`: Removes a volume. -- `docker volume prune`: Removes all unused volumes. - -To use a volume in a container, you can use the `-v` or `--volume` flag during the `docker run` command. For example: - -```bash -docker run -d --name my-container -v my-named-volume:/var/lib/data my-image -``` +Docker volumes are persistent storage solutions used to manage and store data outside the container’s filesystem, ensuring data remains intact even if the container is deleted or recreated. They are ideal for storing application data, logs, and configuration files that need to persist across container restarts and updates. With the Docker CLI, you can create and manage volumes using commands like `docker volume create` to define a new volume, `docker volume ls` to list all volumes, and `docker run -v` to mount a volume to a specific container. This approach helps maintain data integrity, simplifies backup processes, and supports data sharing between containers, making volumes a core part of stateful containerized applications. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/110-docker-cli/index.md b/src/data/roadmaps/docker/content/110-docker-cli/index.md index 5a191ba97..43fbbb67e 100644 --- a/src/data/roadmaps/docker/content/110-docker-cli/index.md +++ b/src/data/roadmaps/docker/content/110-docker-cli/index.md @@ -1,45 +1,6 @@ # Docker CLI -The Docker CLI (Command Line Interface) is a powerful tool that allows you to interact with and manage Docker containers, images, volumes, and networks. It provides a wide range of commands for users to create, run, and manage Docker containers and other Docker resources in their development and production workflows. - -In this topic, we'll dive into some key aspects of Docker CLI, covering the following: - -## 1. Installation - -To get started with Docker CLI, you need to have Docker installed on your machine. You can follow the official installation guide for your respective operating system from the [Docker documentation](https://docs.docker.com/get-docker/). - -## 2. Basic Commands - -Here are some essential Docker CLI commands to familiarize yourself with: - -- `docker run`: Create and start a container from a Docker image -- `docker container ls`: List running containers -- `docker image ls`: List all available images on your system -- `docker pull`: Pull an image from Docker Hub or another registry -- `docker push`: Push an image to Docker Hub or another registry -- `docker build`: Build an image from a Dockerfile -- `docker exec`: Run a command in a running container -- `docker logs`: Show logs of a container - -## 3. Docker Run Options - -`docker run` is one of the most important commands in the Docker CLI. You can customize the behavior of a container using various options, such as: - -- `-d, --detach`: Run the container in the background -- `-e, --env`: Set environment variables for the container -- `-v, --volume`: Bind-mount a volume -- `-p, --publish`: Publish the container's port to the host -- `--name`: Assign a name to the container -- `--restart`: Specify the container's restart policy -- `--rm`: Automatically remove the container when it exits - -## 4. Dockerfile - -A Dockerfile is a script containing instructions to build a Docker image. You can use the Docker CLI to build, update, and manage Docker images using a Dockerfile. - -## 5. Docker Compose - -Docker Compose is a CLI tool for defining and managing multi-container Docker applications using YAML files. It works together with the Docker CLI, offering a consistent way to manage multiple containers and their dependencies. +The Docker Command Line Interface (CLI) is a powerful tool used to interact with the Docker engine, enabling developers and operators to build, manage, and troubleshoot containers and related resources. With a wide range of commands, the Docker CLI provides control over all aspects of Docker, including creating and managing containers (`docker run`, `docker stop`), building images (`docker build`), managing networks (`docker network`), handling storage (`docker volume`), and inspecting system status (`docker ps`, `docker info`). Its intuitive syntax and flexibility allow users to automate complex workflows, streamline development processes, and maintain containerized applications with ease, making it a foundational utility for Docker management and orchestration. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/111-developer-experience/102-tests.md b/src/data/roadmaps/docker/content/111-developer-experience/102-tests.md index efcf2267e..5bc729eca 100644 --- a/src/data/roadmaps/docker/content/111-developer-experience/102-tests.md +++ b/src/data/roadmaps/docker/content/111-developer-experience/102-tests.md @@ -1,6 +1,6 @@ # Tests -We want to run tests in an environment as similar as possible to production, so it only makes sense to do so inside of our containers! +We want to run tests in an environment as similar as possible to production, so it only makes sense to do so inside of our containers! This can include unit tests, integration tests, and end-to-end tests, all run within Docker containers to simulate real-world scenarios while avoiding interference from external dependencies. Using Docker CLI and tools like Docker Compose, you can create isolated testing environments, run tests in parallel, and spin up and tear down the necessary infrastructure automatically. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/111-developer-experience/index.md b/src/data/roadmaps/docker/content/111-developer-experience/index.md index 5e26ad57c..01a527711 100644 --- a/src/data/roadmaps/docker/content/111-developer-experience/index.md +++ b/src/data/roadmaps/docker/content/111-developer-experience/index.md @@ -1,14 +1,6 @@ # Developer Experience -So far we have only discussed using docker for deploying applications. However, docker is also a great tool for developing applications. There are a few different recommendations that you can adopt to improve your development experience. - -- Use `docker-compose` in your application for ease of development. -- Use bind mounts to mount the code from your local into the container filesystem to avoid having to rebuild the container image with every single change. -- For auto-reloading, you can use tools like [vite](https://vitejs.dev/) for client side, [nodemon](https://nodemon.io/) for nodejs or [air](https://github.com/cosmtrek/air) for golang. -- You should also provide a way to debug your applications. For example, look into [delve](https://github.com/go-delve/delve) for Go, enable debugging in node.js using --inspect flag etc. It doesn't matter what you use, but the point is that you should have a way to debug your application running inside the container. -- You should have a way to run tests inside the container. For example, you could have a separate docker-compose file for running tests. -- You should have a CI pipeline for production images. -- Ephemeral environment for each pull request +Docker significantly enhances the developer experience by providing a consistent, isolated environment for building, testing, and running applications, eliminating the “it works on my machine” problem. With Docker, developers can package their applications and dependencies into portable containers, ensuring consistency across different environments, from local development to staging and production. The simplified setup and reproducibility of environments accelerate onboarding, minimize conflicts, and allow developers to focus on coding rather than troubleshooting configurations. Moreover, tools like Docker Compose enable quick orchestration of complex multi-container applications, making it easier to prototype, iterate, and collaborate, ultimately streamlining the entire development lifecycle. For more details and practical examples: diff --git a/src/data/roadmaps/docker/content/112-deploying-containers/100-paas-options.md b/src/data/roadmaps/docker/content/112-deploying-containers/100-paas-options.md index a275fcee2..ab6c8214e 100644 --- a/src/data/roadmaps/docker/content/112-deploying-containers/100-paas-options.md +++ b/src/data/roadmaps/docker/content/112-deploying-containers/100-paas-options.md @@ -1,22 +1,6 @@ # PaaS Options for Deploying Containers -Platform as a Service (PaaS) is a cloud computing model that simplifies the deployment and management of containers. It abstracts away the underlying infrastructure allowing developers to focus on creating and running their applications. Given below are some of the popular PaaS options for deploying containers: - -## Amazon Elastic Container Service - -is a fully managed container orchestration service offered by Amazon Web Services. It allows you to run containers without having to manage servers or clusters. - -## Google Cloud Run - -Google Cloud Run is a fully-managed compute platform by Google that allows you to run stateless containers. It is designed for running applications that can scale automatically, enabling you to pay only for the resources you actually use. - -## IBM Cloud Code Engine - -IBM Cloud Code Engine is a fully managed, serverless platform by IBM that runs your containerized applications and source code. It supports deploying, running, and auto-scaling applications on Kubernetes. - -## Microsoft Azure Container Instances - -Microsoft Azure Container Instances is a service offered by Microsoft Azure that simplifies the deployment of containers using a serverless model. You can run containers without managing the underlying hosting infrastructure or container orchestration. +Platform-as-a-Service (PaaS) options for deploying containers provide a simplified and managed environment where developers can build, deploy, and scale containerized applications without worrying about the underlying infrastructure. Popular PaaS offerings include Google Cloud Run, Azure App Service, AWS Elastic Beanstalk, and Heroku, which abstract away container orchestration complexities while offering automated scaling, easy integration with CI/CD pipelines, and monitoring capabilities. These platforms support rapid development and deployment by allowing teams to focus on application logic rather than server management, providing a seamless way to run containers in production with minimal operational overhead. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/112-deploying-containers/101-kubernetes.md b/src/data/roadmaps/docker/content/112-deploying-containers/101-kubernetes.md index 6685ac3c5..b76025f3c 100644 --- a/src/data/roadmaps/docker/content/112-deploying-containers/101-kubernetes.md +++ b/src/data/roadmaps/docker/content/112-deploying-containers/101-kubernetes.md @@ -1,22 +1,6 @@ # Kubernetes -Kubernetes (K8s) is an open-source orchestration platform used for automating the deployment, scaling, and management of containerized applications. While Docker provides the container runtime environment, Kubernetes extends that functionality with a powerful and flexible management framework. - -## Key Concepts - -- **Cluster**: A set of machines, called nodes, that run containerized applications in Kubernetes. A cluster can have multiple nodes for load balancing and fault tolerance. - -- **Node**: A worker machine (physical, virtual, or cloud-based) that runs containers as part of the Kubernetes cluster. Each node is managed by the Kubernetes master. - -- **Pod**: The smallest and simplest unit in the Kubernetes object model. A pod represents a single instance of a running process and typically wraps one or more containers (e.g., a Docker container). - -- **Service**: An abstraction that defines a logical set of pods and a policy for accessing them. Services provide load balancing, monitoring, and networking capabilities for the underlying pods. - -- **Deployment**: A high-level object that describes the desired state of a containerized application. Deployments manage the process of creating, updating, and scaling pods based on a specified container image. - -## Kubernetes vs. Docker Swarm - -While both Kubernetes and Docker Swarm are orchestration platforms, they differ in terms of complexity, scalability, and ease of use. Kubernetes provides more advanced features, better scalability, and higher fault tolerance, but has a steeper learning curve. Docker Swarm, on the other hand, is simpler and more straightforward but lacks some advanced functionality. +Kubernetes is an open-source container orchestration platform designed to automate the deployment, scaling, and management of containerized applications. It provides a robust framework for handling complex container workloads by organizing containers into logical units called pods, managing service discovery, load balancing, and scaling through declarative configurations. Kubernetes enables teams to deploy containers across clusters of machines, ensuring high availability and fault tolerance through self-healing capabilities like automatic restarts, replacements, and rollback mechanisms. With its extensive ecosystem and flexibility, Kubernetes has become the de facto standard for running large-scale, distributed applications, simplifying operations and improving the reliability of containerized workloads. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/112-deploying-containers/102-docker-swarm.md b/src/data/roadmaps/docker/content/112-deploying-containers/102-docker-swarm.md index 1299ed140..09959514c 100644 --- a/src/data/roadmaps/docker/content/112-deploying-containers/102-docker-swarm.md +++ b/src/data/roadmaps/docker/content/112-deploying-containers/102-docker-swarm.md @@ -1,16 +1,6 @@ # Docker Swarm -Docker Swarm is a container orchestration tool that enables users to manage multiple Docker nodes and deploy services across them. It is a native clustering and orchestration feature built into the Docker Engine, which allows you to create and manage a swarm of Docker nodes, referred to as a _Swarm_. - -## Advantages - -- **Scalability**: Docker Swarm allows you to scale services horizontally by easily increasing or decreasing the number of replicas. - -- **Load balancing**: Swarm ensures that the nodes within the swarm evenly handle container workloads by providing internal load balancing. - -- **Service discovery**: Docker Swarm allows you to automatically discover other services in the swarm by assigning a unique DNS entry to each service. - -- **Rolling updates**: Swarm enables you to perform rolling updates with near-zero downtime, easing the process of deploying new versions of your applications. +Docker Swarm is Docker’s native container orchestration tool that allows users to deploy, manage, and scale containers across a cluster of Docker hosts. By transforming a group of Docker nodes into a single, unified cluster, Swarm provides high availability, load balancing, and automated container scheduling using simple declarative commands. With features like service discovery, rolling updates, and integrated security through TLS encryption, Docker Swarm offers an approachable alternative to more complex orchestrators like Kubernetes. Its tight integration with the Docker CLI and ease of setup make it a suitable choice for small to medium-sized deployments where simplicity and straightforward management are priorities. Visit the following resources to learn more: diff --git a/src/data/roadmaps/docker/content/112-deploying-containers/index.md b/src/data/roadmaps/docker/content/112-deploying-containers/index.md index e224cc372..46294240e 100644 --- a/src/data/roadmaps/docker/content/112-deploying-containers/index.md +++ b/src/data/roadmaps/docker/content/112-deploying-containers/index.md @@ -2,22 +2,6 @@ Deploying containers is a crucial step in using Docker and containerization to manage applications more efficiently, easily scale, and ensure consistent performance across environments. This topic will give you an overview of how to deploy Docker containers to create and run your applications. -## Benefits of Container Deployment - -- **Consistency**: Containers ensure your application runs the same way across different environments, solving the "it works on my machine" issue. -- **Isolation**: Each container operates independently, avoiding conflicts and allowing better service management. -- **Scalability**: Easily scale applications by running multiple instances and distributing the workload. -- **Version Control**: Manage different versions and roll back to previous versions if needed. - -## Steps to Deploy Containers - -- **Create a Dockerfile**: Script that defines the image with base image, code, dependencies, and configurations. -- **Build the Docker Image**: Use `docker build` to create an image from the Dockerfile. -- **Push the Docker Image**: Push the image to a registry using `docker push`. -- **Deploy the Container**: Use `docker run` to start a container from the image. -- **Manage the Container**: Use commands like `docker ps`, `docker stop`, and `docker rm` for container management. -- **Monitor and Log**: Use `docker logs` for log viewing and `docker stats` for performance monitoring. - Visit the following resources to learn more: - [@official@Docker Deployment](https://docs.docker.com/get-started/deployment/) From 7cf5071ee4458bd4da55289a81baf36961a5a9cb Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Mon, 14 Oct 2024 16:45:31 +0100 Subject: [PATCH 011/159] Fix spacing on grid --- src/components/Dashboard/ProgressStack.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Dashboard/ProgressStack.tsx b/src/components/Dashboard/ProgressStack.tsx index 44bc18353..ce975112f 100644 --- a/src/components/Dashboard/ProgressStack.tsx +++ b/src/components/Dashboard/ProgressStack.tsx @@ -201,7 +201,7 @@ export function ProgressStack(props: ProgressStackProps) { emptyLinkHref={'/roadmaps'} emptyLinkText={'Explore Roadmaps'} > -
+
{userProgressesToShow.length > 0 && ( <> {userProgressesToShow.map((progress) => { From dcba12aca0f7c5ace744a274c2d8745d212e1627 Mon Sep 17 00:00:00 2001 From: Aboody_01 <91767628+Abdullahi-abdiaziz@users.noreply.github.com> Date: Tue, 15 Oct 2024 12:04:28 +0300 Subject: [PATCH 012/159] Update Node.js system errors (#7474) Add an Article that explains system errors and fix them --- .../nodejs/content/system-errors@05YY-AhLKzn4Ypr4eow5E.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/roadmaps/nodejs/content/system-errors@05YY-AhLKzn4Ypr4eow5E.md b/src/data/roadmaps/nodejs/content/system-errors@05YY-AhLKzn4Ypr4eow5E.md index 4de161606..2811994b6 100644 --- a/src/data/roadmaps/nodejs/content/system-errors@05YY-AhLKzn4Ypr4eow5E.md +++ b/src/data/roadmaps/nodejs/content/system-errors@05YY-AhLKzn4Ypr4eow5E.md @@ -22,3 +22,4 @@ Below are the system errors commonly encountered when writing a Node.js program Visit the following resources to learn more: - [@official@Node.js Errors - Official Docs](https://nodejs.org/api/errors.html#errors_class_systemerror) +- [@Article@16 Common Errors in Node.js and How to Fix Them](https://betterstack.com/community/guides/scaling-nodejs/nodejs-errors/) From 1df57aa83b3e7c33bcdcb7a7bebae15824d97062 Mon Sep 17 00:00:00 2001 From: dsh Date: Tue, 15 Oct 2024 10:08:49 +0100 Subject: [PATCH 013/159] fix libra/libre type (#7483) --- ...understand-basics-of-popular-suites@_7RjH4Goi0x6Noy6za0rP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmaps/cyber-security/content/understand-basics-of-popular-suites@_7RjH4Goi0x6Noy6za0rP.md b/src/data/roadmaps/cyber-security/content/understand-basics-of-popular-suites@_7RjH4Goi0x6Noy6za0rP.md index f940e22cb..99dc2bd14 100644 --- a/src/data/roadmaps/cyber-security/content/understand-basics-of-popular-suites@_7RjH4Goi0x6Noy6za0rP.md +++ b/src/data/roadmaps/cyber-security/content/understand-basics-of-popular-suites@_7RjH4Goi0x6Noy6za0rP.md @@ -16,4 +16,4 @@ Learn more from the following resources: - [@official@Microsoft Office](https://www.office.com/) - [@official@Google Workspace](https://workspace.google.com) -- [@official@Libra Office](https://www.libreoffice.org/) +- [@official@LibreOffice](https://www.libreoffice.org/) From 9082f345da51d6ff24372032f4e574aca3fd773a Mon Sep 17 00:00:00 2001 From: Deni Andreawan Date: Tue, 15 Oct 2024 21:42:02 +0700 Subject: [PATCH 014/159] =?UTF-8?q?feat:=20added=20content=20to=20AI=20?= =?UTF-8?q?=E2=80=8B=E2=80=8BEngineer=20Roadmap=20(#7464)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: added content to AI ​​Engineer Roadmap * fix: update content for AI Engineer vs ML Engineer --- ...i-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md | 9 ++++++++- .../ai-engineer/content/llms@wf2BSyUekr1S1q6l8kyq6.md | 10 +++++++++- .../what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md | 11 ++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/data/roadmaps/ai-engineer/content/ai-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md b/src/data/roadmaps/ai-engineer/content/ai-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md index e18564b03..c7a81381a 100644 --- a/src/data/roadmaps/ai-engineer/content/ai-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md +++ b/src/data/roadmaps/ai-engineer/content/ai-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md @@ -1 +1,8 @@ -# AI Engineer vs ML Engineer \ No newline at end of file +# AI Engineer vs ML Engineer + +An AI Engineer develops broad AI solutions, such as chatbots, NLP, and intelligent automation, focusing on integrating AI technologies into large applications. In contrast, an ML Engineer is more focused on building and deploying machine learning models, handling data processing, model training, and optimization in production environments. + +Visit the following resources to learn more: + +- [@article@AI Engineer vs. ML Engineer: Duties, Skills, and Qualifications](https://www.upwork.com/resources/ai-engineer-vs-ml-engineer) +- [@video@AI Developer vs ML Engineer: What’s the difference?](https://www.youtube.com/watch?v=yU87V2-XisA&t=2s) \ No newline at end of file diff --git a/src/data/roadmaps/ai-engineer/content/llms@wf2BSyUekr1S1q6l8kyq6.md b/src/data/roadmaps/ai-engineer/content/llms@wf2BSyUekr1S1q6l8kyq6.md index e73655f25..0777738b9 100644 --- a/src/data/roadmaps/ai-engineer/content/llms@wf2BSyUekr1S1q6l8kyq6.md +++ b/src/data/roadmaps/ai-engineer/content/llms@wf2BSyUekr1S1q6l8kyq6.md @@ -1 +1,9 @@ -# LLMs \ No newline at end of file +# LLMs + +Large Language Models (LLMs) are advanced artificial intelligence programs designed to comprehend and generate human language text. + +Visit the following resources to learn more: + +- [@article@What is a large language model (LLM)?](https://www.cloudflare.com/learning/ai/what-is-large-language-model/) +- [@article@Large language model](https://en.wikipedia.org/wiki/Large_language_model) +- [@video@How Large Language Models Work](https://www.youtube.com/watch?v=5sLYAQS9sWQ&t=1s) \ No newline at end of file diff --git a/src/data/roadmaps/ai-engineer/content/what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md b/src/data/roadmaps/ai-engineer/content/what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md index 91b97e747..038c43878 100644 --- a/src/data/roadmaps/ai-engineer/content/what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md +++ b/src/data/roadmaps/ai-engineer/content/what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md @@ -1 +1,10 @@ -# What is an AI Engineer? \ No newline at end of file +# What is an AI Engineer? + +AI engineers are professionals who specialize in designing, developing, and implementing artificial intelligence (AI) systems. Their work is essential in various industries, as they create applications that enable machines to perform tasks that typically require human intelligence, such as problem-solving, learning, and decision-making. + +Visit the following resources to learn more: + +- [@article@How to Become an AI Engineer: Duties, Skills, and Salary](https://www.simplilearn.com/tutorials/artificial-intelligence-tutorial/how-to-become-an-ai-engineer) +- [@article@AI engineers: What they do and how to become one](https://www.techtarget.com/whatis/feature/How-to-become-an-artificial-intelligence-engineer) +- [@course@AI For Everyone](https://www.coursera.org/learn/ai-for-everyone) +- [@video@AI Engineers- What Do They Do?](https://www.youtube.com/watch?v=y8qRq9PMCh8&t=1s) \ No newline at end of file From 02eceacfe1a29078bdfe8a0fac60a1dfd95998fd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 15 Oct 2024 21:24:00 +0600 Subject: [PATCH 015/159] chore: update roadmap content json (#7479) Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com> --- public/roadmap-content/api-design.json | 215 +++++++++++++-------- public/roadmap-content/cyber-security.json | 12 +- public/roadmap-content/devops.json | 5 - public/roadmap-content/python.json | 2 +- public/roadmap-content/react.json | 5 + 5 files changed, 156 insertions(+), 83 deletions(-) diff --git a/public/roadmap-content/api-design.json b/public/roadmap-content/api-design.json index 1e2f61572..8f1dbe466 100644 --- a/public/roadmap-content/api-design.json +++ b/public/roadmap-content/api-design.json @@ -9,7 +9,17 @@ "description": "APIs, or Application Programming Interfaces, provide a manner in which software applications communicate with each other. They abstract the complexity of applications to allow developers to use only the essentials of the software they are working with. They define the methods and data formats an application should use in order to perform tasks, like sending, retrieving, or modifying data. Understanding APIs is integral to mastering modern software development, primarily because they allow applications to exchange data and functionality with ease, thus enabling integration and convergence of technological services. Therefore, a solid understanding of what APIs are forms the basic cornerstone of API design.\n\nVisit the following resources to learn more:", "links": [ { - "title": "What is an API?", + "title": "Getting Started with APIs - Postman", + "url": "https://www.postman.com/what-is-an-api/", + "type": "article" + }, + { + "title": "API - IBM", + "url": "https://www.ibm.com/topics/api", + "type": "article" + }, + { + "title": "What is an API? - AWS", "url": "https://aws.amazon.com/what-is/api/", "type": "article" }, @@ -61,7 +71,7 @@ "type": "article" }, { - "title": "HTTP: 1.0 vs. 1.1 vs 2.0 vs. 3.0", + "title": "HTTP: 1.0 vs 1.1 vs 2.0 vs 3.0", "url": "https://www.baeldung.com/cs/http-versions", "type": "article" } @@ -72,7 +82,7 @@ "description": "HTTP (Hypertext Transfer Protocol) Methods play a significant role in API design. They define the type of request a client can make to a server, providing the framework for interaction between client and server. Understanding HTTP methods is paramount to creating a robust and effective API. Some of the common HTTP methods used in API design include GET, POST, PUT, DELETE, and PATCH. Each of these methods signifies a different type of request, allowing for various interactions with your API endpoints. This in turn creates a more dynamic, functional, and user-friendly API.\n\nLearn more from the following resources:", "links": [ { - "title": "HTTP request methods", + "title": "HTTP Methods - MDN", "url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods", "type": "article" }, @@ -82,7 +92,7 @@ "type": "article" }, { - "title": "What are HTTP Methods?", + "title": "What are HTTP Methods? - Postman", "url": "https://blog.postman.com/what-are-http-methods/", "type": "article" } @@ -124,12 +134,12 @@ "type": "article" }, { - "title": "What are HTTP headers?", + "title": "What are HTTP Headers?", "url": "https://blog.postman.com/what-are-http-headers/", "type": "article" }, { - "title": "What are HTTP Headers & Understand different types of HTTP headers", + "title": "What are HTTP Headers & Types of HTTP headers", "url": "https://requestly.com/blog/what-are-http-headers-understand-different-types-of-http-headers/", "type": "article" } @@ -150,7 +160,7 @@ "type": "article" }, { - "title": "Path parameters", + "title": "Path Parameters", "url": "https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters", "type": "article" } @@ -182,7 +192,7 @@ "type": "article" }, { - "title": "Content Negotiation in practice", + "title": "Content Negotiation in Practice", "url": "https://softwaremill.com/content-negotiation-in-practice/", "type": "article" } @@ -258,8 +268,19 @@ }, "o8i093VQv-T5Qf1yGqU0R": { "title": "Different API Styles", - "description": "Application Programming Interface (API) design isn't a one-size-fits-all endeavor. APIs can be structured in various styles, each with its own unique characteristics, advantages, and use cases. Early identification of the appropriate API style is crucial in ensuring a functional, efficient and seamless end-user experience. Commonly used API styles include REST, SOAP, GraphQL, and gRPC. Understanding these diverse API styles would help in making better design choices, fostering efficient overall system architecture, and promoting an intuitive and easy-to-use application.", - "links": [] + "description": "Application Programming Interface (API) design isn't a one-size-fits-all endeavor. APIs can be structured in various styles, each with its own unique characteristics, advantages, and use cases. Early identification of the appropriate API style is crucial in ensuring a functional, efficient and seamless end-user experience. Commonly used API styles include REST, SOAP, GraphQL, and gRPC. Understanding these diverse API styles would help in making better design choices, fostering efficient overall system architecture, and promoting an intuitive and easy-to-use application.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "API Styles", + "url": "https://www.redhat.com/architect/api-styles", + "type": "article" + }, + { + "title": "Top API Styles", + "url": "https://www.youtube.com/watch?v=4vLxWqE94l4", + "type": "video" + } + ] }, "BvwdASMvuNQ9DNgzdSZ4o": { "title": "RESTful APIs", @@ -287,12 +308,12 @@ "description": "Simple JSON (JavaScript Object Notation) APIs are a popular form of API or \"Application Programming Interface\" which utilise JSON to exchange data between servers and web applications. This method has gained prominence mainly for its simplicity, light weight, and easy readability. In the context of API design, a well-structured JSON API allows developers to efficiently interact with the backend and retrieve only the data they need in a consistent and comprehensible manner. From reducing redundant data to enabling quick parsing, Simple JSON APIs provide numerous benefits to improve the overall performance of applications. Designing a good JSON API requires careful planning, sound knowledge of HTTP methods, endpoints, error handling mechanisms, and most importantly, a clear understanding of the application's data requirements.\n\nLearn more from the following resources:", "links": [ { - "title": "A specification for building JSON APIs", + "title": "Specification for Building JSON APIs", "url": "https://github.com/json-api/json-api", "type": "opensource" }, { - "title": "JSON API: Explained in 4 minutes (+ EXAMPLES)", + "title": "JSON API: Explained in 4 Minutes", "url": "https://www.youtube.com/watch?v=N-4prIh7t38", "type": "video" } @@ -300,7 +321,7 @@ }, "Wwd-0PjrtViMFWxRGaQey": { "title": "gRPC APIs", - "description": "gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first.\n\nIt's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#.\n\ngRPC uses the protocol buffer language to define the structure of the data that is\n\nVisit the following resources to learn more:", + "description": "gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first. It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#.\n\nVisit the following resources to learn more:", "links": [ { "title": "gRPC Website", @@ -338,13 +359,18 @@ "url": "https://github.com/graphql-kit/graphql-apis", "type": "opensource" }, + { + "title": "Visit Dedicated GraphQL Roadmap", + "url": "https://roadmap.sh/graphql", + "type": "article" + }, { "title": "GraphQL Website", "url": "https://graphql.org/", "type": "article" }, { - "title": "GraphQL explained in 100 seconds", + "title": "GraphQL Explained in 100 Seconds", "url": "https://www.youtube.com/watch?v=eIQh02xuVw4", "type": "video" } @@ -355,12 +381,12 @@ "description": "Building JSON/RESTful APIs involves designing and implementing APIs that adhere to the architectural constraints of Representational State Transfer (REST). These APIs use JSON (JavaScript Object Notation) as a format for information interchange, due to its lightweight, easy-to-understand, and universally accepted nature. A well-designed RESTful API, utilizing JSON, is key in developing applications that are scalable, maintainable, and easily integrated with other systems. This design approach enables the resources on a server to be accessed and manipulated using standard HTTP protocols, facilitating communication between different services and systems. Furthermore, it enables client-server interactions to be stateless, meaning each request from a client must contain all the information needed by the server to understand and process the request.\n\nLearn more from the following resources:", "links": [ { - "title": "A specification for building APIs in JSON", + "title": "Specification for Building APIs in JSON", "url": "https://jsonapi.org/", "type": "article" }, { - "title": "How to make a REST API", + "title": "How to Make a RESTful API", "url": "https://www.integrate.io/blog/how-to-make-a-rest-api/", "type": "article" }, @@ -392,7 +418,7 @@ "description": "URI (Uniform Resource Identifier) is a string of characters used to identify a name or a resource on the Internet. Designing URIs carefully is a crucial part of creating a smooth API interface that is easy to understand, remember and use. Good URI design ensures that related resources are grouped together in a logical manner and can greatly impact the usability and maintainability of an API. It involves crafting standardised, intuitive HTTP paths that take advantage of the hierarchical nature of URLs to provide a better structure to the API. This hierarchy can then be used to expand the API over time without breaking existing clients' functionality.\n\nLearn more from the following resources:", "links": [ { - "title": "Guidelines for URI design", + "title": "Guidelines for URI Design", "url": "https://css-tricks.com/guidelines-for-uri-design/", "type": "article" }, @@ -408,12 +434,12 @@ "description": "API Versioning is a critical component of API Design and Management. As the APIs evolve over time to meet the new business requirements and functionality enhancements, it is crucial to manage the changes in a way that doesn't break the existing client applications. This calls for effective versioning strategies in API design. There are different versioning strategies like URI versioning, Request Header versioning, and Media Type versioning which are adopted based on the ease of implementation, client compatibility, and accessibility. Understanding each strategy and its pros and cons can lead to better API Design and maintainability.\n\nLearn more from the following resources:", "links": [ { - "title": "What is API versioning?", + "title": "What is API Versioning?", "url": "https://www.postman.com/api-platform/api-versioning/", "type": "article" }, { - "title": "4 API versioning best practices", + "title": "API Versioning Best Practices", "url": "https://kodekloud.com/blog/api-versioning-best-practices/", "type": "article" }, @@ -513,7 +539,7 @@ "description": "Error Handling is a crucial aspect of API design that ensures the stability, usability, and reliability of the API in production. APIs are designed to help systems communicate with each other. However, there can be instances where these systems might encounter exceptions or errors. The process of predicting, catching, and managing these error occurrences is what we refer to as 'Error Handling'. In the context of API Design, it involves defining and implementing specific strategies to detect, manage and inform consumers of any exception or error that occurs while executing requests. Configuring this appropriately provides a more robust and seamless communication experience, enabling developers to debug and rectify issues more efficiently.\n\nLearn more from the following resources:", "links": [ { - "title": "Best practices for API error handling", + "title": "Best Practices for API Error Handling", "url": "https://blog.postman.com/best-practices-for-api-error-handling/", "type": "article" }, @@ -563,13 +589,24 @@ }, "cQnQ9v3mH27MGNwetz3JW": { "title": "Authentication Methods", - "description": "Application Programming Interfaces (APIs) are critical components in software development that allow different software systems to communicate and share functionality. To ensure secure communication, it's essential to authenticate the parties involved in the API transactions. The authentication process confirms the identity of the API user. There are numerous authentication methods available when designing an API, each with its own pros and cons. This includes Basic Authentication, API Key Authentication, OAuth, and JWT among others. Understanding these different methods and their best use cases is fundamental to designing secure and effective APIs.", - "links": [] + "description": "Application Programming Interfaces (APIs) are critical components in software development that allow different software systems to communicate and share functionality. To ensure secure communication, it's essential to authenticate the parties involved in the API transactions. The authentication process confirms the identity of the API user. There are numerous authentication methods available when designing an API, each with its own pros and cons. This includes Basic Authentication, API Key Authentication, OAuth, and JWT among others. Understanding these different methods and their best use cases is fundamental to designing secure and effective APIs.\n\nLearn more from the following resources:", + "links": [ + { + "title": "API Authentication", + "url": "https://www.postman.com/api-platform/api-authentication/", + "type": "article" + } + ] }, "0FzHERK5AeYL5wv1FBJbH": { "title": "Basic Auth", "description": "Basic Auth, short for Basic Authentication, is a simple method often used in API design for handling user authentication. In this method, client credentials, consisting of a username and password pair, are passed to the API server in a field in the HTTP header. The server then verifies these credentials before granting access to protected resources. Although Basic Auth is straightforward to implement, it is less secure compared to more advanced methods since it involves transmitting credentials in an encoded, but not encrypted, format. It is often used in cases where simplicity is paramount, or High security levels are not required.\n\nLearn more from the following resources:", "links": [ + { + "title": "Basic Authentication", + "url": "https://roadmap.sh/guides/basic-authentication", + "type": "article" + }, { "title": "Basic Auth Generation Header", "url": "https://www.debugbear.com/basic-auth-header-generator", @@ -591,6 +628,11 @@ "title": "Token Based Auth", "description": "Token-based authentication is a crucial aspect of API design. It involves providing the user with a token that validates their identity after they have successfully logged in. Once the token is obtained, users can use it to access resources and services provided by the API. This token is usually passed in the headers of subsequent HTTP requests done by the client. One key advantage of token-based auth is that tokens can be created and checked by the server without storing them persistently, which can help to scale applications more easily. This authentication method enhances the security and scalability of web applications and it is mainly used in modern API strategies, including RESTful APIs.\n\nLearn more from the following resources:", "links": [ + { + "title": "Token Based Authentication", + "url": "https://roadmap.sh/guides/token-authentication", + "type": "article" + }, { "title": "What Is Token-Based Authentication?", "url": "https://www.okta.com/uk/identity-101/what-is-token-based-authentication/", @@ -600,11 +642,6 @@ "title": "Session vs Token Authentication in 100 Seconds", "url": "https://www.youtube.com/watch?v=UBUNrFtufWo", "type": "video" - }, - { - "title": "Token based auth", - "url": "https://www.youtube.com/watch?v=woNZJMSNbuo", - "type": "video" } ] }, @@ -612,6 +649,11 @@ "title": "JWT ", "description": "JSON Web Tokens, or JWT, are a popular and secure method of transferring information between two parties in the domain of API design. As a compact, URL-safe means of representing claims to be transferred between two parties, they play a vital role in security and authorization in modern APIs. By encoding these claims, the information can be verified and trusted with a digital signature - ensuring that the API end-points can handle requests in a secure and reliable way. JWT is a relatively lightweight and scalable method that brings improved authentication and information exchange processes in API design.\n\nLearn more from the following resources:", "links": [ + { + "title": "JWT Authentication", + "url": "https://roadmap.sh/guides/jwt-authentication", + "type": "article" + }, { "title": "Introduction to JSON Web Tokens", "url": "https://jwt.io/introduction", @@ -633,6 +675,11 @@ "title": "OAuth 2.0", "description": "OAuth 2.0 is an authorization framework that allows applications to obtain limited access to user accounts on an HTTP service, such as Facebook, GitHub, DigitalOcean, and others. It works by delegating user authentication to the service that hosts the user account and authorizing third-party applications to access the user account. OAuth 2.0 defines four roles: resource owner, client, resource server and authorization server. With regards to API design, OAuth 2.0 can be used to protect API endpoints by ensuring that the client applications having valid access tokens can only interact with the API. It provides detailed workflow processes and a set of protocols for the client application to get authorization to access resources.\n\nLearn more from the following resources:", "links": [ + { + "title": "OAuth", + "url": "https://roadmap.sh/guides/oauth", + "type": "article" + }, { "title": "OAuth Website", "url": "https://oauth.net/2/", @@ -655,7 +702,7 @@ "description": "Application Programming Interfaces (APIs) are critical for building software applications. Among several key considerations during API design, one is deciding how to implement authentication and security. Session Based Authentication is one popular way to apply security in API design.\n\nThis method revolves around the server creating a session for the user after they successfully log in, associating it with a session identifier. This Session ID is then stored client-side within a cookie. On subsequent requests, the server validates the Session ID before processing the API call. The server will destroy the session after the user logs out, thereby invalidating the Session ID.\n\nUnderstanding Session Based Authentication is crucial for secure API design, especially in scenarios where security is a top priority or in legacy systems where this method is prevalent.\n\nLearn more from the following resources:", "links": [ { - "title": "Session Based Authentication - Roadmap.sh", + "title": "Session Based Authentication", "url": "https://roadmap.sh/guides/session-based-authentication", "type": "article" }, @@ -673,8 +720,14 @@ }, "nHbn8_sMY7J8o6ckbD-ER": { "title": "Authorization Methods", - "description": "In API design, authorization methods play a crucial role in ensuring the security and integrity of data transactions. They are the mechanisms through which an API identifies and validates a user, system, or application before granting them access to specific resources. These methods include Basic Authentication, OAuth, Token-based authentication, JSON Web Tokens (JWT), and API Key based, among others. So, understanding these methods enhances the ability to design APIs that effectively protect resources while allowing necessary access. Each method has its own pros and cons, usage scenarios and security features that make them more suitable for certain situations rather than others.", - "links": [] + "description": "In API design, authorization methods play a crucial role in ensuring the security and integrity of data transactions. They are the mechanisms through which an API identifies and validates a user, system, or application before granting them access to specific resources. These methods include Basic Authentication, OAuth, Token-based authentication, JSON Web Tokens (JWT), and API Key based, among others. So, understanding these methods enhances the ability to design APIs that effectively protect resources while allowing necessary access. Each method has its own pros and cons, usage scenarios and security features that make them more suitable for certain situations rather than others.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "API Authorization Methods", + "url": "https://konghq.com/blog/engineering/common-api-authentication-methods", + "type": "article" + } + ] }, "wFsbmMi5Ey9UyDADdbdPW": { "title": "Role Based Access Control (RBAC)", @@ -686,12 +739,12 @@ "type": "article" }, { - "title": "What is role-based access control (RBAC)?", + "title": "What is Role-based Access Control (RBAC)?", "url": "https://www.redhat.com/en/topics/security/what-is-role-based-access-control", "type": "article" }, { - "title": "Role-based access control (RBAC) vs. Attribute-based access control (ABAC)", + "title": "Role-based Access Control (RBAC) vs. Attribute-based Access Control (ABAC)", "url": "https://www.youtube.com/watch?v=rvZ35YW4t5k", "type": "video" } @@ -718,12 +771,12 @@ "description": "API keys and management is an integral part of API design. An API key is a unique identifier used to authenticate a user, developer, or calling program to an API. This ensures security and control over API endpoints, as only those with a valid API key can make requests. API Management, on the other hand, refers to the practices and tools that enable an organization to govern and monitor its API usage. It involves all the aspects of managing APIs including design, deployment, documentation, security, versioning, and analytics. Both elements play crucial roles in securing and organizing API access for efficient and controlled data sharing and communication.\n\nLearn more from the following resources:", "links": [ { - "title": "What is API key management?", + "title": "What is API Key Management?", "url": "https://www.akeyless.io/secrets-management-glossary/api-key-management/", "type": "article" }, { - "title": "API Key Management | Definition and Best Practices", + "title": "API Key Management - Definition and Best Practices", "url": "https://infisical.com/blog/api-key-management", "type": "article" } @@ -760,13 +813,13 @@ "type": "article" }, { - "title": "What is Swagger?", - "url": "https://blog.hubspot.com/website/what-is-swagger", + "title": "OpenAPI Inititive", + "url": "https://www.openapis.org/", "type": "article" }, { - "title": "OpenAPI Inititive", - "url": "https://www.openapis.org/", + "title": "What is Swagger?", + "url": "https://blog.hubspot.com/website/what-is-swagger", "type": "article" } ] @@ -781,7 +834,12 @@ "type": "article" }, { - "title": "Postman Api Testing Tutorial for beginners", + "title": "Postman Docs", + "url": "https://www.postman.com/api-documentation-tool/", + "type": "article" + }, + { + "title": "Postman Tutorial for Beginners", "url": "https://www.youtube.com/watch?v=MFxk5BZulVU", "type": "video" } @@ -792,12 +850,12 @@ "description": "[Readme.com](http://Readme.com) is an invaluable tool in the realm of API Design, renowned for providing a collaborative platform for creating beautiful, dynamic and intuitive documentation. It's a tool which aids developers in outlining clear, comprehensive documentation for their API interfaces. The API documentation created with [Readme.com](http://Readme.com) is not just about the presentation of information, but enhances the reader's understanding by making it interactive. This interactive approach encourages practical learning and offers insights into how the API will behave under different circumstances. With [Readme.com](http://Readme.com), developers can create a user-focused documentation environment that streamlines the learning process and makes their APIs easier to consume and implement.\n\nLearn more from the following resources:", "links": [ { - "title": "readmeio", - "url": "https://github.com/readmeio", + "title": "ReadMe", + "url": "https://github.com/orgs/readmeio/repositories?type=source", "type": "opensource" }, { - "title": "readme.com", + "title": "ReadMe Website", "url": "https://readme.com", "type": "article" } @@ -856,12 +914,12 @@ "description": "API design has rapidly emerged as a vital component of software development. When designing an API, it is crucial to follow best practices to ensure optimization, scalability, and efficiency. The best practices in API design revolve around principles such as simplicity, consistency, security, and proper documentation among others. These practices not only smoothens the development process but also makes the API more user-friendly, stable, and easily maintainable. Thus, following the best practices in API design is not an option but rather a must for developers and organizations looking to create APIs that last longer and perform better.\n\nLearn more from the following resources:", "links": [ { - "title": "Best practices for REST API design", + "title": "Best Practices for REST API Design", "url": "https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/", "type": "article" }, { - "title": "Best practices in API design", + "title": "Best Practices in API Design", "url": "https://swagger.io/resources/articles/best-practices-in-api-design/", "type": "article" } @@ -893,7 +951,7 @@ "type": "article" }, { - "title": "How does API monitoring improve API performance?", + "title": "How does API Monitoring Improves API Performance?", "url": "https://tyk.io/blog/api-product-metrics-what-you-need-to-know/", "type": "article" } @@ -909,7 +967,7 @@ "type": "article" }, { - "title": "Using caching strategies to improve API performance", + "title": "Using Caching Strategies to Improve API Performance", "url": "https://www.lonti.com/blog/using-caching-strategies-to-improve-api-performance", "type": "article" }, @@ -925,17 +983,22 @@ "description": "Load Balancing plays a crucial role in the domain of API Design. It primarily revolves around evenly and efficiently distributing network traffic across a group of backend servers, also known as a server farm or server pool. When it comes to API design, implementing load balancing algorithms is of immense importance to ensure that no single server bears too much demand. This allows for high availability and reliability by rerouting the traffic in case of server failure, effectively enhancing application performance and contributing to a positive user experience. Therefore, it's a vital tactic in ensuring the scalability and robustness of system architectures which heavily rely on API interactions.\n\nLearn more from the following resources:", "links": [ { - "title": "What is load balancing?", + "title": "What is Load Balancing?", "url": "https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/", "type": "article" }, + { + "title": "Load Balancers in API", + "url": "https://learn.microsoft.com/en-us/rest/api/load-balancer/", + "type": "article" + }, { "title": "API Gateway vs Load Balancer: Which is Right for Your Application?", "url": "https://konghq.com/blog/engineering/api-gateway-vs-load-balancer", "type": "article" }, { - "title": "What is a load balancer?", + "title": "What is a Load Balancer?", "url": "https://www.youtube.com/watch?v=sCR3SAVdyCc", "type": "video" } @@ -967,7 +1030,7 @@ "description": "Profiling and monitoring are critical aspects of API design and implementation. Profiling, in this context, refers to the process of analyzing the behavior of your API in order to understand various performance metrics including response times, request rates, error rates, and the overall health and functionality of your API. On the other hand, monitoring is the ongoing process of checking the status of your API to ensure it's functioning as expected while also providing an early warning system for potential issues and improvements. Together, profiling and monitoring your API can lead to a more reliable, efficient, and high-performing service.\n\nLearn more from the following resources:", "links": [ { - "title": "Monitor health and performance of your APIs", + "title": "Monitor Health and Performance of your APIs", "url": "https://learning.postman.com/docs/monitoring-your-api/intro-monitors/", "type": "article" }, @@ -1004,7 +1067,7 @@ "type": "article" }, { - "title": "API Integration Patterns", + "title": "API Integration Patterns - Devoteam", "url": "https://uk.devoteam.com/expert-view/api-integration-patterns/", "type": "article" } @@ -1036,12 +1099,12 @@ "description": "Event-driven architecture (EDA) is a software design concept that revolves around the production, interpretation, and consumption of events. With regards to API design, EDA grants systems the flexibility to decentralize analytics, microservices, and operations, thus promoting real-time information sharing and reaction. Event-driven APIs prioritize asynchronous communication, allowing applications to stay responsive even when tackling heavy data loads. For an effective API, adhering to EDA provides data reliability, maturity with a scalable structure, and efficient real-time data processing capabilities.\n\nLearn more form the following resources:", "links": [ { - "title": "Event-driven architecture style", + "title": "Event Driven Architecture Style", "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven", "type": "article" }, { - "title": "Event-driven architecture", + "title": "Event-driven Architecture", "url": "https://aws.amazon.com/event-driven-architecture/", "type": "article" }, @@ -1083,7 +1146,7 @@ "type": "article" }, { - "title": "Microservices explained in 5 minutes", + "title": "Microservices Explained in 5 Minutes", "url": "https://www.youtube.com/watch?v=lL_j7ilk7rc", "type": "video" } @@ -1094,12 +1157,12 @@ "description": "Messaging Queues play a fundamental role in API design, particularly in creating robust, decoupled, and efficient systems. These queues act like a buffer, storing messages or data sent from a sender (producer), allowing a receiver (consumer) to retrieve and process them at its own pace. In the context of API design, this concept enables developers to handle high-volume data processing requirements, providing an asynchronous communication protocol between multiple services. The benefits of messaging queues in API design include better system scalability, fault tolerance, and increased overall system resiliency.\n\nLearn more from the following resources:", "links": [ { - "title": "What is a message queue?", + "title": "What is a Message Queue?", "url": "https://aws.amazon.com/message-queue/", "type": "article" }, { - "title": "REST API message queues explained", + "title": "REST API Message Queues Explained", "url": "https://www.youtube.com/watch?v=2idPgA6IN_Q", "type": "video" } @@ -1126,12 +1189,12 @@ "description": "Batch Processing refers to the method of handling bulk data requests in API design. Here, multiple API requests are packed and processed as a single group or 'batch'. Instead of making numerous individual API calls, a user can make one batch request with numerous operations. This approach can increase performance and efficiency by reducing the overhead of establishing and closing multiple connections. The concept of 'batch processing' in API design is particularly useful in data-intensive applications or systems where the need for processing high volumes of data is prevalent.\n\nLearn more from the following resources:", "links": [ { - "title": "API design guidance: bulk vs batch import", + "title": "API Design Guidance: Bulk vs Batch Import", "url": "https://tyk.io/blog/api-design-guidance-bulk-and-batch-import/", "type": "article" }, { - "title": "Stream vs Batch processing explained with examples", + "title": "Stream vs Batch Processing Explained with Examples", "url": "https://www.youtube.com/watch?v=1xgBQTF24mU", "type": "video" } @@ -1139,7 +1202,7 @@ }, "H22jAI2W5QLL-b1rq-c56": { "title": "Rabbit MQ", - "description": "RabbitMQ is an open-source message-broker software/system that plays a crucial role in API design, specifically in facilitating effective and efficient inter-process communication. It implements the Advanced Message Queuing Protocol (AMQP) to enable secure and reliable data transmission in various formats such as text, binary, or serialized objects.\n\nIn API design, RabbitMQ comes in handy in decoupling application processes for scalability and robustness, whilst ensuring that data delivery occurs safely and seamlessly. It introduces queuing as a way of handling multiple users or service calls at once hence enhancing responsiveness and performance of APIs. Its queue system elegantly digests API request loads, allowing services to evenly process data while preventing overloading.\n\nLearn more from the following resources:", + "description": "RabbitMQ is an open-source message-broker software/system that plays a crucial role in API design, specifically in facilitating effective and efficient inter-process communication. It implements the Advanced Message Queuing Protocol (AMQP) to enable secure and reliable data transmission in various formats such as text, binary, or serialized objects. RabbitMQ comes in handy in decoupling application processes for scalability and robustness, whilst ensuring that data delivery occurs safely and seamlessly. It introduces queuing as a way of handling multiple users or service calls at once hence enhancing responsiveness and performance of APIs. Its queue system elegantly digests API request loads, allowing services to evenly process data while preventing overloading.\n\nLearn more from the following resources:", "links": [ { "title": "RabbitMQ Website", @@ -1179,7 +1242,7 @@ "description": "API Testing refers to the process of checking the functionality, reliability, performance, and security of Application Programming Interfaces (APIs). It plays a crucial role in API design as it ensures that the APIs work correctly and as expected. This kind of testing does not require a user interface and mainly focuses on the business logic layer of the software architecture. API Testing is integral to guarantee that the data communication and responses between different software systems are error-free and streamlined.\n\nLearn more from the following resources:", "links": [ { - "title": "What is API testing?", + "title": "What is API Testing?", "url": "https://www.postman.com/api-platform/api-testing/", "type": "article" }, @@ -1224,7 +1287,7 @@ }, "6lm3wy9WTAERTqXCn6pFt": { "title": "Functional Testing", - "description": "Functional testing in the context of API design involves validating the endpoints and key-value pairs of an API. It ensures the server response works as expected and assesses the functionality of the API -- whether it is performing all the intended functions correctly. Various approaches like testing request-response pairs, error codes, and data accuracy are used. Functional testing can provide invaluable insights into how well an API meets the specified requirements and whether it is ready for integration into applications.\n\nLearn more from the following resources:", + "description": "Functional testing in the context of API design involves validating the endpoints and key-value pairs of an API. It ensures the server response works as expected and assesses the functionality of the API whether it is performing all the intended functions correctly. Various approaches like testing request-response pairs, error codes, and data accuracy are used. Functional testing can provide invaluable insights into how well an API meets the specified requirements and whether it is ready for integration into applications.\n\nLearn more from the following resources:", "links": [ { "title": "API Functional Testing – Why Is It Important And How to Test", @@ -1243,17 +1306,17 @@ "description": "Load testing is a crucial aspect of API design that ensures reliability, efficiency and performance under varying loads. It primarily focuses on identifying the maximum capacity of the API in terms of the volume of requests it can handle and its subsequent behavior when this threshold is reached or overloaded. By simulating varying degrees of user load, developers can identify and rectify bottlenecks or breakdown points in the system, hence enhancing overall API resilience.\n\nLearn more from the following resources:", "links": [ { - "title": "API load testing - a beginners guide", + "title": "API Load Testing - Beginners Guide", "url": "https://grafana.com/blog/2024/01/30/api-load-testing/", "type": "article" }, { - "title": "Test your API’s performance by simulating real-world traffic", + "title": "Test Your API’s Performance by Simulating Real-world Traffic", "url": "https://blog.postman.com/postman-api-performance-testing/", "type": "article" }, { - "title": "Load testing your API's", + "title": "Load Testing API's", "url": "https://www.youtube.com/watch?v=a5hWE4hMOoY", "type": "video" } @@ -1285,12 +1348,12 @@ "description": "Contract Testing is a critical aspect of maintaining a robust and reliable API infrastructure. In the realm of API design, Contract Testing refers to the method of ensuring that APIs work as anticipated and that changes to them do not break their intended functionality. This approach validates the interaction between two different systems, typically consumer and provider ( API), ensuring they comply with their agreed-upon contract. By defining clear and concise contracts for our APIs, developers can avoid common deployment issues and enhance system integration processes.\n\nLearn more from the following resources:", "links": [ { - "title": "A complete guide to Contract Testing", + "title": "Complete Guide to Contract Testing", "url": "https://testsigma.com/blog/api-contract-testing/", "type": "article" }, { - "title": "Get started with API Contract Testing", + "title": "Geting Started with API Contract Testing", "url": "https://saucelabs.com/resources/blog/getting-started-with-api-contract-testing", "type": "article" }, @@ -1303,7 +1366,7 @@ }, "XD1vDtrRQFbLyKJaD1AlA": { "title": "Error Handling / Retries", - "description": "When creating effective API designs, addressing Error Handling and Retries forms an essential facet. This is primarily due to the fact that APIs aren't always error-free and instances of network hiccups or input inaccuracies from users can occur. Without robust error handling, such occurrences can easily lead to catastrophic application failure or unsatisfactory user experiences.\n\nIn this context, error handling can refer to validating inputs, managing exceptions, and returning appropriate error message or status codes to the user. Meanwhile, the concept of retries comes into play to ensure maximum request success amidst transient failures. Through correctly implemented retries, an API can repeatedly attempt to execute a request until it is successful, thus ensuring seamless operation. The criteria and mechanisms of retries, including the count, delay, and conditions for retries, are crucial aspects to solidify during the API design.\n\nLearn more from the following resources:", + "description": "When creating effective API designs, addressing Error Handling and Retries forms an essential facet. This is primarily due to the fact that APIs aren't always error-free and instances of network hiccups or input inaccuracies from users can occur. Without robust error handling, such occurrences can easily lead to catastrophic application failure or unsatisfactory user experiences. Error handling can refer to validating inputs, managing exceptions, and returning appropriate error message or status codes to the user. Meanwhile, the concept of retries comes into play to ensure maximum request success amidst transient failures. Through correctly implemented retries, an API can repeatedly attempt to execute a request until it is successful, thus ensuring seamless operation.\n\nLearn more from the following resources:", "links": [ { "title": "How To Improve Your Backend By Adding Retries to Your API Calls", @@ -1311,7 +1374,7 @@ "type": "article" }, { - "title": "How to make resilient web applications with retries", + "title": "How to Make Resilient Web Applications with Retries", "url": "https://www.youtube.com/watch?v=Gly94hp3Eec", "type": "video" } @@ -1343,12 +1406,12 @@ "type": "article" }, { - "title": "What are websockets?", + "title": "What are Web Sockets?", "url": "https://www.pubnub.com/guides/websockets/", "type": "article" }, { - "title": "How web sockets work", + "title": "How Web Sockets Work", "url": "https://www.youtube.com/watch?v=pnj3Jbho5Ck", "type": "video" } @@ -1372,20 +1435,20 @@ }, "yvdfoly5WHHTq2Puss355": { "title": "Standards and Compliance", - "description": "When designing APIs, it's crucial to consider the concept of standards and compliance. Standards represent the set of rules and best practices that guide developers to create well-structured and easily maintainable APIs. They can range from the proper structure of the endpoints, the standardization of error responses, to naming conventions, and the usage of HTTP verbs.\n\nCompliance on the other hand, emphasizes on meeting protocol requirements or standards such as REST or SOAP. Furthermore, operating within regulated industries can also necessitate certain compliance measures like GDPR, HIPAA and others. Compliance in API Design ensures interoperability and safety of data transmission between systems.\n\nIn essence, Standards and Compliance in API Design contributes towards building more secure, robust, and efficient APIs that are user-friendly and universally understandable.\n\nLearn more from the following resources:", + "description": "When designing APIs, it's crucial to consider the concept of standards and compliance. Standards represent the set of rules and best practices that guide developers to create well-structured and easily maintainable APIs. They can range from the proper structure of the endpoints, the standardization of error responses, to naming conventions, and the usage of HTTP verbs. Compliance on the other hand, emphasizes on meeting protocol requirements or standards such as REST or SOAP. Furthermore, operating within regulated industries can also necessitate certain compliance measures like GDPR, HIPAA and others. Compliance in API Design ensures interoperability and safety of data transmission between systems.\n\nLearn more from the following resources:", "links": [ { - "title": "What is API compliance?", + "title": "What is API Compliance?", "url": "https://tyk.io/learning-center/api-compliance/", "type": "article" }, { - "title": "What is API compliance and why is it important?", + "title": "What is API Compliance and Why is it important?", "url": "https://www.traceable.ai/blog-post/achieve-api-compliance", "type": "article" }, { - "title": "REST API standards", + "title": "REST API Standards", "url": "https://www.integrate.io/blog/rest-api-standards/", "type": "article" } @@ -1412,17 +1475,17 @@ "description": "API Lifecycle Management is a crucial aspect in API design that oversees the process of creating, managing, and retiring APIs. This involves various stages from initial planning, designing, testing, deployment, to eventual retirement of the API. Proper lifecycle management ensures that an API meets the requirements, is reliable, and that it evolves with the needs of end users and developers. Moreover, it helps in maintaining the security, performance, and accessibility of the API throughout its lifetime. This comprehensive approach enables organizations to make the most of their APIs, mitigate issues, and facilitate successful digital transformation.\n\nLearn more from the following resources:", "links": [ { - "title": "What is the API lifecycle?", + "title": "What is the API Lifecycle?", "url": "https://www.postman.com/api-platform/api-lifecycle/", "type": "article" }, { - "title": "What is API lifescycle management?", + "title": "What is API Lifecycle Management?", "url": "https://swagger.io/blog/api-strategy/what-is-api-lifecycle-management/", "type": "article" }, { - "title": "Day in the lifecycle of an API", + "title": "Day in the Lifecycle of an API", "url": "https://www.youtube.com/watch?v=VxY_cz0VQXE", "type": "video" } diff --git a/public/roadmap-content/cyber-security.json b/public/roadmap-content/cyber-security.json index 208364f42..95e28dbee 100644 --- a/public/roadmap-content/cyber-security.json +++ b/public/roadmap-content/cyber-security.json @@ -1058,7 +1058,7 @@ }, "lwSFIbIX-xOZ0QK2sGFb1": { "title": "Router", - "description": "Amazon Simple Storage Service (S3) is a scalable, object-based cloud storage service provided by AWS. It allows users to store and retrieve large amounts of data, such as files, backups, or media content, with high durability and availability. S3 is designed for flexibility, enabling users to access data from anywhere via the internet while offering security features like encryption and access controls. It is widely used for data storage, content distribution, disaster recovery, and big data analytics, providing cost-effective, scalable storage for a variety of applications.\n\nLearn more from the following resources:", + "description": "A router is a networking device that directs data packets between different networks, ensuring they reach their destination. It operates at the network layer (Layer 3) of the OSI model and forwards data based on the IP addresses of the source and destination. Routers are essential for connecting devices to the internet or linking multiple networks together. They maintain a routing table to decide the best path for data and can dynamically update routes using protocols like RIP, OSPF, or BGP. Routers also handle Network Address Translation (NAT), allowing multiple devices to share a single public IP address. Many modern routers offer Wi-Fi for wireless connectivity and include basic firewall security to protect the network from threats.\n\nLearn more from the following resources:", "links": [ { "title": "What is a Router", @@ -1069,6 +1069,16 @@ "title": "What is a router and how does it work?", "url": "https://www.youtube.com/watch?v=UIJzHLpG9bM", "type": "video" + }, + { + "title": "Everything Routers do", + "url": "https://youtu.be/AzXys5kxpAM?si=nEsCH6jG2Lj6Ua8N", + "type": "video" + }, + { + "title": "How Routers forward Packets?", + "url": "https://youtu.be/Ep-x_6kggKA?si=II5xBPoXjYEjLvWX", + "type": "video" } ] }, diff --git a/public/roadmap-content/devops.json b/public/roadmap-content/devops.json index 7334ba67e..84e4e2370 100644 --- a/public/roadmap-content/devops.json +++ b/public/roadmap-content/devops.json @@ -1509,11 +1509,6 @@ "title": "White / Grey Listing", "description": "Whitelisting involves creating a list of trusted entities (such as IP addresses, email addresses, or applications) that are explicitly allowed to access a system or send messages. Anything not on the whitelist is denied by default. Whitelisting offers a high level of security by limiting access to only known and approved entities, but it can be inflexible and require frequent updates to accommodate legitimate changes. Greylisting is a more flexible approach used primarily in email filtering. When an email is received from an unknown sender, the server temporarily rejects it with a \"try again later\" response. Legitimate mail servers will retry sending the email after a short delay, while spammers, which often do not retry, are blocked. This method reduces spam by taking advantage of the fact that spammers usually do not follow retry mechanisms. Greylisting can be less intrusive than whitelisting, but it may introduce slight delays in email delivery for first-time senders.\n\nVisit the following resources to learn more:", "links": [ - { - "title": "Basic Introduction to whitelisting", - "url": "https://www.cblohm.com/blog/education-marketing-trends/what-is-email-whitelisting/", - "type": "article" - }, { "title": "Detailed Introduction to greylisting", "url": "https://en.wikipedia.org/wiki/Greylisting_(email)", diff --git a/public/roadmap-content/python.json b/public/roadmap-content/python.json index 969c1e9ee..9b6f4bfe2 100644 --- a/public/roadmap-content/python.json +++ b/public/roadmap-content/python.json @@ -1382,7 +1382,7 @@ }, "SSnzpijHLO5_l7DNEoMfx": { "title": "nose", - "description": "Nose is another opensource testing framework that extends `unittest` to provide a more flexible testing framework.\n\nVisit the following resources to learn more:", + "description": "Nose is another opensource testing framework that extends `unittest` to provide a more flexible testing framework. Note that Nose is no longer maintained and `pytest` is considered the replacement.\n\nVisit the following resources to learn more:", "links": [ { "title": "Introduction to Nose", diff --git a/public/roadmap-content/react.json b/public/roadmap-content/react.json index 8d9048735..a7f0e3bf7 100644 --- a/public/roadmap-content/react.json +++ b/public/roadmap-content/react.json @@ -1265,6 +1265,11 @@ "title": "Explore top posts about Jest", "url": "https://app.daily.dev/tags/jest?ref=roadmapsh", "type": "article" + }, + { + "title": "Testing JavaScript with Jest on Vultr", + "url": "https://developer.mozilla.org/en-US/blog/test-javascript-with-jest-on-vultr/", + "type": "article" } ] }, From 373068e7132ff7659f27e58e3e5087bf67bf8f6d Mon Sep 17 00:00:00 2001 From: Akshay B <115059219+Akshay-66@users.noreply.github.com> Date: Wed, 16 Oct 2024 14:04:31 +0530 Subject: [PATCH 016/159] Contribution to AI Engineer Roadmap (#7490) * Update opensource-ai@a_3SabylVqzzOyw3tZN5f.md Updating on AI Engineer roadmap - OpenSource AI * Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md Updating on AI Engineer Roadmap - Open vs Closed Source Models * Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md minor change (-) * Update popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md Updating on AI Engineer Roadmap - Popular Open Source Models * Update src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md cut down the topic --------- Co-authored-by: dsh --- ...open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md | 9 ++++++++- .../content/opensource-ai@a_3SabylVqzzOyw3tZN5f.md | 9 ++++++++- .../popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md | 9 ++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/data/roadmaps/ai-engineer/content/open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md b/src/data/roadmaps/ai-engineer/content/open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md index 2d77d78b7..4266710f5 100644 --- a/src/data/roadmaps/ai-engineer/content/open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md +++ b/src/data/roadmaps/ai-engineer/content/open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md @@ -1 +1,8 @@ -# Open vs Closed Source Models \ No newline at end of file +# Open vs Closed Source Models + +Open-source AI refers to models and software with publicly accessible source code, promoting collaboration, transparency, and cost-effectiveness, but it can face challenges like quality control and security risks. In contrast, closed-source AI involves proprietary models that are not publicly available, offering higher quality, performance, and security due to significant corporate investment, but lacking transparency and community collaboration. Some of them were `Llama` for Open Source Model and `Open AI` for Closed Source Model. + +Learn more from the following resources: + +- [@article@Open AI vs Closed AI](https://formtek.com/blog/open-ai-vs-closed-ai-whats-the-difference-and-why-does-it-matter/) +- [@article@Open vs Closed Source Model](https://www.techtarget.com/searchEnterpriseAI/feature/Attributes-of-open-vs-closed-AI-explained) diff --git a/src/data/roadmaps/ai-engineer/content/opensource-ai@a_3SabylVqzzOyw3tZN5f.md b/src/data/roadmaps/ai-engineer/content/opensource-ai@a_3SabylVqzzOyw3tZN5f.md index 5d3f0e410..97f71dcdb 100644 --- a/src/data/roadmaps/ai-engineer/content/opensource-ai@a_3SabylVqzzOyw3tZN5f.md +++ b/src/data/roadmaps/ai-engineer/content/opensource-ai@a_3SabylVqzzOyw3tZN5f.md @@ -1 +1,8 @@ -# OpenSource AI \ No newline at end of file +# OpenSource AI + +Open-source AI refers to the development and deployment of artificial intelligence technologies using open-source practices. This means that the source code is freely accessible, allowing developers to inspect, modify, and distribute AI systems without restrictions. + +Learn more from the following resources: + +- [@article@The Open Source AI Definition](https://opensource.org/deepdive/drafts/the-open-source-ai-definition-draft-v-0-0-3) +- [@article@Defining Open Source AI](https://www.technologyreview.com/2024/08/22/1097224/we-finally-have-a-definition-for-open-source-ai/) diff --git a/src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md b/src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md index 6c4dea5c3..20272f1bf 100644 --- a/src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md +++ b/src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md @@ -1 +1,8 @@ -# Popular Open Source Models \ No newline at end of file +# Popular Open Source Models + +Notable open-source examples are `BERT`, developed by Google, which has become a foundational model for natural language processing tasks; `BLOOM`, a multilingual model with 176 billion parameters created through a collaborative project by Hugging Face; and `Falcon 180B`, known for its impressive performance in NLP tasks. + +Learn more from the following resources: + +- [@article@Top Open Source Models](https://www.datacamp.com/blog/top-open-source-llms) +- [@article@Mark on Open Source AI](https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/) From 88e7aa9d3f71a0216820ebe25ee9dcb7a6373c6c Mon Sep 17 00:00:00 2001 From: Aboody_01 <91767628+Abdullahi-abdiaziz@users.noreply.github.com> Date: Wed, 16 Oct 2024 11:35:31 +0300 Subject: [PATCH 017/159] Add a Javascript error reference article to Nodejs roadmap (#7487) * Add a Javascript error reference article to Nodejs roadmap a Javascript error reference article from mdn web documents * Add a reference article to the nodejs Roadmap --- .../nodejs/content/javascript-errors@Wg7KSpAPxjeFMxC6PBnHO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/roadmaps/nodejs/content/javascript-errors@Wg7KSpAPxjeFMxC6PBnHO.md b/src/data/roadmaps/nodejs/content/javascript-errors@Wg7KSpAPxjeFMxC6PBnHO.md index 85dfc3454..5f1d72d26 100644 --- a/src/data/roadmaps/nodejs/content/javascript-errors@Wg7KSpAPxjeFMxC6PBnHO.md +++ b/src/data/roadmaps/nodejs/content/javascript-errors@Wg7KSpAPxjeFMxC6PBnHO.md @@ -14,4 +14,5 @@ JavaScript has six types of errors that may occur during the execution of the sc Visit the following resources to learn more: - [@article@Error Types in JavaScript](https://blog.bitsrc.io/types-of-native-errors-in-javascript-you-must-know-b8238d40e492) +- [@article@JavaScript error reference - MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) From c178749818d1d863708e31d4368bd3940f7bdc14 Mon Sep 17 00:00:00 2001 From: Nirator <51956876+Nirator78@users.noreply.github.com> Date: Wed, 16 Oct 2024 12:58:13 +0200 Subject: [PATCH 018/159] Add minipic to image compressor list (#7489) * Add minipic to image compressor list * Update src/data/best-practices/frontend-performance/content/compress-your-images.md capitalized --------- Co-authored-by: dsh --- .../frontend-performance/content/compress-your-images.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/best-practices/frontend-performance/content/compress-your-images.md b/src/data/best-practices/frontend-performance/content/compress-your-images.md index 74036d3bb..083298a63 100644 --- a/src/data/best-practices/frontend-performance/content/compress-your-images.md +++ b/src/data/best-practices/frontend-performance/content/compress-your-images.md @@ -16,3 +16,4 @@ Optimized images load faster in your browser and consume less data. - [Cloudinary - Image Analysis Tool](https://webspeedtest.cloudinary.com) - [ImageEngine - Image Webpage Loading Test](https://demo.imgeng.in) - [SVGOMG - Optimize SVG vector graphics files](https://jakearchibald.github.io/svgomg/) +- [Minipic - Convert Images Super Fast](https://minipic.app/) From b4990ae3cda3378c4f77bb05fc06e952b19a96f3 Mon Sep 17 00:00:00 2001 From: Arik Chakma Date: Wed, 16 Oct 2024 19:43:42 +0600 Subject: [PATCH 019/159] fix: api design node id (#7493) --- src/data/roadmaps/api-design/api-design.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmaps/api-design/api-design.json b/src/data/roadmaps/api-design/api-design.json index 86b5d2cd9..6d8efc9a1 100644 --- a/src/data/roadmaps/api-design/api-design.json +++ b/src/data/roadmaps/api-design/api-design.json @@ -3550,7 +3550,7 @@ "selectable": true }, { - "id": "Wwd-0PjrtViMFWxRGaQey", + "id": "1DrqtOwxCuFtWQXQ6ZALp", "type": "subtopic", "position": { "x": -198.46804969796983, From b513a48c2add383b03b263b7c40d7162aeb9d603 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 16 Oct 2024 19:44:36 +0600 Subject: [PATCH 020/159] chore: update roadmap content json (#7488) Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com> --- public/roadmap-content/ai-engineer.json | 60 +++++++++++++++++++--- public/roadmap-content/cyber-security.json | 2 +- public/roadmap-content/nodejs.json | 5 ++ 3 files changed, 60 insertions(+), 7 deletions(-) diff --git a/public/roadmap-content/ai-engineer.json b/public/roadmap-content/ai-engineer.json index bab60f520..303f76ff3 100644 --- a/public/roadmap-content/ai-engineer.json +++ b/public/roadmap-content/ai-engineer.json @@ -6,18 +6,66 @@ }, "GN6SnI7RXIeW8JeD-qORW": { "title": "What is an AI Engineer?", - "description": "", - "links": [] + "description": "AI engineers are professionals who specialize in designing, developing, and implementing artificial intelligence (AI) systems. Their work is essential in various industries, as they create applications that enable machines to perform tasks that typically require human intelligence, such as problem-solving, learning, and decision-making.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "AI For Everyone", + "url": "https://www.coursera.org/learn/ai-for-everyone", + "type": "course" + }, + { + "title": "How to Become an AI Engineer: Duties, Skills, and Salary", + "url": "https://www.simplilearn.com/tutorials/artificial-intelligence-tutorial/how-to-become-an-ai-engineer", + "type": "article" + }, + { + "title": "AI engineers: What they do and how to become one", + "url": "https://www.techtarget.com/whatis/feature/How-to-become-an-artificial-intelligence-engineer", + "type": "article" + }, + { + "title": "AI Engineers- What Do They Do?", + "url": "https://www.youtube.com/watch?v=y8qRq9PMCh8&t=1s", + "type": "video" + } + ] }, "jSZ1LhPdhlkW-9QJhIvFs": { "title": "AI Engineer vs ML Engineer", - "description": "", - "links": [] + "description": "An AI Engineer develops broad AI solutions, such as chatbots, NLP, and intelligent automation, focusing on integrating AI technologies into large applications. In contrast, an ML Engineer is more focused on building and deploying machine learning models, handling data processing, model training, and optimization in production environments.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "AI Engineer vs. ML Engineer: Duties, Skills, and Qualifications", + "url": "https://www.upwork.com/resources/ai-engineer-vs-ml-engineer", + "type": "article" + }, + { + "title": "AI Developer vs ML Engineer: What’s the difference?", + "url": "https://www.youtube.com/watch?v=yU87V2-XisA&t=2s", + "type": "video" + } + ] }, "wf2BSyUekr1S1q6l8kyq6": { "title": "LLMs", - "description": "", - "links": [] + "description": "Large Language Models (LLMs) are advanced artificial intelligence programs designed to comprehend and generate human language text.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "What is a large language model (LLM)?", + "url": "https://www.cloudflare.com/learning/ai/what-is-large-language-model/", + "type": "article" + }, + { + "title": "Large language model", + "url": "https://en.wikipedia.org/wiki/Large_language_model", + "type": "article" + }, + { + "title": "How Large Language Models Work", + "url": "https://www.youtube.com/watch?v=5sLYAQS9sWQ&t=1s", + "type": "video" + } + ] }, "KWjD4xEPhOOYS51dvRLd2": { "title": "Inference", diff --git a/public/roadmap-content/cyber-security.json b/public/roadmap-content/cyber-security.json index 95e28dbee..a6d38d39b 100644 --- a/public/roadmap-content/cyber-security.json +++ b/public/roadmap-content/cyber-security.json @@ -78,7 +78,7 @@ "type": "article" }, { - "title": "Libra Office", + "title": "LibreOffice", "url": "https://www.libreoffice.org/", "type": "article" } diff --git a/public/roadmap-content/nodejs.json b/public/roadmap-content/nodejs.json index 0c590de47..24c34bda2 100644 --- a/public/roadmap-content/nodejs.json +++ b/public/roadmap-content/nodejs.json @@ -463,6 +463,11 @@ "title": "Node.js Errors - Official Docs", "url": "https://nodejs.org/api/errors.html#errors_class_systemerror", "type": "article" + }, + { + "title": "@Article@16 Common Errors in Node.js and How to Fix Them", + "url": "https://betterstack.com/community/guides/scaling-nodejs/nodejs-errors/", + "type": "article" } ] }, From 2410c89bde86ff4d8fdbc2e53872b85eb59da94a Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 16 Oct 2024 15:16:51 +0100 Subject: [PATCH 021/159] Remove Hacktoberfest (#7494) --- contributing.md | 55 ------------------------------------------------- 1 file changed, 55 deletions(-) diff --git a/contributing.md b/contributing.md index e6f603081..0b0ec115b 100644 --- a/contributing.md +++ b/contributing.md @@ -2,67 +2,12 @@ First of all, thank you for considering to contribute. Please look at the details below: -- [Hacktoberfest Contributions](#hacktoberfest-contributions) - [New Roadmaps](#new-roadmaps) - [Existing Roadmaps](#existing-roadmaps) - [Adding Projects](#adding-projects) - [Adding Content](#adding-content) - [Guidelines](#guidelines) -## Hacktoberfest Contributions - -We are taking part in [Hacktoberfest 11](https://hacktoberfest.com/)! - -Before you start to contribute to our project in order to satisfy [Hacktoberfest requirements](https://hacktoberfest.com/participation/#contributors), please bare in mind the following: - -* There is not a Hacktoberfest t-shirt this year [(see their FAQ)](https://hacktoberfest.com/participation/#faq). -* There is not an infinite opportunity to contribute to the roadmap.sh project. - -### Hacktoberfest Specific Contribution rules - -As Hacktoberfest attracts a lot of contributors (which is awesome), it does require a more rigid and strictly enforced set of guidelines than the average contribution. - -These are as follows: - -1. No single file contributions, please contribute to a minimum of two. - -Whilst single file contributions, such as adding one link to a single topic, is perfectly fine outside of hacktoberfest, this can (and probably will) result it an easy 4 pull requests for everyone and we will just become a Hacktoberfest farming project. - -***Note: If you contribute the entire contents of a topic i.e. the topic has 0 copy and 0 links, this will count.*** - -2. Typo fixes will not count (by themselves). - -Whilst fixing typos is a great thing to do, lets bundle them in with actual contributions if we see them! - -3. The same basic rules apply. - -- Content must be in English. -- Maximum of 8 links per topic. -- Follow the below style guide for content. - -Here is an example of a **fully complete** topic: - -```markdown -# Redis - -Redis is an open-source, in-memory data structure store known for its speed and versatility. It supports various data types, including strings, lists, sets, hashes, and sorted sets, and provides functionalities such as caching, session management, real-time analytics, and message brokering. Redis operates as a key-value store, allowing for rapid read and write operations, and is often used to enhance performance and scalability in applications. It supports persistence options to save data to disk, replication for high availability, and clustering for horizontal scaling. Redis is widely used for scenarios requiring low-latency access to data and high-throughput performance. - -Learn more from the following resources: - -[@official@Link 1](https:/google.com) -[@article@Link 2](https:/google.com) -[@article@Link 3](https:/google.com) -[@course@Link 4](https:/google.com) -[@course@Link 5](https:/google.com) -[@video@Link 6](https:/google.com) -[@video@Link 7](https:/google.com) -[@video@Link 8](https:/google.com) -``` - -Contributions to the project that meet these requirements will be given the label `hacktoberfest-accepted` and merged, contributions that do not meet the requirements will simply be closed. - -Any attempts at spam PRs will be given the `spam` tag. If you recieve 2 `spam` tags against you, you will be [disqualified from Hacktoberfest](https://hacktoberfest.com/participation/#spam). - ## New Roadmaps For new roadmaps, you can either: From 6e5e77c86b182893401f55900674a4999c66bdc1 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 16 Oct 2024 15:48:43 +0100 Subject: [PATCH 022/159] Revert "Remove Hacktoberfest (#7494)" (#7496) This reverts commit 2410c89bde86ff4d8fdbc2e53872b85eb59da94a. --- contributing.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/contributing.md b/contributing.md index 0b0ec115b..e6f603081 100644 --- a/contributing.md +++ b/contributing.md @@ -2,12 +2,67 @@ First of all, thank you for considering to contribute. Please look at the details below: +- [Hacktoberfest Contributions](#hacktoberfest-contributions) - [New Roadmaps](#new-roadmaps) - [Existing Roadmaps](#existing-roadmaps) - [Adding Projects](#adding-projects) - [Adding Content](#adding-content) - [Guidelines](#guidelines) +## Hacktoberfest Contributions + +We are taking part in [Hacktoberfest 11](https://hacktoberfest.com/)! + +Before you start to contribute to our project in order to satisfy [Hacktoberfest requirements](https://hacktoberfest.com/participation/#contributors), please bare in mind the following: + +* There is not a Hacktoberfest t-shirt this year [(see their FAQ)](https://hacktoberfest.com/participation/#faq). +* There is not an infinite opportunity to contribute to the roadmap.sh project. + +### Hacktoberfest Specific Contribution rules + +As Hacktoberfest attracts a lot of contributors (which is awesome), it does require a more rigid and strictly enforced set of guidelines than the average contribution. + +These are as follows: + +1. No single file contributions, please contribute to a minimum of two. + +Whilst single file contributions, such as adding one link to a single topic, is perfectly fine outside of hacktoberfest, this can (and probably will) result it an easy 4 pull requests for everyone and we will just become a Hacktoberfest farming project. + +***Note: If you contribute the entire contents of a topic i.e. the topic has 0 copy and 0 links, this will count.*** + +2. Typo fixes will not count (by themselves). + +Whilst fixing typos is a great thing to do, lets bundle them in with actual contributions if we see them! + +3. The same basic rules apply. + +- Content must be in English. +- Maximum of 8 links per topic. +- Follow the below style guide for content. + +Here is an example of a **fully complete** topic: + +```markdown +# Redis + +Redis is an open-source, in-memory data structure store known for its speed and versatility. It supports various data types, including strings, lists, sets, hashes, and sorted sets, and provides functionalities such as caching, session management, real-time analytics, and message brokering. Redis operates as a key-value store, allowing for rapid read and write operations, and is often used to enhance performance and scalability in applications. It supports persistence options to save data to disk, replication for high availability, and clustering for horizontal scaling. Redis is widely used for scenarios requiring low-latency access to data and high-throughput performance. + +Learn more from the following resources: + +[@official@Link 1](https:/google.com) +[@article@Link 2](https:/google.com) +[@article@Link 3](https:/google.com) +[@course@Link 4](https:/google.com) +[@course@Link 5](https:/google.com) +[@video@Link 6](https:/google.com) +[@video@Link 7](https:/google.com) +[@video@Link 8](https:/google.com) +``` + +Contributions to the project that meet these requirements will be given the label `hacktoberfest-accepted` and merged, contributions that do not meet the requirements will simply be closed. + +Any attempts at spam PRs will be given the `spam` tag. If you recieve 2 `spam` tags against you, you will be [disqualified from Hacktoberfest](https://hacktoberfest.com/participation/#spam). + ## New Roadmaps For new roadmaps, you can either: From f20cf955925ad531c9a2224b906d57b9b383f208 Mon Sep 17 00:00:00 2001 From: Akshay B <115059219+Akshay-66@users.noreply.github.com> Date: Wed, 16 Oct 2024 20:21:42 +0530 Subject: [PATCH 023/159] OpenSource AI Engineer content (#7492) * Update opensource-ai@a_3SabylVqzzOyw3tZN5f.md Updating on AI Engineer roadmap - OpenSource AI * Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md Updating on AI Engineer Roadmap - Open vs Closed Source Models * Update open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md minor change (-) * Update popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md Updating on AI Engineer Roadmap - Popular Open Source Models * Update src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md cut down the topic * Update ollama@rTT2UnvqFO3GH6ThPLEjO.md Updating on AI Engineer Roadmap - Ollama * Update ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md Updating on AI Engineer Roadmap - Ollama Models * Update ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md Updating on AI Engineer Roadmap - Ollama SDK * Update hugging-face@v99C5Bml2a6148LCJ9gy9.md Updating on AI Engineer Roadmap - Hugging Face * Update hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md Updating on AI Engineer Roadmap - Hugging Face Tasks * Update hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md Updating on AI Engineer Roadmap - Hugging Face Hub * Update inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md Updating on AI Engineer Roadmap - Inference SDK * Update transformersjs@bGLrbpxKgENe2xS1eQtdh.md Updating on AI Engineer Roadmap - Transformers.js --------- Co-authored-by: dsh --- .../content/hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md | 9 ++++++++- .../hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md | 10 +++++++++- .../content/hugging-face@v99C5Bml2a6148LCJ9gy9.md | 9 ++++++++- .../content/inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md | 9 ++++++++- .../content/ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md | 9 ++++++++- .../content/ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md | 10 +++++++++- .../content/ollama@rTT2UnvqFO3GH6ThPLEjO.md | 9 ++++++++- .../content/transformersjs@bGLrbpxKgENe2xS1eQtdh.md | 8 +++++++- 8 files changed, 65 insertions(+), 8 deletions(-) diff --git a/src/data/roadmaps/ai-engineer/content/hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md b/src/data/roadmaps/ai-engineer/content/hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md index 9acd96f50..210ec92fc 100644 --- a/src/data/roadmaps/ai-engineer/content/hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md +++ b/src/data/roadmaps/ai-engineer/content/hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md @@ -1 +1,8 @@ -# Hugging Face Hub \ No newline at end of file +# Hugging Face Hub + +The Hugging Face Hub is a comprehensive platform that hosts over 900,000 machine learning models, 200,000 datasets, and 300,000 demo applications, facilitating collaboration and sharing within the AI community. It serves as a central repository where users can discover, upload, and experiment with various models and datasets across multiple domains, including natural language processing, computer vision, and audio tasks. It also supports version control. + +Learn more from the following resources: + +- [@official@Documentation](https://huggingface.co/docs/hub/en/index) +- [@course@nlp-official](https://huggingface.co/learn/nlp-course/en/chapter4/1) diff --git a/src/data/roadmaps/ai-engineer/content/hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md b/src/data/roadmaps/ai-engineer/content/hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md index 262f42552..28c3c6ab8 100644 --- a/src/data/roadmaps/ai-engineer/content/hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md +++ b/src/data/roadmaps/ai-engineer/content/hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md @@ -1 +1,9 @@ -# Hugging Face Tasks \ No newline at end of file +# Hugging Face Tasks + +Hugging Face supports text classification, named entity recognition, question answering, summarization, and translation. It also extends to multimodal tasks that involve both text and images, such as visual question answering (VQA) and image-text matching. Each task is done by various pre-trained models that can be easily accessed and fine-tuned through the Hugging Face library. + +Learn more from the following resources: + +- [@official@Task and Model](https://huggingface.co/learn/computer-vision-course/en/unit4/multimodal-models/tasks-models-part1) +- [@official@Task Summary](https://huggingface.co/docs/transformers/v4.14.1/en/task_summary) +- [@official@Task Manager](https://huggingface.co/docs/optimum/en/exporters/task_manager) diff --git a/src/data/roadmaps/ai-engineer/content/hugging-face@v99C5Bml2a6148LCJ9gy9.md b/src/data/roadmaps/ai-engineer/content/hugging-face@v99C5Bml2a6148LCJ9gy9.md index 102010471..11083a0aa 100644 --- a/src/data/roadmaps/ai-engineer/content/hugging-face@v99C5Bml2a6148LCJ9gy9.md +++ b/src/data/roadmaps/ai-engineer/content/hugging-face@v99C5Bml2a6148LCJ9gy9.md @@ -1 +1,8 @@ -# Hugging Face \ No newline at end of file +# Hugging Face + +Hugging Face is often called the GitHub of machine learning because it lets developers share and test their work openly. Hugging Face is known for its `Transformers Python library`, which simplifies the process of `downloading and training ML models`. It promotes collaboration within the AI community by enabling users to `share models` and `datasets`, thus advancing the democratization of artificial intelligence through open-source practices. + +Learn more from the following resources: + +- [@official@Hugging Face](https://huggingface.co/) +- [@official@Github](https://github.com/huggingface) diff --git a/src/data/roadmaps/ai-engineer/content/inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md b/src/data/roadmaps/ai-engineer/content/inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md index 308de7599..a5f84e6ad 100644 --- a/src/data/roadmaps/ai-engineer/content/inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md +++ b/src/data/roadmaps/ai-engineer/content/inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md @@ -1 +1,8 @@ -# Inference SDK \ No newline at end of file +# Inference SDK + +The Hugging Face Inference SDK is a powerful tool that allows developers to easily integrate and run inference on large language models hosted on the Hugging Face Hub. By using the `InferenceClient`, users can make API calls to various models for tasks such as text generation, image creation, and more. The SDK supports both synchronous and asynchronous operations thus compatible with existing workflows. + +Learn more from the following resources: + +- [@official@Inference](https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client) +- [@article@Endpoint Setup](https://www.npmjs.com/package/@huggingface/inference) diff --git a/src/data/roadmaps/ai-engineer/content/ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md b/src/data/roadmaps/ai-engineer/content/ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md index 53a0988ae..90b4782b0 100644 --- a/src/data/roadmaps/ai-engineer/content/ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md +++ b/src/data/roadmaps/ai-engineer/content/ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md @@ -1 +1,8 @@ -# Ollama Models \ No newline at end of file +# Ollama Models + +Ollama includes popular options like `Llama 2, Mistral, and Code Llama`. It simplifies the deployment process by bundling model weights, configurations, and datasets into a single package managed by a `Modelfile`, allowing users to easily manage and interact with these models. The platform's extensive library allows users to choose models tailored to their specific needs, and reduces reliance in cloud. Ollama Models could be of `text/base`, `chat/instruct` or `multi modal`. + +Learn more from the following resources: + +- [@official@Ollama Model Library](https://ollama.com/library) +- [@course@Ollama Free Course](https://youtu.be/f4tXwCNP1Ac?si=0RRKIfw2XAsWNNBo) diff --git a/src/data/roadmaps/ai-engineer/content/ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md b/src/data/roadmaps/ai-engineer/content/ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md index d0419b803..c615cdae6 100644 --- a/src/data/roadmaps/ai-engineer/content/ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md +++ b/src/data/roadmaps/ai-engineer/content/ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md @@ -1 +1,9 @@ -# Ollama SDK \ No newline at end of file +# Ollama SDK + +The Ollama SDK is a community-driven tool that allows developers to integrate and run large language models (LLMs) locally through a simple API. Enabling users to easily import the Ollama provider and create customized instances for various models, such as Llama 2 and Mistral. The SDK supports functionalities like `text generation` and `embeddings`, making it versatile for applications ranging from `chatbots` to `content generation`. Also Ollama SDK enhances privacy and control over data while offering seamless integration with existing workflows. + +Learn more from the following resources: + +- [@article@SDK Provider](https://sdk.vercel.ai/providers/community-providers/ollama) +- [@article@Beginner's Guide](https://dev.to/jayantaadhikary/using-the-ollama-api-to-run-llms-and-generate-responses-locally-18b7) +- [@article@Setup](https://klu.ai/glossary/ollama) diff --git a/src/data/roadmaps/ai-engineer/content/ollama@rTT2UnvqFO3GH6ThPLEjO.md b/src/data/roadmaps/ai-engineer/content/ollama@rTT2UnvqFO3GH6ThPLEjO.md index 7ad430510..39d34b6b3 100644 --- a/src/data/roadmaps/ai-engineer/content/ollama@rTT2UnvqFO3GH6ThPLEjO.md +++ b/src/data/roadmaps/ai-engineer/content/ollama@rTT2UnvqFO3GH6ThPLEjO.md @@ -1 +1,8 @@ -# Ollama \ No newline at end of file +# Ollama + +Ollama is a powerful open-source tool designed to run large language models (LLMs) locally on users' machines, It exposes a `local API`, allowing developers to seamlessly integrate LLMs into their applications and workflows. This API facilitates efficient communication between your application and the LLM, enabling you to send prompts, receive responses, and leverage the full potential of these **powerful AI models**. + +Learn more from the following resources: + +- [@official@Ollama](https://ollama.com/) +- [@article@Ollama Explained](https://www.geeksforgeeks.org/ollama-explained-transforming-ai-accessibility-and-language-processing/) diff --git a/src/data/roadmaps/ai-engineer/content/transformersjs@bGLrbpxKgENe2xS1eQtdh.md b/src/data/roadmaps/ai-engineer/content/transformersjs@bGLrbpxKgENe2xS1eQtdh.md index 00dff253d..e8f252956 100644 --- a/src/data/roadmaps/ai-engineer/content/transformersjs@bGLrbpxKgENe2xS1eQtdh.md +++ b/src/data/roadmaps/ai-engineer/content/transformersjs@bGLrbpxKgENe2xS1eQtdh.md @@ -1 +1,7 @@ -# Transformers.js \ No newline at end of file +# Transformers.js + +Hugging Face Transformers.js is a JavaScript library that enables developers to run transformer models directly in the browser without requiring a server. It offers a similar API to the original Python library, allowing tasks like sentiment analysis, text generation, and image processing using pre-trained models. By supporting the `pipeline API`, it simplifies the integration of models with preprocessing and postprocessing functionalities. + +Learn more from the following resources: + +- [@official@Transformers.js](https://huggingface.co/docs/hub/en/transformers-js) From b1d97db2d2c9f1d7e084423160e85c595ea226de Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 16 Oct 2024 16:51:48 +0100 Subject: [PATCH 024/159] Add change log --- src/data/changelogs/devops-project-ideas.md | 20 +++++++++++++++++++ .../how-to-become-frontend-developer.md | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/data/changelogs/devops-project-ideas.md diff --git a/src/data/changelogs/devops-project-ideas.md b/src/data/changelogs/devops-project-ideas.md new file mode 100644 index 000000000..2fb47b538 --- /dev/null +++ b/src/data/changelogs/devops-project-ideas.md @@ -0,0 +1,20 @@ +--- +title: 'DevOps Project Ideas, Team Dashboard, Redis Content' +description: 'New Project Ideas for DevOps, Team Dashboard, Redis Content' +images: + "DevOps Project Ideas": "https://assets.roadmap.sh/guest/devops-project-ideas.png" + "Redis Resources": "https://assets.roadmap.sh/guest/redis-resources.png" +seo: + title: 'DevOps Project Ideas, Team Dashboard, Redis Content' + description: '' +date: 2024-10-16 +--- + +We have added 21 new project ideas to our DevOps roadmap, added content to Redis roadmap and introduced a new team dashboard for teams + +- Practice your skills with [21 newly added DevOps Project Ideas](https://roadmap.sh/devops) +- [Redis roadmap](https://roadmap.sh/redis) now comes with learning resources. +- Watch us [interview Bruno Simon](https://www.youtube.com/watch?v=IQK9T05BsOw) about his journey as a creative developer. +- Bug fixes and performance improvements + +ML Engineer roadmap and team dashboards are coming up next. Stay tuned! \ No newline at end of file diff --git a/src/data/guides/how-to-become-frontend-developer.md b/src/data/guides/how-to-become-frontend-developer.md index d289608de..e5dbe73d1 100644 --- a/src/data/guides/how-to-become-frontend-developer.md +++ b/src/data/guides/how-to-become-frontend-developer.md @@ -7,7 +7,7 @@ seo: title: 'How to become a Front-End Developer in 7 Steps' description: 'Learn how to become a front-end developer in 7 clear steps. Start your coding journey with practical tips and resources today!' ogImageUrl: 'https://assets.roadmap.sh/guest/how-to-become-frontend-developer-i23nx.jpg' -isNew: true +isNew: false type: 'textual' date: 2024-08-15 sitemap: From 6837330be14ea3b0bb84969bafaeac078789d330 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 16 Oct 2024 16:55:12 +0100 Subject: [PATCH 025/159] Add team dashboard --- src/data/changelogs/devops-project-ideas.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/data/changelogs/devops-project-ideas.md b/src/data/changelogs/devops-project-ideas.md index 2fb47b538..ba86011c7 100644 --- a/src/data/changelogs/devops-project-ideas.md +++ b/src/data/changelogs/devops-project-ideas.md @@ -4,6 +4,7 @@ description: 'New Project Ideas for DevOps, Team Dashboard, Redis Content' images: "DevOps Project Ideas": "https://assets.roadmap.sh/guest/devops-project-ideas.png" "Redis Resources": "https://assets.roadmap.sh/guest/redis-resources.png" + "Team Dashboard": "https://assets.roadmap.sh/guest/team-dashboard.png" seo: title: 'DevOps Project Ideas, Team Dashboard, Redis Content' description: '' @@ -13,6 +14,7 @@ date: 2024-10-16 We have added 21 new project ideas to our DevOps roadmap, added content to Redis roadmap and introduced a new team dashboard for teams - Practice your skills with [21 newly added DevOps Project Ideas](https://roadmap.sh/devops) +- We have a new [Dashboard for teams](https://roadmap.sh/teams) to track their team activity. - [Redis roadmap](https://roadmap.sh/redis) now comes with learning resources. - Watch us [interview Bruno Simon](https://www.youtube.com/watch?v=IQK9T05BsOw) about his journey as a creative developer. - Bug fixes and performance improvements From 87ed33b330791a406b2a910d54f6bdaca259ae5d Mon Sep 17 00:00:00 2001 From: fellalli Date: Wed, 16 Oct 2024 22:14:09 +0200 Subject: [PATCH 026/159] Add C++ projects (#7497) --- src/data/projects/caching-server.md | 1 + src/data/projects/database-backup-utility.md | 1 + src/data/projects/expense-tracker.md | 1 + src/data/projects/github-user-activity.md | 1 + src/data/projects/number-guessing-game.md | 1 + src/data/projects/task-tracker.md | 1 + 6 files changed, 6 insertions(+) diff --git a/src/data/projects/caching-server.md b/src/data/projects/caching-server.md index 536a91d88..f158ed783 100644 --- a/src/data/projects/caching-server.md +++ b/src/data/projects/caching-server.md @@ -22,6 +22,7 @@ roadmapIds: - 'java' - 'golang' - 'spring-boot' + - 'cpp' --- You are required to build a CLI tool that starts a caching proxy server, it will forward requests to the actual server and cache the responses. If the same request is made again, it will return the cached response instead of forwarding the request to the server. diff --git a/src/data/projects/database-backup-utility.md b/src/data/projects/database-backup-utility.md index febd4b964..ca419e5d3 100644 --- a/src/data/projects/database-backup-utility.md +++ b/src/data/projects/database-backup-utility.md @@ -22,6 +22,7 @@ roadmapIds: - 'java' - 'golang' - 'spring-boot' + - 'cpp' --- You are required to build a command-line interface (CLI) utility for backing up any type of database. The utility will support various database management systems (DBMS) such as MySQL, PostgreSQL, MongoDB, SQLite, and others. The tool will feature automatic backup scheduling, compression of backup files, storage options (local and cloud), and logging of backup activities. diff --git a/src/data/projects/expense-tracker.md b/src/data/projects/expense-tracker.md index d87016d22..ffe224728 100644 --- a/src/data/projects/expense-tracker.md +++ b/src/data/projects/expense-tracker.md @@ -23,6 +23,7 @@ roadmapIds: - 'java' - 'golang' - 'spring-boot' + - 'cpp' --- Build a simple expense tracker application to manage your finances. The application should allow users to add, delete, and view their expenses. The application should also provide a summary of the expenses. diff --git a/src/data/projects/github-user-activity.md b/src/data/projects/github-user-activity.md index 1849a9b82..f74bea900 100644 --- a/src/data/projects/github-user-activity.md +++ b/src/data/projects/github-user-activity.md @@ -22,6 +22,7 @@ roadmapIds: - 'java' - 'golang' - 'spring-boot' + - 'cpp' --- In this project, you will build a simple command line interface (CLI) to fetch the recent activity of a GitHub user and display it in the terminal. This project will help you practice your programming skills, including working with APIs, handling JSON data, and building a simple CLI application. diff --git a/src/data/projects/number-guessing-game.md b/src/data/projects/number-guessing-game.md index 752d6b2f9..229fe457e 100644 --- a/src/data/projects/number-guessing-game.md +++ b/src/data/projects/number-guessing-game.md @@ -22,6 +22,7 @@ roadmapIds: - 'java' - 'golang' - 'spring-boot' + - 'cpp' --- You are required to build a simple number guessing game where the computer randomly selects a number and the user has to guess it. The user will be given a limited number of chances to guess the number. If the user guesses the number correctly, the game will end, and the user will win. Otherwise, the game will continue until the user runs out of chances. diff --git a/src/data/projects/task-tracker.md b/src/data/projects/task-tracker.md index e624dedee..e2c52a8ed 100644 --- a/src/data/projects/task-tracker.md +++ b/src/data/projects/task-tracker.md @@ -22,6 +22,7 @@ roadmapIds: - 'java' - 'golang' - 'spring-boot' + - 'cpp' --- Task tracker is a project used to track and manage your tasks. In this task, you will build a simple command line interface (CLI) to track what you need to do, what you have done, and what you are currently working on. This project will help you practice your programming skills, including working with the filesystem, handling user inputs, and building a simple CLI application. From c481e8aa38c39e784d00254f8d77158f77dca978 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 16 Oct 2024 23:07:02 +0100 Subject: [PATCH 027/159] Add UTM registration tracking --- .../AuthenticationFlow/GitHubButton.tsx | 3 + .../AuthenticationFlow/GoogleButton.tsx | 17 ++++- .../AuthenticationFlow/LinkedInButton.tsx | 12 +++- .../TriggerVerifyAccount.tsx | 3 + src/components/PageSponsor.tsx | 11 ++++ src/lib/browser.ts | 62 +++++++++++++++++++ 6 files changed, 102 insertions(+), 6 deletions(-) diff --git a/src/components/AuthenticationFlow/GitHubButton.tsx b/src/components/AuthenticationFlow/GitHubButton.tsx index 3deb4c569..b0001699a 100644 --- a/src/components/AuthenticationFlow/GitHubButton.tsx +++ b/src/components/AuthenticationFlow/GitHubButton.tsx @@ -4,6 +4,7 @@ import Cookies from 'js-cookie'; import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt'; import { httpGet } from '../../lib/http'; import { Spinner } from '../ReactIcons/Spinner.tsx'; +import { triggerUtmRegistration } from '../../lib/browser.ts'; type GitHubButtonProps = { isDisabled?: boolean; @@ -46,6 +47,8 @@ export function GitHubButton(props: GitHubButtonProps) { return; } + triggerUtmRegistration(); + let redirectUrl = '/'; const gitHubRedirectAt = localStorage.getItem(GITHUB_REDIRECT_AT); const lastPageBeforeGithub = localStorage.getItem(GITHUB_LAST_PAGE); diff --git a/src/components/AuthenticationFlow/GoogleButton.tsx b/src/components/AuthenticationFlow/GoogleButton.tsx index 60b0dcf84..950c2237d 100644 --- a/src/components/AuthenticationFlow/GoogleButton.tsx +++ b/src/components/AuthenticationFlow/GoogleButton.tsx @@ -4,6 +4,10 @@ import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt'; import { httpGet } from '../../lib/http'; import { Spinner } from '../ReactIcons/Spinner.tsx'; import { GoogleIcon } from '../ReactIcons/GoogleIcon.tsx'; +import { + getStoredUtmParams, + triggerUtmRegistration, +} from '../../lib/browser.ts'; type GoogleButtonProps = { isDisabled?: boolean; @@ -37,6 +41,8 @@ export function GoogleButton(props: GoogleButtonProps) { }`, ) .then(({ response, error }) => { + const utmParams = getStoredUtmParams(); + if (!response?.token) { setError(error?.message || 'Something went wrong.'); setIsLoading(false); @@ -45,6 +51,8 @@ export function GoogleButton(props: GoogleButtonProps) { return; } + triggerUtmRegistration(); + let redirectUrl = '/'; const googleRedirectAt = localStorage.getItem(GOOGLE_REDIRECT_AT); const lastPageBeforeGoogle = localStorage.getItem(GOOGLE_LAST_PAGE); @@ -97,9 +105,12 @@ export function GoogleButton(props: GoogleButtonProps) { // For non authentication pages, we want to redirect back to the page // the user was on before they clicked the social login button if (!['/login', '/signup'].includes(window.location.pathname)) { - const pagePath = ['/respond-invite', '/befriend', '/r', '/ai'].includes( - window.location.pathname, - ) + const pagePath = [ + '/respond-invite', + '/befriend', + '/r', + '/ai', + ].includes(window.location.pathname) ? window.location.pathname + window.location.search : window.location.pathname; diff --git a/src/components/AuthenticationFlow/LinkedInButton.tsx b/src/components/AuthenticationFlow/LinkedInButton.tsx index 6f36c319b..81924a068 100644 --- a/src/components/AuthenticationFlow/LinkedInButton.tsx +++ b/src/components/AuthenticationFlow/LinkedInButton.tsx @@ -4,6 +4,7 @@ import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt'; import { httpGet } from '../../lib/http'; import { Spinner } from '../ReactIcons/Spinner.tsx'; import { LinkedInIcon } from '../ReactIcons/LinkedInIcon.tsx'; +import { triggerUtmRegistration } from '../../lib/browser.ts'; type LinkedInButtonProps = { isDisabled?: boolean; @@ -45,6 +46,8 @@ export function LinkedInButton(props: LinkedInButtonProps) { return; } + triggerUtmRegistration(); + let redirectUrl = '/'; const linkedInRedirectAt = localStorage.getItem(LINKEDIN_REDIRECT_AT); const lastPageBeforeLinkedIn = localStorage.getItem(LINKEDIN_LAST_PAGE); @@ -97,9 +100,12 @@ export function LinkedInButton(props: LinkedInButtonProps) { // For non authentication pages, we want to redirect back to the page // the user was on before they clicked the social login button if (!['/login', '/signup'].includes(window.location.pathname)) { - const pagePath = ['/respond-invite', '/befriend', '/r', '/ai'].includes( - window.location.pathname, - ) + const pagePath = [ + '/respond-invite', + '/befriend', + '/r', + '/ai', + ].includes(window.location.pathname) ? window.location.pathname + window.location.search : window.location.pathname; diff --git a/src/components/AuthenticationFlow/TriggerVerifyAccount.tsx b/src/components/AuthenticationFlow/TriggerVerifyAccount.tsx index c9442ab52..0978e38d1 100644 --- a/src/components/AuthenticationFlow/TriggerVerifyAccount.tsx +++ b/src/components/AuthenticationFlow/TriggerVerifyAccount.tsx @@ -4,6 +4,7 @@ import { httpPost } from '../../lib/http'; import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt'; import { Spinner } from '../ReactIcons/Spinner'; import { ErrorIcon2 } from '../ReactIcons/ErrorIcon2'; +import { triggerUtmRegistration } from '../../lib/browser.ts'; export function TriggerVerifyAccount() { const [isLoading, setIsLoading] = useState(true); @@ -26,6 +27,8 @@ export function TriggerVerifyAccount() { return; } + triggerUtmRegistration(); + setAuthToken(response.token); window.location.href = '/'; }) diff --git a/src/components/PageSponsor.tsx b/src/components/PageSponsor.tsx index 392cf0c02..28591579b 100644 --- a/src/components/PageSponsor.tsx +++ b/src/components/PageSponsor.tsx @@ -6,6 +6,7 @@ import { X } from 'lucide-react'; import { setViewSponsorCookie } from '../lib/jwt'; import { isMobile } from '../lib/is-mobile'; import Cookies from 'js-cookie'; +import { getUrlUtmParams } from '../lib/browser.ts'; export type PageSponsorType = { company: string; @@ -50,6 +51,16 @@ export function PageSponsor(props: PageSponsorProps) { const [sponsorId, setSponsorId] = useState(null); const [sponsor, setSponsor] = useState(); + useEffect(() => { + const foundUtmParams = getUrlUtmParams(); + + if (!foundUtmParams.utmSource) { + return; + } + + localStorage.setItem('utm_params', JSON.stringify(foundUtmParams)); + }, []); + const loadSponsor = async () => { const currentPath = window.location.pathname; if ( diff --git a/src/lib/browser.ts b/src/lib/browser.ts index 425e27cc9..ffb39031c 100644 --- a/src/lib/browser.ts +++ b/src/lib/browser.ts @@ -1,3 +1,65 @@ +type UtmParams = Partial<{ + utmSource: string; + utmMedium: string; + utmCampaign: string; + utmContent: string; + utmTerm: string; +}>; + +export function getUrlUtmParams(): UtmParams { + if (typeof window === 'undefined') { + return {}; + } + + const utmParams = new URLSearchParams(window.location.search); + const utmSource = utmParams.get('utm_source') ?? undefined; + const utmMedium = utmParams.get('utm_medium') ?? undefined; + const utmCampaign = utmParams.get('utm_campaign') ?? undefined; + const utmContent = utmParams.get('utm_content') ?? undefined; + const utmTerm = utmParams.get('utm_term') ?? undefined; + + if (!utmSource || !utmCampaign) { + return {}; + } + + return { + utmSource: utmCampaign ? utmSource.toLowerCase() : undefined, + utmMedium: utmMedium ? utmMedium.toLowerCase() : undefined, + utmCampaign: utmCampaign ? utmCampaign.toLowerCase() : undefined, + utmContent: utmContent ? utmContent.toLowerCase() : undefined, + utmTerm: utmTerm ? utmTerm.toLowerCase() : undefined, + }; +} + +export function triggerUtmRegistration() { + const utmParams = getStoredUtmParams(); + console.log(utmParams); + if (!utmParams.utmSource) { + return; + } + + localStorage.removeItem('utm_params'); + + window.fireEvent({ + category: 'UserRegistration', + action: `Registration: ${utmParams.utmSource || 'unknown'}-${utmParams.utmCampaign || 'unknown'}`, + label: `Registration: ${utmParams.utmSource || 'unknown'}-${utmParams.utmCampaign || 'unknown'}`, + }); +} + +export function getStoredUtmParams(): UtmParams { + if (typeof window === 'undefined') { + return {}; + } + + const utmParams = localStorage.getItem('utm_params'); + if (!utmParams) { + return {}; + } + + return JSON.parse(utmParams); +} + export function getUrlParams() { if (typeof window === 'undefined') { return {}; From 5033c89adf4a63c4ae04ba29cbfe0582a50fd399 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 13:47:06 +0600 Subject: [PATCH 028/159] chore: update roadmap content json (#7503) Co-authored-by: kamranahmedse <4921183+kamranahmedse@users.noreply.github.com> --- public/roadmap-content/ai-engineer.json | 170 +++++++++++++++++++++--- public/roadmap-content/api-design.json | 32 ++--- public/roadmap-content/nodejs.json | 5 + 3 files changed, 164 insertions(+), 43 deletions(-) diff --git a/public/roadmap-content/ai-engineer.json b/public/roadmap-content/ai-engineer.json index 303f76ff3..ed3e18b8d 100644 --- a/public/roadmap-content/ai-engineer.json +++ b/public/roadmap-content/ai-engineer.json @@ -285,58 +285,184 @@ }, "a_3SabylVqzzOyw3tZN5f": { "title": "OpenSource AI", - "description": "", - "links": [] + "description": "Open-source AI refers to the development and deployment of artificial intelligence technologies using open-source practices. This means that the source code is freely accessible, allowing developers to inspect, modify, and distribute AI systems without restrictions.\n\nLearn more from the following resources:", + "links": [ + { + "title": "The Open Source AI Definition", + "url": "https://opensource.org/deepdive/drafts/the-open-source-ai-definition-draft-v-0-0-3", + "type": "article" + }, + { + "title": "Defining Open Source AI", + "url": "https://www.technologyreview.com/2024/08/22/1097224/we-finally-have-a-definition-for-open-source-ai/", + "type": "article" + } + ] }, "RBwGsq9DngUsl8PrrCbqx": { "title": "Open vs Closed Source Models", - "description": "", - "links": [] + "description": "Open-source AI refers to models and software with publicly accessible source code, promoting collaboration, transparency, and cost-effectiveness, but it can face challenges like quality control and security risks. In contrast, closed-source AI involves proprietary models that are not publicly available, offering higher quality, performance, and security due to significant corporate investment, but lacking transparency and community collaboration. Some of them were `Llama` for Open Source Model and `Open AI` for Closed Source Model.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Open AI vs Closed AI", + "url": "https://formtek.com/blog/open-ai-vs-closed-ai-whats-the-difference-and-why-does-it-matter/", + "type": "article" + }, + { + "title": "Open vs Closed Source Model", + "url": "https://www.techtarget.com/searchEnterpriseAI/feature/Attributes-of-open-vs-closed-AI-explained", + "type": "article" + } + ] }, "97eu-XxYUH9pYbD_KjAtA": { "title": "Popular Open Source Models", - "description": "", - "links": [] + "description": "Notable open-source examples are `BERT`, developed by Google, which has become a foundational model for natural language processing tasks; `BLOOM`, a multilingual model with 176 billion parameters created through a collaborative project by Hugging Face; and `Falcon 180B`, known for its impressive performance in NLP tasks.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Top Open Source Models", + "url": "https://www.datacamp.com/blog/top-open-source-llms", + "type": "article" + }, + { + "title": "Mark on Open Source AI", + "url": "https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/", + "type": "article" + } + ] }, "v99C5Bml2a6148LCJ9gy9": { "title": "Hugging Face", - "description": "", - "links": [] + "description": "Hugging Face is often called the GitHub of machine learning because it lets developers share and test their work openly. Hugging Face is known for its `Transformers Python library`, which simplifies the process of `downloading and training ML models`. It promotes collaboration within the AI community by enabling users to `share models` and `datasets`, thus advancing the democratization of artificial intelligence through open-source practices.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Hugging Face", + "url": "https://huggingface.co/", + "type": "article" + }, + { + "title": "Github", + "url": "https://github.com/huggingface", + "type": "article" + } + ] }, "YLOdOvLXa5Fa7_mmuvKEi": { "title": "Hugging Face Hub", - "description": "", - "links": [] + "description": "The Hugging Face Hub is a comprehensive platform that hosts over 900,000 machine learning models, 200,000 datasets, and 300,000 demo applications, facilitating collaboration and sharing within the AI community. It serves as a central repository where users can discover, upload, and experiment with various models and datasets across multiple domains, including natural language processing, computer vision, and audio tasks. It also supports version control.\n\nLearn more from the following resources:", + "links": [ + { + "title": "nlp-official", + "url": "https://huggingface.co/learn/nlp-course/en/chapter4/1", + "type": "course" + }, + { + "title": "Documentation", + "url": "https://huggingface.co/docs/hub/en/index", + "type": "article" + } + ] }, "YKIPOiSj_FNtg0h8uaSMq": { "title": "Hugging Face Tasks", - "description": "", - "links": [] + "description": "Hugging Face supports text classification, named entity recognition, question answering, summarization, and translation. It also extends to multimodal tasks that involve both text and images, such as visual question answering (VQA) and image-text matching. Each task is done by various pre-trained models that can be easily accessed and fine-tuned through the Hugging Face library.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Task and Model", + "url": "https://huggingface.co/learn/computer-vision-course/en/unit4/multimodal-models/tasks-models-part1", + "type": "article" + }, + { + "title": "Task Summary", + "url": "https://huggingface.co/docs/transformers/v4.14.1/en/task_summary", + "type": "article" + }, + { + "title": "Task Manager", + "url": "https://huggingface.co/docs/optimum/en/exporters/task_manager", + "type": "article" + } + ] }, "3kRTzlLNBnXdTsAEXVu_M": { "title": "Inference SDK", - "description": "", - "links": [] + "description": "The Hugging Face Inference SDK is a powerful tool that allows developers to easily integrate and run inference on large language models hosted on the Hugging Face Hub. By using the `InferenceClient`, users can make API calls to various models for tasks such as text generation, image creation, and more. The SDK supports both synchronous and asynchronous operations thus compatible with existing workflows.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Inference", + "url": "https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client", + "type": "article" + }, + { + "title": "Endpoint Setup", + "url": "https://www.npmjs.com/package/@huggingface/inference", + "type": "article" + } + ] }, "bGLrbpxKgENe2xS1eQtdh": { "title": "Transformers.js", - "description": "", - "links": [] + "description": "Hugging Face Transformers.js is a JavaScript library that enables developers to run transformer models directly in the browser without requiring a server. It offers a similar API to the original Python library, allowing tasks like sentiment analysis, text generation, and image processing using pre-trained models. By supporting the `pipeline API`, it simplifies the integration of models with preprocessing and postprocessing functionalities.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Transformers.js", + "url": "https://huggingface.co/docs/hub/en/transformers-js", + "type": "article" + } + ] }, "rTT2UnvqFO3GH6ThPLEjO": { "title": "Ollama", - "description": "", - "links": [] + "description": "Ollama is a powerful open-source tool designed to run large language models (LLMs) locally on users' machines, It exposes a `local API`, allowing developers to seamlessly integrate LLMs into their applications and workflows. This API facilitates efficient communication between your application and the LLM, enabling you to send prompts, receive responses, and leverage the full potential of these **powerful AI models**.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Ollama", + "url": "https://ollama.com/", + "type": "article" + }, + { + "title": "Ollama Explained", + "url": "https://www.geeksforgeeks.org/ollama-explained-transforming-ai-accessibility-and-language-processing/", + "type": "article" + } + ] }, "ro3vY_sp6xMQ-hfzO-rc1": { "title": "Ollama Models", - "description": "", - "links": [] + "description": "Ollama includes popular options like `Llama 2, Mistral, and Code Llama`. It simplifies the deployment process by bundling model weights, configurations, and datasets into a single package managed by a `Modelfile`, allowing users to easily manage and interact with these models. The platform's extensive library allows users to choose models tailored to their specific needs, and reduces reliance in cloud. Ollama Models could be of `text/base`, `chat/instruct` or `multi modal`.\n\nLearn more from the following resources:", + "links": [ + { + "title": "Ollama Free Course", + "url": "https://youtu.be/f4tXwCNP1Ac?si=0RRKIfw2XAsWNNBo", + "type": "course" + }, + { + "title": "Ollama Model Library", + "url": "https://ollama.com/library", + "type": "article" + } + ] }, "TsG_I7FL-cOCSw8gvZH3r": { "title": "Ollama SDK", - "description": "", - "links": [] + "description": "The Ollama SDK is a community-driven tool that allows developers to integrate and run large language models (LLMs) locally through a simple API. Enabling users to easily import the Ollama provider and create customized instances for various models, such as Llama 2 and Mistral. The SDK supports functionalities like `text generation` and `embeddings`, making it versatile for applications ranging from `chatbots` to `content generation`. Also Ollama SDK enhances privacy and control over data while offering seamless integration with existing workflows.\n\nLearn more from the following resources:", + "links": [ + { + "title": "SDK Provider", + "url": "https://sdk.vercel.ai/providers/community-providers/ollama", + "type": "article" + }, + { + "title": "Beginner's Guide", + "url": "https://dev.to/jayantaadhikary/using-the-ollama-api-to-run-llms-and-generate-responses-locally-18b7", + "type": "article" + }, + { + "title": "Setup", + "url": "https://klu.ai/glossary/ollama", + "type": "article" + } + ] }, "--ig0Ume_BnXb9K2U7HJN": { "title": "What are Embeddings", diff --git a/public/roadmap-content/api-design.json b/public/roadmap-content/api-design.json index 8f1dbe466..c426b8979 100644 --- a/public/roadmap-content/api-design.json +++ b/public/roadmap-content/api-design.json @@ -320,33 +320,18 @@ ] }, "Wwd-0PjrtViMFWxRGaQey": { - "title": "gRPC APIs", - "description": "gRPC is a platform agnostic serialization protocol that is used to communicate between services. Designed by Google in 2015, it is a modern alternative to REST APIs. It is a binary protocol that uses HTTP/2 as a transport layer. It is a high performance, open source, general-purpose RPC framework that puts mobile and HTTP/2 first. It's main use case is for communication between two different languages within the same application. You can use Python to communicate with Go, or Java to communicate with C#.\n\nVisit the following resources to learn more:", + "title": "SOAP APIs", + "description": "SOAP (Simple Object Access Protocol) APIs are a standard communication protocol system that permits programs that run on different operating systems (like Linux and Windows) to communicate using Hypertext Transfer Protocol (HTTP) and its Extensible Markup Language (XML). In the context of API Design, SOAP APIs offer a robust and well-defined process for interaction between various software applications, mostly over a network. They are highly extensible, versatile and support a wide range of communications protocols. Despite being more complex compared to other API types like REST, SOAP APIs ensure high reliability and security, making them the choice for certain business-focused, high-transaction applications.\n\nLearn more from the following resources:", "links": [ { - "title": "gRPC Website", - "url": "https://grpc.io/", - "type": "article" - }, - { - "title": "gRPC Introduction", - "url": "https://grpc.io/docs/what-is-grpc/introduction/", - "type": "article" - }, - { - "title": "gRPC Core Concepts", - "url": "https://grpc.io/docs/what-is-grpc/core-concepts/", + "title": "What are SOAP APIs?", + "url": "https://www.indeed.com/career-advice/career-development/what-is-soap-api", "type": "article" }, { - "title": "Explore top posts about gRPC", - "url": "https://app.daily.dev/tags/grpc?ref=roadmapsh", + "title": "SOAP vs REST 101: Understand The Differences", + "url": "https://www.soapui.org/learn/api/soap-vs-rest-api/", "type": "article" - }, - { - "title": "Stephane Maarek - gRPC Introduction", - "url": "https://youtu.be/XRXTsQwyZSU", - "type": "video" } ] }, @@ -1554,5 +1539,10 @@ "type": "article" } ] + }, + "grpc-apis@1DrqtOwxCuFtWQXQ6ZALp.md": { + "title": "gRPC APIs", + "description": "", + "links": [] } } \ No newline at end of file diff --git a/public/roadmap-content/nodejs.json b/public/roadmap-content/nodejs.json index 24c34bda2..37251bf6c 100644 --- a/public/roadmap-content/nodejs.json +++ b/public/roadmap-content/nodejs.json @@ -448,6 +448,11 @@ "url": "https://blog.bitsrc.io/types-of-native-errors-in-javascript-you-must-know-b8238d40e492", "type": "article" }, + { + "title": "JavaScript error reference - MDN", + "url": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors", + "type": "article" + }, { "title": "Explore top posts about JavaScript", "url": "https://app.daily.dev/tags/javascript?ref=roadmapsh", From 55255dbbb12700931a0450c884e78bb928e00e0d Mon Sep 17 00:00:00 2001 From: Andrey Blazejuk Date: Thu, 17 Oct 2024 04:48:19 -0300 Subject: [PATCH 029/159] fix: refactor number utils (#7504) --- src/helper/number.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/helper/number.ts b/src/helper/number.ts index fc67f117a..f62d25dd3 100644 --- a/src/helper/number.ts +++ b/src/helper/number.ts @@ -1,9 +1,12 @@ export function getPercentage(portion: number, total: number): string { - if (total <= 0 || portion <= 0) { - return '0'; - } else if (portion > total) { - return '100'; + if (portion <= 0 || total <= 0) { + return '0.00'; + } + + if (portion >= total) { + return '100.00'; } - return ((portion / total) * 100).toFixed(2); + const percentage = (portion / total) * 100; + return percentage.toFixed(2); } From d4cb23b370a61fe15a05cb29e9ae6f5a688cb131 Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 17 Oct 2024 10:23:55 +0100 Subject: [PATCH 030/159] Update evm-based@tSJyp46rkJcOtDqVpJX1s.md (#7500) Replace deprecated article link with a new one --- .../blockchain/content/evm-based@tSJyp46rkJcOtDqVpJX1s.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/data/roadmaps/blockchain/content/evm-based@tSJyp46rkJcOtDqVpJX1s.md b/src/data/roadmaps/blockchain/content/evm-based@tSJyp46rkJcOtDqVpJX1s.md index 92ac9df79..dd1a1a732 100644 --- a/src/data/roadmaps/blockchain/content/evm-based@tSJyp46rkJcOtDqVpJX1s.md +++ b/src/data/roadmaps/blockchain/content/evm-based@tSJyp46rkJcOtDqVpJX1s.md @@ -6,6 +6,6 @@ Many blockchains have forked the Ethereum blockchain and added functionality on Visit the following resources to learn more: -- [@article@What is Ethereum Virtual Machine?](https://moralis.io/evm-explained-what-is-ethereum-virtual-machine/) +- [@article@What is Ethereum Virtual Machine?](https://astrodev.hashnode.dev/blockchain-ethereum-evm) - [@video@Understanding the Ethereum Virtual Machine (EVM): Concepts and Architecture](https://www.youtube.com/watch?v=kCswGz9naZg) - [@feed@Explore top posts about EVM](https://app.daily.dev/tags/evm?ref=roadmapsh) From 523511c078415fc46c2bcb0255e4d0c5f56e75bd Mon Sep 17 00:00:00 2001 From: Aboody_01 <91767628+Abdullahi-abdiaziz@users.noreply.github.com> Date: Thu, 17 Oct 2024 12:24:45 +0300 Subject: [PATCH 031/159] add an article about handling async errors at Nodejs Roadmap (#7495) --- .../content/handling-async-errors@3MpxV23lNpuKg0--e_9m7.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/roadmaps/nodejs/content/handling-async-errors@3MpxV23lNpuKg0--e_9m7.md b/src/data/roadmaps/nodejs/content/handling-async-errors@3MpxV23lNpuKg0--e_9m7.md index ec071f042..0b087d5f6 100644 --- a/src/data/roadmaps/nodejs/content/handling-async-errors@3MpxV23lNpuKg0--e_9m7.md +++ b/src/data/roadmaps/nodejs/content/handling-async-errors@3MpxV23lNpuKg0--e_9m7.md @@ -5,3 +5,4 @@ Errors must always be handled. If you are using synchronous programming you coul Visit the following resources to learn more: - [@article@Async Errors](https://www.mariokandut.com/handling-errors-in-asynchronous-functions-node-js/) +- [@article@The best way to handle errors in asynchronous javascript](https://dev.to/m__mdy__m/the-best-way-to-handle-errors-in-asynchronous-javascript-16bb) From 3ca0a5c94ce16755599b598abafb2388dad00ef4 Mon Sep 17 00:00:00 2001 From: Murshal Akhtar Ansari Date: Thu, 17 Oct 2024 12:27:17 +0300 Subject: [PATCH 032/159] roadmap: added resource links in DSA for linear and binary search (#7505) --- .../content/106-search-algorithms/100-linear-search.md | 7 ++++++- .../content/106-search-algorithms/101-binary-search.md | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md b/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md index ee4465794..374916f6a 100644 --- a/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md +++ b/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md @@ -1,3 +1,8 @@ # Linear Search -Linear search is one of the simplest search algorithms. In this method, every element in an array is checked sequentially starting from the first until a match is found or all elements have been checked. It is also known as sequential search. It works on both sorted and unsorted lists, and does not need any preconditioned list for the operation. However, its efficiency is lesser as compared to other search algorithms since it checks all elements one by one. \ No newline at end of file +Linear search is one of the simplest search algorithms. In this method, every element in an array is checked sequentially starting from the first until a match is found or all elements have been checked. It is also known as sequential search. It works on both sorted and unsorted lists, and does not need any preconditioned list for the operation. However, its efficiency is lesser as compared to other search algorithms since it checks all elements one by one. + +Learn more from the following resources: + +- [@article@DSA Linear Search - W3Schools](https://www.w3schools.com/dsa/dsa_algo_linearsearch.php) +- [@video@Learn Linear Search in 3 minutes](https://www.youtube.com/watch?v=246V51AWwZM) diff --git a/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/101-binary-search.md b/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/101-binary-search.md index 37cc7a76c..100e98809 100644 --- a/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/101-binary-search.md +++ b/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/101-binary-search.md @@ -1,3 +1,8 @@ # Binary Search -`Binary Search` is a type of search algorithm that follows the divide and conquer strategy. It works on a sorted array by repeatedly dividing the search interval in half. Initially, the search space is the entire array and the target is compared with the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target, and repeating this until the target is found. If the search ends with the remaining half being empty, the target is not in the array. Binary Search is log(n) as it cuts down the search space by half each step. \ No newline at end of file +`Binary Search` is a type of search algorithm that follows the divide and conquer strategy. It works on a sorted array by repeatedly dividing the search interval in half. Initially, the search space is the entire array and the target is compared with the middle element of the array. If they are not equal, the half in which the target cannot lie is eliminated and the search continues on the remaining half, again taking the middle element to compare to the target, and repeating this until the target is found. If the search ends with the remaining half being empty, the target is not in the array. Binary Search is log(n) as it cuts down the search space by half each step. + +Learn more from the following resources: + +- [@article@DSA Binary Search - W3Schools](https://www.w3schools.com/dsa/dsa_algo_binarysearch.php) +- [@video@Learn Binary Search in 10 minutes](https://www.youtube.com/watch?v=xrMppTpoqdw) From 4b63d1738370d9c109b6c35a65de7563e24ffbbf Mon Sep 17 00:00:00 2001 From: Vedansh Date: Thu, 17 Oct 2024 15:46:07 +0530 Subject: [PATCH 033/159] Update contribution docs (#7506) --- contributing.md | 57 +++++++++++++++++++++++++++---------------------- license | 5 ++--- 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/contributing.md b/contributing.md index e6f603081..bb4a3716d 100644 --- a/contributing.md +++ b/contributing.md @@ -1,4 +1,4 @@ -# Contribution +# ✨ Contribution Guidelines ✨ First of all, thank you for considering to contribute. Please look at the details below: @@ -8,6 +8,7 @@ First of all, thank you for considering to contribute. Please look at the detail - [Adding Projects](#adding-projects) - [Adding Content](#adding-content) - [Guidelines](#guidelines) +- [Good vs. Not So Good Contributions](#good-vs-not-so-good-contributions) ## Hacktoberfest Contributions @@ -15,10 +16,10 @@ We are taking part in [Hacktoberfest 11](https://hacktoberfest.com/)! Before you start to contribute to our project in order to satisfy [Hacktoberfest requirements](https://hacktoberfest.com/participation/#contributors), please bare in mind the following: -* There is not a Hacktoberfest t-shirt this year [(see their FAQ)](https://hacktoberfest.com/participation/#faq). -* There is not an infinite opportunity to contribute to the roadmap.sh project. +- There is *not* a Hacktoberfest t-shirt this year [(see their FAQ)](https://hacktoberfest.com/participation/#faq) +- There is *not* an infinite opportunity to contribute to the roadmap.sh project. -### Hacktoberfest Specific Contribution rules +### Hacktoberfest Specific Contribution Rules As Hacktoberfest attracts a lot of contributors (which is awesome), it does require a more rigid and strictly enforced set of guidelines than the average contribution. @@ -61,11 +62,12 @@ Learn more from the following resources: Contributions to the project that meet these requirements will be given the label `hacktoberfest-accepted` and merged, contributions that do not meet the requirements will simply be closed. -Any attempts at spam PRs will be given the `spam` tag. If you recieve 2 `spam` tags against you, you will be [disqualified from Hacktoberfest](https://hacktoberfest.com/participation/#spam). +Any attempts at spam PRs will be given the `spam` tag. If you receive 2 `spam` tags against you, you will be [disqualified from Hacktoberfest](https://hacktoberfest.com/participation/#spam). ## New Roadmaps For new roadmaps, you can either: + - Submit a roadmap by providing [a textual roadmap similar to this roadmap](https://gist.github.com/kamranahmedse/98758d2c73799b3a6ce17385e4c548a5) in an [issue](https://github.com/kamranahmedse/developer-roadmap/issues). - Create an interactive roadmap yourself using [our roadmap editor](https://draw.roadmap.sh/) & submit the link to that roadmap in an [issue](https://github.com/kamranahmedse/developer-roadmap/issues). @@ -73,10 +75,10 @@ For new roadmaps, you can either: For the existing roadmaps, please follow the details listed for the nature of contribution: -- **Fixing Typos** — Make your changes in the [roadmap Markdown file](https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data/roadmaps) and submit a [PR](https://github.com/kamranahmedse/developer-roadmap/pulls). +- **Fixing Typos** — Make your changes in the [roadmap markdown file](https://github.com/kamranahmedse/developer-roadmap/tree/master/src/data/roadmaps) and submit a [PR](https://github.com/kamranahmedse/developer-roadmap/pulls). - **Adding or Removing Nodes** — Please open an [issue](https://github.com/kamranahmedse/developer-roadmap/issues) with your suggestion. -**Note:** Please note that our goal is not to have the biggest list of items. Our goal is to list items or skills most relevant today. +**Note:** Please note that our goal is **not to have the biggest list of items**. Our goal is to list items or skills most relevant today. ## Adding Projects @@ -84,7 +86,7 @@ If you have a project idea that you think we should add to the roadmap, feel fre The detailed format for the issue should be as follows: -``` +```md ## What is this project about? (Add an introduction to the project.) @@ -112,14 +114,14 @@ Find [the content directory inside the relevant roadmap](https://github.com/kamr Please adhere to the following style when adding content to a topic: -``` +```md # Topic Title (Content) Visit the following resources to learn more: -- [@type@Description of link](Link) +- [@type@Title/Description of Link](Link) ``` `@type@` must be one of the following and describe the type of content you are adding: @@ -131,19 +133,19 @@ Visit the following resources to learn more: - `@podcast@` - `@video@` -It's important to add a valid type, this will help us categorize the content and display it properly on the roadmap. +It's important to add a valid type, this will help us categorize the content and display it properly on the roadmap. The order of the links based on type is same as above. ## Guidelines --

Please don't use the project for self-promotion!
+-

Please don't use the project for self-promotion!
We believe this project is a valuable asset to the developer community, and it includes numerous helpful resources. We kindly ask you to avoid submitting pull requests for the sole purpose of self-promotion. We appreciate contributions that genuinely add value, such as guides from maintainers of well-known frameworks, and will consider accepting these even if they're self authored. Thank you for your understanding and cooperation! --

Adding everything available out there is not the goal!
+-

Adding everything available out there is not the goal!
The roadmaps represent the skillset most valuable today, i.e., if you were to enter any of the listed fields today, what would you learn? There might be things that are of-course being used today, but prioritize the things that are most in demand today, e.g., agree that lots of people are using angular.js today, but you wouldn't want to learn that instead of React, Angular, or Vue. Use your critical thinking to filter out non-essential stuff. Give honest arguments for why the resource should be included.

--

Do not add things you have not evaluated personally!
+-

Do not add things you have not evaluated personally!
Use your critical thinking to filter out non-essential stuff. Give honest arguments for why the resource should be included. Have you read this book? Can you give a short article?

@@ -151,26 +153,31 @@ It's important to add a valid type, this will help us categorize the content and If you are planning to contribute by adding content to the roadmaps, I recommend you to clone the repository, add content to the [content directory of the roadmap](./src/data/roadmaps/) and create a single PR to make it easier for me to review and merge the PR. --

Write meaningful commit messages
+-

Write meaningful commit messages
Meaningful commit messages help speed up the review process as well as help other contributors gain a good overview of the repositories commit history without having to dive into every commit.

-

Look at the existing issues/pull requests before opening new ones

-### Good vs. Not So Good Contributions +## Good vs. Not So Good Contributions Good - - New Roadmaps. - - Engaging, fresh content links. - - Typos and grammatical fixes. - - Content copy in topics that do not have any (or minimal copy exists). +- New Roadmaps. +- Engaging and fresh content links. +- Typos and grammatical fixes. +- Enhanced Existing Content. +- Content copy in topics that do not have any (or minimal copy exists). Not So Good - - Adding whitespace that doesn't add to the readability of the content. - - Rewriting content in a way that doesn't add any value. - - Non-English content. - - PR's that don't follow our style guide, have no description, and a default title. - - Links to your own blog articles. +- Adding whitespace that doesn't add to the readability of the content. +- Rewriting content in a way that doesn't add any value. +- Non-English content. +- PR's that don't follow our style guide, have no description, and a default title. +- Links to your own blog articles. + +*** + +Have a look at the [License](./license) file. diff --git a/license b/license index 0cdd8ff0f..4dcb35a46 100644 --- a/license +++ b/license @@ -1,7 +1,6 @@ Everything including text and images in this project are protected by the copyright laws. You are allowed to use this material for personal use but are not allowed to use it for -any other purpose including publishing the images, the project files or the content in the -images in any form either digital, non-digital, textual, graphical or written formats. +any other purpose including publishing the images, the project files or the content in the images in any form either digital, non-digital, textual, graphical or written formats. You are allowed to share the links to the repository or the website roadmap.sh but not the content for any sort of usage that involves the content of this repository taken out of the repository and be shared from any other medium including but not limited to blog @@ -9,7 +8,7 @@ posts, articles, newsletters, you must get prior consent from the understated. T conditions do not apply to the readonly GitHub forks created using the Fork button on GitHub with the whole purpose of contributing to the project. -Copyright © 2023 Kamran Ahmed +Copyright © 2017 - Present. Kamran Ahmed Please note that I am really flexible with allowing the usage of the content in this repository. If you reach out to me with a brief detail of why and how you would like From 5c0a5e24268bd153ca164557d33a9485bfabd304 Mon Sep 17 00:00:00 2001 From: Aboody_01 <91767628+Abdullahi-abdiaziz@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:15:59 +0300 Subject: [PATCH 034/159] added an article link about linear search at DSA Roadmap (#7513) --- .../content/106-search-algorithms/100-linear-search.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md b/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md index 374916f6a..195d5e690 100644 --- a/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md +++ b/src/data/roadmaps/datastructures-and-algorithms/content/106-search-algorithms/100-linear-search.md @@ -5,4 +5,5 @@ Linear search is one of the simplest search algorithms. In this method, every el Learn more from the following resources: - [@article@DSA Linear Search - W3Schools](https://www.w3schools.com/dsa/dsa_algo_linearsearch.php) +- [@article@Linear Search - GeeksForGeeks](https://www.geeksforgeeks.org/linear-search/) - [@video@Learn Linear Search in 3 minutes](https://www.youtube.com/watch?v=246V51AWwZM) From ccc2cbd9c2f9dee650257b51bd52eeb10e6d2e48 Mon Sep 17 00:00:00 2001 From: Vedansh Date: Thu, 17 Oct 2024 19:46:59 +0530 Subject: [PATCH 035/159] Improve Vue.js Roadmap (#7498) * Phase - 1 * Phase - 2 * Phase - 3 * Phase - 4 * Phase - 6 * Phase - 7 (Final) * Update src/data/roadmaps/vue/content/v-else-if@a9caVhderJaVo0v14w8WB.md * Update src/data/roadmaps/vue/content/v-else@0CtAZQcFJexMiJfZ-mofv.md --------- Co-authored-by: Kamran Ahmed --- .../vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md | 1 + .../vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md | 6 +++--- .../app-configurations@qRm08uDZW-D8QDc-9sPX8.md | 3 +-- .../content/async-components@Re7tv1U0LxYqE5ShFxQSf.md | 2 +- .../attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md | 2 +- .../vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md | 6 ++---- .../content/binding-events@b7iXwtUnELg_ShbCyTrNA.md | 9 ++++++++- .../vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md | 2 +- .../component-registration@2HhKifjuDcP3eKpanRMEQ.md | 2 +- .../vue/content/components@0EevuyZiyty3X3Jzpjl4y.md | 4 ++-- .../content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md | 6 +++--- .../computed-properties@Bx1Atxcf15AEaA1BiSIc6.md | 2 +- .../conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md | 2 +- .../vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md | 5 +++-- .../content/custom-directives@br1r8KIf5KInY5mk2xhA6.md | 6 ++++-- .../vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md | 4 ++-- .../vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md | 8 +++++++- .../vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md | 5 +++-- .../vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md | 4 ++-- .../error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md | 8 +++++++- .../content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md | 2 +- .../content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md | 8 +++++++- .../vue/content/events@X0J3ogH3W8EQe68tLfcGL.md | 4 ++-- .../vue/content/fetch@ufnt87swK61kxShLuVc1-.md | 6 +++--- .../vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md | 1 - .../content/forms-handling@PQu4TyJOfCEaafW5th0e4.md | 2 +- .../vue/content/forms@izGdctxP_OvQNvaMwVIrh.md | 2 +- .../content/global-properties@gihxGgt177BK_EYsAfpx9.md | 8 +++++++- .../inline--method-handlers@gVahaZNPktQuqdukFEbQH.md | 8 +++++++- .../content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md | 8 +++++++- .../vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md | 8 +++++++- .../content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md | 2 +- .../vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md | 8 +++++++- .../mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md | 8 +++++++- .../vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md | 2 +- .../optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md | 2 +- .../vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md | 8 +++----- .../vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md | 2 +- .../vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md | 2 +- .../vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md | 2 +- .../vue/content/props@raEfI4GLMW2fOucka07VE.md | 4 ++-- .../content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md | 2 +- .../vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md | 2 +- .../content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md | 2 +- .../vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md | 5 +++++ .../single-file-components@VNBRlJkdH6NOOzGXUrbZK.md | 2 +- .../vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md | 2 +- .../roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md | 2 +- .../roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md | 5 ++--- .../content/state-management@9AwVtwIv6TfP9F4ulz2F0.md | 1 + .../content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md | 2 +- .../teleport-components@SGsd08ZTu4H76s8cfbCKe.md | 2 +- .../vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md | 2 +- .../content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md | 2 +- .../vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md | 2 +- .../vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md | 9 ++++----- .../vue/content/v-cloak@RrSekP8Ub01coegMwLP6a.md | 9 +++++---- .../vue/content/v-else-if@a9caVhderJaVo0v14w8WB.md | 1 + .../vue/content/v-else@0CtAZQcFJexMiJfZ-mofv.md | 3 ++- .../vue/content/v-for@3ftwRjQ9e1-qDT9BV53zr.md | 10 +++++----- .../vue/content/v-html@bZxtIBeIfeUcR32LZWrPW.md | 9 +++++---- .../roadmaps/vue/content/v-if@xHj3W9Ig3MVuVlGyXchaP.md | 10 +++++++--- .../vue/content/v-model@cxu2Wbt306SxM4JKQQqnL.md | 2 +- .../vue/content/v-model@gMFndBcrTC6FtGryqN6dX.md | 4 ++-- .../vue/content/v-model@swpyZFUO4UO3mW8Bvf1Te.md | 3 +-- .../roadmaps/vue/content/v-on@hVuRmhXVP65IPtuHTORjJ.md | 8 +++++++- .../vue/content/v-once@5k9CrbzhNy9iiS6ez2UE6.md | 8 +++++--- .../vue/content/v-pre@mlsrhioiEkqnRIL6O3hNa.md | 6 ++++-- .../vue/content/v-show@_TlbGTKFCMO0wdLbC6xHX.md | 6 ++---- .../vue/content/v-slot@m9pQ3daR3KiwRATcQysHA.md | 2 +- .../vue/content/v-text@NCIzs3jbQTv1xXhAaGfZN.md | 7 ++++--- .../vue/content/vee-validate@_Fmp8_z4SKWfKUE80_fqb.md | 2 +- .../vue/content/vitepress@_46COO0FGaFuCYwqaRRWy.md | 2 +- .../vue/content/vitest@LjEAviRMtPLwUUlfcof1h.md | 3 +-- .../vue/content/vue-router@COxkmvqe9jFtV9WtGjfbh.md | 2 +- .../vue-testing-library@p5bUvgr_3H-A55ZnEExk8.md | 2 +- .../vue/content/vuelidate@6U_CAhAY_jyj_4Mzj_HL_.md | 2 +- .../vue/content/vuetify@VNclt_QQthWb2u4xWI_uY.md | 4 ++-- .../vue/content/vueuse@Z9szBPFXfqK_KsvzkR-rf.md | 3 +-- .../vue/content/watchers@kdlXhbw_a81xdZtyK-pVa.md | 6 ++---- 80 files changed, 208 insertions(+), 132 deletions(-) diff --git a/src/data/roadmaps/vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md b/src/data/roadmaps/vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md index f1b45058b..c31a1b6f9 100644 --- a/src/data/roadmaps/vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md +++ b/src/data/roadmaps/vue/content/api-calls@ZLlz0Azfze-8k3z8HnVvE.md @@ -5,3 +5,4 @@ There are several options available to make API calls from your Vue.js applicati Visit the following resources to learn more: - [@article@How To Make API calls in Vue.JS Applications](https://medium.com/bb-tutorials-and-thoughts/how-to-make-api-calls-in-vue-js-applications-43e017d4dc86) +- [@article@How to Use RapidAPI Client with Vue.js](https://rapidapi.com/guides/fetch-api-with-vue) diff --git a/src/data/roadmaps/vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md b/src/data/roadmaps/vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md index 2998402db..4703c3bd5 100644 --- a/src/data/roadmaps/vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md +++ b/src/data/roadmaps/vue/content/apollo@l2Rl6OQbL7kYvPlpYCZ0Z.md @@ -4,8 +4,8 @@ Apollo is a platform for building a unified graph, a communication layer that he Visit the following resources to learn more: -- [@article@Apollo Website](https://www.apollographql.com) -- [@article@Official Docs](https://www.apollographql.com/docs/) -- [@video@Official YouTube Channel](https://www.youtube.com/c/ApolloGraphQL/) +- [@official@Apollo Website](https://www.apollographql.com) +- [@official@Apollo Docs](https://www.apollographql.com/docs/) +- [@video@Apollo's YouTube Channel](https://www.youtube.com/c/ApolloGraphQL/) - [@video@GraphQL With React Tutorial - Apollo Client](https://www.youtube.com/watch?v=YyUWW04HwKY) - [@feed@Explore top posts about Apollo](https://app.daily.dev/tags/apollo?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/app-configurations@qRm08uDZW-D8QDc-9sPX8.md b/src/data/roadmaps/vue/content/app-configurations@qRm08uDZW-D8QDc-9sPX8.md index ece0d4291..157902d74 100644 --- a/src/data/roadmaps/vue/content/app-configurations@qRm08uDZW-D8QDc-9sPX8.md +++ b/src/data/roadmaps/vue/content/app-configurations@qRm08uDZW-D8QDc-9sPX8.md @@ -4,5 +4,4 @@ Every application instance exposes a `config` object that contains the configura Visit the following resources to learn more: -- [@article@Official Documentation](https://vuejs.org/api/application.html#app-config) -- [@article@official API Documentation](https://vuejs.org/api/application.html) +- [@official@Vue.js Documentation](https://vuejs.org/api/application.html#app-config) diff --git a/src/data/roadmaps/vue/content/async-components@Re7tv1U0LxYqE5ShFxQSf.md b/src/data/roadmaps/vue/content/async-components@Re7tv1U0LxYqE5ShFxQSf.md index 10d3d18e2..38cf9165b 100644 --- a/src/data/roadmaps/vue/content/async-components@Re7tv1U0LxYqE5ShFxQSf.md +++ b/src/data/roadmaps/vue/content/async-components@Re7tv1U0LxYqE5ShFxQSf.md @@ -4,4 +4,4 @@ In large applications, we may need to divide the app into smaller chunks and onl Visit the following resources to learn more: -- [@article@Async Components](https://vuejs.org/guide/components/async.html) +- [@official@Async Components](https://vuejs.org/guide/components/async.html) diff --git a/src/data/roadmaps/vue/content/attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md b/src/data/roadmaps/vue/content/attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md index 3db7e476f..4e0a65955 100644 --- a/src/data/roadmaps/vue/content/attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md +++ b/src/data/roadmaps/vue/content/attribute-inheritance@4S5fVFsFDMbq05ld7n0sF.md @@ -4,4 +4,4 @@ Attribute inheritance aka "fallthrough attributes" is a feature of Vue.js that a Visit the following resources to learn more: -- [@article@Fallthrough Attributes](https://vuejs.org/guide/components/attrs.html) +- [@official@Fallthrough Attributes](https://vuejs.org/guide/components/attrs.html) diff --git a/src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md b/src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md index 4a4577741..3a6a4442c 100644 --- a/src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md +++ b/src/data/roadmaps/vue/content/axios@n5IlN-wv4k0r16CvhoSpD.md @@ -1,11 +1,9 @@ # Axios -The most common way for frontend programs to communicate with servers is through the HTTP protocol. You are probably familiar with the Fetch API and the XMLHttpRequest interface, which allows you to fetch resources and make HTTP requests. - -Axios is a client HTTP API based on the XMLHttpRequest interface provided by browsers. +Axios is a client HTTP API based on the XMLHttpRequest interface provided by browsers. The most common way for frontend programs to communicate with servers is through the HTTP protocol. You are probably familiar with the Fetch API and the XMLHttpRequest interface, which allows you to fetch resources and make HTTP requests. Visit the following resources to learn more: -- [@article@Axios Getting Started](https://axios-http.com/docs/intro) +- [@official@Getting Started with Axios](https://axios-http.com/docs/intro) - [@article@How to make HTTP requests with Axios](https://blog.logrocket.com/how-to-make-http-requests-like-a-pro-with-axios/#why) - [@feed@Explore top posts about Axios](https://app.daily.dev/tags/axios?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md b/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md index 1f412e238..cefbe6931 100644 --- a/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md +++ b/src/data/roadmaps/vue/content/binding-events@b7iXwtUnELg_ShbCyTrNA.md @@ -1 +1,8 @@ -# Binding Events \ No newline at end of file +# Binding Events + +Vue.js is an open-source Model–View–ViewModel front-end JavaScript framework for building user interfaces and single-page applications. Vue.js has many own directives for DOM manipulation such as v-bind, v-on, v-model, etc. Binding events is an essential part of creating interactive applications. You can bind events using the v-on directive or its shorthand, the @ symbol. + +Visit the following resources to learn more: + +- [@official@Binding Events](https://vuejs.org/guide/essentials/event-handling) +- [@article@Vue.js Event Handling](https://www.geeksforgeeks.org/vue-js-event-handling/) diff --git a/src/data/roadmaps/vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md b/src/data/roadmaps/vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md index 2635d6972..ea01e874e 100644 --- a/src/data/roadmaps/vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md +++ b/src/data/roadmaps/vue/content/capacitor@IsNzCdS05tbAK0D1zz0Sf.md @@ -4,5 +4,5 @@ Since Vue.js is a web framework, it does not natively support mobile app develop Visit the following resources to learn more: -- [@article@Building cross-platform apps with Capacitor and Vue.js](https://blog.logrocket.com/building-cross-platform-apps-with-capacitor-and-vue-js/) +- [@article@Building Cross-Platform Apps with Capacitor and Vue.js](https://blog.logrocket.com/building-cross-platform-apps-with-capacitor-and-vue-js/) - [@article@Building Mobile Apps With Capacitor And Vue.js](https://www.smashingmagazine.com/2018/07/mobile-apps-capacitor-vue-js/) diff --git a/src/data/roadmaps/vue/content/component-registration@2HhKifjuDcP3eKpanRMEQ.md b/src/data/roadmaps/vue/content/component-registration@2HhKifjuDcP3eKpanRMEQ.md index ad8a58dce..67539675a 100644 --- a/src/data/roadmaps/vue/content/component-registration@2HhKifjuDcP3eKpanRMEQ.md +++ b/src/data/roadmaps/vue/content/component-registration@2HhKifjuDcP3eKpanRMEQ.md @@ -4,4 +4,4 @@ A Vue component needs to be "registered" so that Vue knows where to locate its i Visit the following resources to learn more: -- [@article@Component Registration](https://vuejs.org/guide/components/registration.html) +- [@official@Component Registration](https://vuejs.org/guide/components/registration.html) diff --git a/src/data/roadmaps/vue/content/components@0EevuyZiyty3X3Jzpjl4y.md b/src/data/roadmaps/vue/content/components@0EevuyZiyty3X3Jzpjl4y.md index 07875a127..fd1da3962 100644 --- a/src/data/roadmaps/vue/content/components@0EevuyZiyty3X3Jzpjl4y.md +++ b/src/data/roadmaps/vue/content/components@0EevuyZiyty3X3Jzpjl4y.md @@ -4,5 +4,5 @@ Components allow us to split the UI into independent and reusable pieces, and th Visit the following resources to learn more: -- [@article@Components Basics](https://vuejs.org/guide/essentials/component-basics.html) -- [@article@Components in Depth](https://vuejs.org/guide/components/registration.html) +- [@official@Components Basics](https://vuejs.org/guide/essentials/component-basics.html) +- [@official@Components in Depth](https://vuejs.org/guide/components/registration.html) diff --git a/src/data/roadmaps/vue/content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md b/src/data/roadmaps/vue/content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md index 6f94fa8c1..bee0186e5 100644 --- a/src/data/roadmaps/vue/content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md +++ b/src/data/roadmaps/vue/content/composition-api@a0qwdQTunxEjQ9A5wpF-q.md @@ -4,8 +4,8 @@ With the release of Vue 3, developers now have access to the Composition API, a Visit the following resources to learn more: -- [@article@TypeScript with Composition API](https://vuejs.org/guide/typescript/composition-api.html) -- [@article@Composition API FAQ](https://vuejs.org/guide/extras/composition-api-faq.html) -- [@article@Composition API](https://vuejs.org/api/#composition-api) +- [@official@TypeScript with Composition API](https://vuejs.org/guide/typescript/composition-api.html) +- [@official@Composition API FAQ](https://vuejs.org/guide/extras/composition-api-faq.html) +- [@official@Composition API](https://vuejs.org/api/#composition-api) - [@article@Vue 3 Composition API](https://www.thisdot.co/blog/vue-3-composition-api-ref-and-reactive) - [@feed@Explore top posts about Vue.js](https://app.daily.dev/tags/vuejs?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/computed-properties@Bx1Atxcf15AEaA1BiSIc6.md b/src/data/roadmaps/vue/content/computed-properties@Bx1Atxcf15AEaA1BiSIc6.md index 4459169c4..7d69dfa44 100644 --- a/src/data/roadmaps/vue/content/computed-properties@Bx1Atxcf15AEaA1BiSIc6.md +++ b/src/data/roadmaps/vue/content/computed-properties@Bx1Atxcf15AEaA1BiSIc6.md @@ -4,4 +4,4 @@ In-template expressions are very convenient, but they are meant for simple opera Visit the following resources to learn more: -- [@article@Computed Properties](https://vuejs.org/guide/essentials/computed.html#computed-properties) +- [@official@Computed Properties](https://vuejs.org/guide/essentials/computed.html#computed-properties) diff --git a/src/data/roadmaps/vue/content/conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md b/src/data/roadmaps/vue/content/conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md index 2622fd8c9..fdabe4a8e 100644 --- a/src/data/roadmaps/vue/content/conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md +++ b/src/data/roadmaps/vue/content/conditional-rendering@tU4Umtnfu01t9gLlnlK6b.md @@ -4,4 +4,4 @@ The directive `v-if` is used to conditionally render a block. The block will onl Visit the following resources to learn more: -- [@article@Conditional Rendering](https://vuejs.org/guide/essentials/conditional.html) +- [@official@Conditional Rendering](https://vuejs.org/guide/essentials/conditional.html) diff --git a/src/data/roadmaps/vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md b/src/data/roadmaps/vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md index 8b3e6d679..4acc27edf 100644 --- a/src/data/roadmaps/vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md +++ b/src/data/roadmaps/vue/content/create-vue@y9ToYDix-koRbR6FLydFw.md @@ -1,8 +1,9 @@ # create-vue -[create-vue](https://github.com/vuejs/create-vue) is a CLI tool that helps you create a new Vue project with a single command. It is a simple and easy-to-use tool that saves you time and effort when setting up a new Vue project. +create-vue is a CLI tool that helps you create a new Vue project with a single command. It is a simple and easy-to-use tool that saves you time and effort when setting up a new Vue project. Learn more using the following resources: -- [@article@Creating a Vue Project](https://cli.vuejs.org/guide/creating-a-project.html) +- [@opensource@vuejs/create-vue](https://github.com/vuejs/create-vue) +- [@official@Creating a Vue Project](https://cli.vuejs.org/guide/creating-a-project.html) - [@feed@Explore top posts about Vue.js](https://app.daily.dev/tags/vuejs?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/custom-directives@br1r8KIf5KInY5mk2xhA6.md b/src/data/roadmaps/vue/content/custom-directives@br1r8KIf5KInY5mk2xhA6.md index 84fc043bf..7358ba1d8 100644 --- a/src/data/roadmaps/vue/content/custom-directives@br1r8KIf5KInY5mk2xhA6.md +++ b/src/data/roadmaps/vue/content/custom-directives@br1r8KIf5KInY5mk2xhA6.md @@ -1,7 +1,9 @@ # Custom Directives -So far you may have covered two forms of code reuse in Vue: [components](https://vuejs.org/guide/essentials/component-basics.html) and [composables](https://vuejs.org/guide/reusability/composables.html). Components are the main building blocks, while composables are focused on reusing stateful logic. Custom directives, on the other hand, are mainly intended for reusing logic that involves low-level DOM access on plain elements. +So far you may have covered two forms of code reuse in Vue: components and composables. Components are the main building blocks, while composables are focused on reusing stateful logic. Custom directives, on the other hand, are mainly intended for reusing logic that involves low-level DOM access on plain elements. Visit the following resources to learn more: -- [@article@Custom Directives](https://vuejs.org/guide/reusability/custom-directives.html) +- [@official@Custom Directives](https://vuejs.org/guide/reusability/custom-directives.html) +- [@official@Composables](https://vuejs.org/guide/reusability/composables.html) +- [@official@Components](https://vuejs.org/guide/essentials/component-basics.html) diff --git a/src/data/roadmaps/vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md b/src/data/roadmaps/vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md index 856442ed1..4f4b4813e 100644 --- a/src/data/roadmaps/vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md +++ b/src/data/roadmaps/vue/content/cypress@JbMKUVDMUygjXXmhndHVs.md @@ -4,7 +4,7 @@ Cypress framework is a JavaScript-based end-to-end testing framework built on to Visit the following resources to learn more: -- [@official@Official Website](https://www.cypress.io/) -- [@article@Official Documentation](https://docs.cypress.io/guides/overview/why-cypress#Other) +- [@official@Cypress Website](https://www.cypress.io/) +- [@official@Cypress Documentation](https://docs.cypress.io/guides/overview/why-cypress#Other) - [@video@Cypress End-to-End Testing](https://www.youtube.com/watch?v=7N63cMKosIE) - [@feed@Explore top posts about Cypress](https://app.daily.dev/tags/cypress?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md b/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md index 948532978..bdf758af6 100644 --- a/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md +++ b/src/data/roadmaps/vue/content/debugging@dxwKfBxd5KYVkfEPMdHp-.md @@ -1 +1,7 @@ -# Debugging \ No newline at end of file +# Debugging + +Debugging in Vue.js involves identifying and fixing issues in your Vue applications. It’s an essential part of the development process, and there are several tools and techniques you can use to effectively debug your Vue code. + +Visit the following resources to learn more: + +- [@official@Debugging Documentation](https://vuejs.org/v2/cookbook/debugging-in-vscode.html) diff --git a/src/data/roadmaps/vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md b/src/data/roadmaps/vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md index fb7ef9530..305adcf57 100644 --- a/src/data/roadmaps/vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md +++ b/src/data/roadmaps/vue/content/directives@CGdw3PqLRb9OqFU5SqmE1.md @@ -1,7 +1,8 @@ # Directives -Directives are special attributes with the `v-` prefix. Vue provides a number of [built-in directives](https://vuejs.org/api/built-in-directives.html). +Directives are special attributes with the `v-` prefix. Vue provides a number of built-in directives. Visit the following resources to learn more: -- [@article@Directives Documentation](https://vuejs.org/guide/essentials/template-syntax.html#directives) +- [@official@Directives Documentation](https://vuejs.org/guide/essentials/template-syntax.html#directives) +- [@official@Built-in Directives](https://vuejs.org/api/built-in-directives.html) diff --git a/src/data/roadmaps/vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md b/src/data/roadmaps/vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md index c08afddc6..a65e0dfeb 100644 --- a/src/data/roadmaps/vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md +++ b/src/data/roadmaps/vue/content/element-ui@NMIh8rqLM5P-Uk65uHATn.md @@ -4,5 +4,5 @@ Element UI is another Vue.js component library with several built-in components Visit the following resources to learn more: -- [@article@Official Website](https://element-plus.org/en-US/) -- [@article@Official Getting Started](https://element-plus.org/en-US/guide/design.html) +- [@official@Element UI Website](https://element-plus.org/en-US/) +- [@official@Getting Started - Element UI](https://element-plus.org/en-US/guide/design.html) diff --git a/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md b/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md index 054279f68..c1d161c04 100644 --- a/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md +++ b/src/data/roadmaps/vue/content/error--warn-handler@1oIt_5OK-t2WaCgaYt9A8.md @@ -1 +1,7 @@ -# Error / Warn Handler \ No newline at end of file +# Error / Warn Handler + +Debugging in Vue.js involves identifying and fixing issues in your Vue applications. It’s an essential part of the development process, and there are several tools and techniques you can use to effectively debug your Vue code. + +Visit the following resources to learn more: + +- [@official@Debugging Documentation](https://vuejs.org/v2/cookbook/debugging-in-vscode.html) diff --git a/src/data/roadmaps/vue/content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md b/src/data/roadmaps/vue/content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md index 946c5fa8f..be08f9e66 100644 --- a/src/data/roadmaps/vue/content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md +++ b/src/data/roadmaps/vue/content/event-handling@4p6Gh2fMPA8hls_mWa5HR.md @@ -4,4 +4,4 @@ When you build a dynamic website with Vue you'll most likely want it to be able Visit the following resources to learn more: -- [@article@Event Handling in Vue.js](https://vuejs.org/guide/essentials/event-handling.html) +- [@official@Event Handling in Vue.js](https://vuejs.org/guide/essentials/event-handling.html) diff --git a/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md b/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md index 9b0a49522..a8d952059 100644 --- a/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md +++ b/src/data/roadmaps/vue/content/event-modifiers@Aaf7eA-5sbAD5Cs1MbdTQ.md @@ -1 +1,7 @@ -# Event Modifiers \ No newline at end of file +# Event Modifiers + +In Vue.js, event modifiers are special postfixes that you can add to event handlers to control the behavior of events more easily. They help simplify common tasks such as stopping propagation, preventing default actions, and ensuring that the event is triggered only under certain conditions. + +Visit the following resources to learn more: + +- [@article@Event Modifiers in Vue.js](https://www.freecodecamp.org/news/how-event-handling-works-in-vue-3-guide-for-devs/) diff --git a/src/data/roadmaps/vue/content/events@X0J3ogH3W8EQe68tLfcGL.md b/src/data/roadmaps/vue/content/events@X0J3ogH3W8EQe68tLfcGL.md index 040791bd2..fccd7a0ec 100644 --- a/src/data/roadmaps/vue/content/events@X0J3ogH3W8EQe68tLfcGL.md +++ b/src/data/roadmaps/vue/content/events@X0J3ogH3W8EQe68tLfcGL.md @@ -4,5 +4,5 @@ As we develop our applications we may need to communicate with the parent compon Visit the following resources to learn more: -- [@article@Listening to Events](https://vuejs.org/guide/essentials/component-basics.html#listening-to-events) -- [@article@Events in Detail](https://vuejs.org/guide/components/events.html) +- [@official@Listening to Events](https://vuejs.org/guide/essentials/component-basics.html#listening-to-events) +- [@official@Events in Detail](https://vuejs.org/guide/components/events.html) diff --git a/src/data/roadmaps/vue/content/fetch@ufnt87swK61kxShLuVc1-.md b/src/data/roadmaps/vue/content/fetch@ufnt87swK61kxShLuVc1-.md index 22efdf722..f857ce4a2 100644 --- a/src/data/roadmaps/vue/content/fetch@ufnt87swK61kxShLuVc1-.md +++ b/src/data/roadmaps/vue/content/fetch@ufnt87swK61kxShLuVc1-.md @@ -1,9 +1,9 @@ # Fetch -The fetch() method in JavaScript is used to request to the server and load the information on the webpages. The request can be of any APIs that return the data of the format JSON or XML. This method returns a promise. +The `fetch()` method in JavaScript is used to request to the server and load the information on the webpages. The request can be of any APIs that return the data of the format JSON or XML. This method returns a promise. Visit the following resources to learn more: -- [@article@Fetch MDN Docs](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) +- [@article@Fetch - MDN](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) - [@article@Fetch W3school Docs](https://www.w3schools.com/jsref/api_fetch.asp) -- [@article@Network request - Fetch](https://javascript.info/fetch) +- [@article@Network Request - Fetch](https://javascript.info/fetch) diff --git a/src/data/roadmaps/vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md b/src/data/roadmaps/vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md index e0bbae642..d6618e824 100644 --- a/src/data/roadmaps/vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md +++ b/src/data/roadmaps/vue/content/formkit@BXz1utB_2eYzFvzSbFKx0.md @@ -5,4 +5,3 @@ FormKit helps build forms faster by simplifying form structure, generation, vali Visit the following resources to learn more: - [@official@Formkit Documentation](https://formkit.com/) - diff --git a/src/data/roadmaps/vue/content/forms-handling@PQu4TyJOfCEaafW5th0e4.md b/src/data/roadmaps/vue/content/forms-handling@PQu4TyJOfCEaafW5th0e4.md index 93db8a48d..d9c221199 100644 --- a/src/data/roadmaps/vue/content/forms-handling@PQu4TyJOfCEaafW5th0e4.md +++ b/src/data/roadmaps/vue/content/forms-handling@PQu4TyJOfCEaafW5th0e4.md @@ -4,6 +4,6 @@ You can use the `v-model` directive to create two-way data bindings on form inpu Visit the following resources to learn more: -- [@article@Form Input Bindings](https://vuejs.org/guide/essentials/forms.html) +- [@official@Form Input Bindings](https://vuejs.org/guide/essentials/forms.html) - [@video@Vue JS 3 Tutorial - Form Handling](https://www.youtube.com/watch?v=T-AE-GtSlN4) - [@article@A complete guide to forms in Vue.js](https://blog.logrocket.com/an-imperative-guide-to-forms-in-vue-js-2/) diff --git a/src/data/roadmaps/vue/content/forms@izGdctxP_OvQNvaMwVIrh.md b/src/data/roadmaps/vue/content/forms@izGdctxP_OvQNvaMwVIrh.md index 1bf085e78..5f2a9d117 100644 --- a/src/data/roadmaps/vue/content/forms@izGdctxP_OvQNvaMwVIrh.md +++ b/src/data/roadmaps/vue/content/forms@izGdctxP_OvQNvaMwVIrh.md @@ -4,5 +4,5 @@ Apart from the built-in form-binding support, there are several options availabl Visit the following resources to learn more: -- [@article@Form Input Bindings](https://vuejs.org/guide/essentials/forms.html) +- [@official@Form Input Bindings](https://vuejs.org/guide/essentials/forms.html) - [@article@User Inputs in Vue 3](https://vueschool.io/lessons/user-inputs-vue-devtools-in-vue-3?friend=vuejs) diff --git a/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md b/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md index 7a7ed3b48..9f11783d9 100644 --- a/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md +++ b/src/data/roadmaps/vue/content/global-properties@gihxGgt177BK_EYsAfpx9.md @@ -1 +1,7 @@ -# Global Properties \ No newline at end of file +# Global Properties + +Global properties allows you to add properties or methods that can be accessed throughout your application. This is particularly useful for sharing functionality or data across components without the need to pass props explicitly. + +Visit the following resources to learn more: + +- [@article@Vue.js Global Properties](https://blog.logrocket.com/vue-js-globalproperties/) diff --git a/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md b/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md index c23dfd5d7..a54fe7e2b 100644 --- a/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md +++ b/src/data/roadmaps/vue/content/inline--method-handlers@gVahaZNPktQuqdukFEbQH.md @@ -1 +1,7 @@ -# Inline / Method Handlers \ No newline at end of file +# Inline / Method Handlers + +In Vue.js, **inline handlers** are defined directly in the template using expressions, making them suitable for simple tasks. For example, you might use an inline handler to increment a counter. **Method handlers**, on the other hand, are defined in the `methods` option and are better for more complex logic or when reusing functionality across multiple components. They improve code readability and maintainability. + +Visit the following resources to learn more: + +- [@official@Method Handlers](https://v1.vuejs.org/guide/events.html) diff --git a/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md b/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md index aebef9958..e1185f65d 100644 --- a/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md +++ b/src/data/roadmaps/vue/content/input-bindings@NfB3HlZ3uwYK5xszvV50b.md @@ -1 +1,7 @@ -# Input Bindings \ No newline at end of file +# Input Bindings + +Input bindings are a way to bind user input to a component's data. This allows the component to react to user input and update its state accordingly. Input bindings are typically used with form elements such as text inputs, checkboxes, and select dropdowns. + +Visit the following resources to learn more: + +- [@official@Input Bindings](https://vuejs.org/guide/essentials/forms) diff --git a/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md b/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md index 00be7c3c7..62f315d22 100644 --- a/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md +++ b/src/data/roadmaps/vue/content/key-modifiers@BXw36wqhmi3gExXwFCIBd.md @@ -1 +1,7 @@ -# Key Modifiers \ No newline at end of file +# Key Modifiers + +Input bindings are a way to bind user input to a component's data. This allows the component to react to user input and update its state accordingly. Input bindings are typically used with form elements such as text inputs, checkboxes, and select dropdowns. + +Visit the following resources to learn more: + +- [@official@Input Bindings](https://vuejs.org/guide/essentials/forms) diff --git a/src/data/roadmaps/vue/content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md b/src/data/roadmaps/vue/content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md index 84b74af9b..21973cb5e 100644 --- a/src/data/roadmaps/vue/content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md +++ b/src/data/roadmaps/vue/content/lifecycle-hooks@WiGG9_4G5y-AVA9byw6_g.md @@ -4,6 +4,6 @@ Each Vue component instance goes through a series of initialization steps when i Visit the following resources to learn more: -- [@article@Life Cycle Hooks](https://vuejs.org/guide/essentials/lifecycle.html) +- [@official@Life Cycle Hooks](https://vuejs.org/guide/essentials/lifecycle.html) - [@article@The Lifecycles of Vue.js](https://dev.to/amolikvivian/the-lifecycles-of-vue-js-lhh) - [@feed@Explore top posts about React Hooks](https://app.daily.dev/tags/react-hooks?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md b/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md index 4526d9635..c20baf2d1 100644 --- a/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md +++ b/src/data/roadmaps/vue/content/modifiers@dSfrFLr8wKkLAOMJwtCTr.md @@ -1 +1,7 @@ -# Modifiers \ No newline at end of file +# Modifiers + +Modifiers are special suffixes that can be added to directives (such as v-model and v-bind) to alter their behavior. Modifiers allow you to specify additional functionality or constraints to the binding, making it more flexible and powerful. + +Visit the following resources to learn more: + +- [@official@Modifiers](https://v2.vuejs.org/v2/guide/components-custom-events.html) diff --git a/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md b/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md index ba68ba00c..a68b9fac8 100644 --- a/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md +++ b/src/data/roadmaps/vue/content/mouse-button-modifiers@x0wl2Qz2LTP4Q2tThKAt3.md @@ -1 +1,7 @@ -# Mouse Button Modifiers \ No newline at end of file +# Mouse Button Modifiers + +Mouse button modifiers are a type of modifier that can be used with event handlers to specify which mouse button or buttons should trigger the event. These modifiers allow you to customize the behavior of event handlers, such as v-on:click, to respond to specific mouse button clicks. + +Visit the following resources to learn more: + +- [@article@Button Modifiers](https://medium.com/evolve-you/vue-3-keyboard-and-mouse-a4866d7d0e8) diff --git a/src/data/roadmaps/vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md b/src/data/roadmaps/vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md index 49fe56822..896f797fc 100644 --- a/src/data/roadmaps/vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md +++ b/src/data/roadmaps/vue/content/nuxtjs@8xZxTLYq5m5_nkGh2lfUt.md @@ -6,7 +6,7 @@ Visit the following resources to learn more: - [@official@Nuxt Website](https://nuxt.com/) - [@official@Nuxt Docs](https://nuxt.com/docs/getting-started/introduction) +- [@official@Nuxt Examples](https://nuxt.com/docs/examples/essentials/hello-world) - [@article@Get Started with Nuxt](https://explorers.netlify.com/learn/get-started-with-nuxt) - [@article@Nuxt.js Fundamentals](https://vueschool.io/courses/nuxtjs-fundamentals) -- [@official@Nuxt Examples](https://nuxt.com/docs/examples/essentials/hello-world) - [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md b/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md index 9dfbc0d07..2b404c514 100644 --- a/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md +++ b/src/data/roadmaps/vue/content/optimizing-renders@RRPhAxIqvAcjZIcLe_N8-.md @@ -4,4 +4,4 @@ Optimizing rendering is crucial for ensuring a smooth and efficient user experie Learn more from the following resources: -- [@article@Optimizing rendering in Vue](https://blog.logrocket.com/optimizing-rendering-vue/) +- [@article@Optimizing Rendering in Vue](https://blog.logrocket.com/optimizing-rendering-vue/) diff --git a/src/data/roadmaps/vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md b/src/data/roadmaps/vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md index fe8cd4137..7f06f2c5a 100644 --- a/src/data/roadmaps/vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md +++ b/src/data/roadmaps/vue/content/options-api@PPUU3Rb73aCpT4zcyvlJE.md @@ -1,10 +1,8 @@ # Options API -We use Options API in a Vue application to write and define different components. With this API, we can use options such as data, methods, and mounted. - -To state it simply, Options API is an old way to structure a Vue.JS application. Due to some limitations in this API, Composition API was introduced in Vue 3. +We use Options API in a Vue application to write and define different components. With this API, we can use options such as data, methods, and mounted. To state it simply, Options API is an old way to structure a Vue.JS application. Due to some limitations in this API, Composition API was introduced in Vue 3. Visit the following resources to learn more: -- [@article@TypeScript with Options API](https://vuejs.org/guide/typescript/options-api.html) -- [@article@Options API Documentation](https://vuejs.org/api/#options-api) +- [@official@TypeScript with Options API](https://vuejs.org/guide/typescript/options-api.html) +- [@official@Options API Documentation](https://vuejs.org/api/#options-api) diff --git a/src/data/roadmaps/vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md b/src/data/roadmaps/vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md index 36c9d9b01..4724be837 100644 --- a/src/data/roadmaps/vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md +++ b/src/data/roadmaps/vue/content/pinia@NIvjyhtTFC1gomtGQT_2t.md @@ -4,5 +4,5 @@ Pinia is a store library for Vue.js, and can be used in Vue 2 and Vue 3, with th Visit the following resources to learn more: -- [@article@Official Documentation](https://pinia.vuejs.org/) +- [@official@Pinia Documentation](https://pinia.vuejs.org/) - [@video@Learn Pinia in 30Minutes](https://www.youtube.com/watch?v=JGC7aAC-3y8) diff --git a/src/data/roadmaps/vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md b/src/data/roadmaps/vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md index a397ca93b..8acdeb2ec 100644 --- a/src/data/roadmaps/vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md +++ b/src/data/roadmaps/vue/content/playwright@zqcE3bTnymdepV-Yc8qBl.md @@ -4,5 +4,5 @@ Playwright Test was created specifically to accommodate the needs of end-to-end Visit the following resources to learn more: -- [@official@Official Website: Playwright](https://playwright.dev/) +- [@official@Playwright Website](https://playwright.dev/) - [@article@Playwright Tutorial: Learn Basics and Setup](https://www.browserstack.com/guide/playwright-tutorial) diff --git a/src/data/roadmaps/vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md b/src/data/roadmaps/vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md index 47f7ab02a..cdbec1707 100644 --- a/src/data/roadmaps/vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md +++ b/src/data/roadmaps/vue/content/plugins@_Nc8ivQrdpKuf8MwaV-K7.md @@ -4,5 +4,5 @@ Plugins are self-contained code that usually add app-level functionality to Vue. Visit the following resources to learn more: -- [@article@Plugins in Vue.js](https://vuejs.org/guide/reusability/plugins.html) +- [@official@Plugins in Vue.js](https://vuejs.org/guide/reusability/plugins.html) - [@article@How to Write Your Own Vue.js Plugin](https://www.linode.com/docs/guides/how-to-write-vue-js-plugins/) diff --git a/src/data/roadmaps/vue/content/props@raEfI4GLMW2fOucka07VE.md b/src/data/roadmaps/vue/content/props@raEfI4GLMW2fOucka07VE.md index 3364e9697..a83a24460 100644 --- a/src/data/roadmaps/vue/content/props@raEfI4GLMW2fOucka07VE.md +++ b/src/data/roadmaps/vue/content/props@raEfI4GLMW2fOucka07VE.md @@ -6,5 +6,5 @@ Props are custom attributes you can register on a component. Visit the following resources to learn more: -- [@article@Props Basics](https://vuejs.org/guide/essentials/component-basics.html#passing-props) -- [@article@Props in Depth](https://vuejs.org/guide/components/props.html) +- [@official@Props Basics](https://vuejs.org/guide/essentials/component-basics.html#passing-props) +- [@official@Props in Depth](https://vuejs.org/guide/components/props.html) diff --git a/src/data/roadmaps/vue/content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md b/src/data/roadmaps/vue/content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md index baa057927..22298ea33 100644 --- a/src/data/roadmaps/vue/content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md +++ b/src/data/roadmaps/vue/content/provide--inject@xwVbhOpQMPPB4G-lhro0B.md @@ -4,4 +4,4 @@ Usually, when we need to pass data from the parent to a child component, we use Visit the following resources to learn more: -- [@article@Provide / Inject in Vue.js](https://vuejs.org/guide/components/provide-inject.html) +- [@official@Provide / Inject in Vue.js](https://vuejs.org/guide/components/provide-inject.html) diff --git a/src/data/roadmaps/vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md b/src/data/roadmaps/vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md index af5e05de2..c2dd2e2fd 100644 --- a/src/data/roadmaps/vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md +++ b/src/data/roadmaps/vue/content/quasar@f2udJnT2q5eDmBZ_OKtmi.md @@ -4,6 +4,6 @@ Quasar Framework is an open-source Vue.js based framework for building apps, wit Visit the following resources to learn more: -- [@official@Official Website: Quasar](https://quasar.dev/) +- [@official@Quasar](https://quasar.dev/) - [@video@Quasar Framework: Vue.js Cross Platform App](https://www.youtube.com/watch?v=opmng7llVJ0&list=PLAiDzIdBfy8iu_MZrq3IPuSFcRgCQ0iL0) - [@video@How to Build an App using Quasar Framework](https://www.youtube.com/watch?v=czJIuHyPPXo) diff --git a/src/data/roadmaps/vue/content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md b/src/data/roadmaps/vue/content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md index 8668ee4b9..d97871de5 100644 --- a/src/data/roadmaps/vue/content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md +++ b/src/data/roadmaps/vue/content/rendering-lists@ftqDoGpwqqWQnu4NQSsMk.md @@ -4,4 +4,4 @@ We can use the `v-for` directive to render a list of items based on an array. Th Visit the following resources to learn more: -- [@article@Rendering Lists in Vue.js](https://vuejs.org/guide/essentials/list.html) +- [@official@Rendering Lists in Vue.js](https://vuejs.org/guide/essentials/list.html) diff --git a/src/data/roadmaps/vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md b/src/data/roadmaps/vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md index e05bc2c28..9e3f23444 100644 --- a/src/data/roadmaps/vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md +++ b/src/data/roadmaps/vue/content/routing@ixRG0xfEp4BmyvCR0mtoR.md @@ -1,3 +1,8 @@ # Routing Routing is an essential concept in Single Page Applications (SPA). When your application is divided into separated logical sections, and all of them are under their own URL, your users can easily share links among each other. + +Visit the following resources to learn more: + +- [@official@Routing in Vue.js](https://vuejs.org/guide/scaling-up/routing.html) +- [@official@The Vue Router](https://router.vuejs.org/) diff --git a/src/data/roadmaps/vue/content/single-file-components@VNBRlJkdH6NOOzGXUrbZK.md b/src/data/roadmaps/vue/content/single-file-components@VNBRlJkdH6NOOzGXUrbZK.md index 6de155699..628183e4c 100644 --- a/src/data/roadmaps/vue/content/single-file-components@VNBRlJkdH6NOOzGXUrbZK.md +++ b/src/data/roadmaps/vue/content/single-file-components@VNBRlJkdH6NOOzGXUrbZK.md @@ -4,4 +4,4 @@ Vue Single-File Components (a.k.a. `*.vue` files, abbreviated as SFC) is a speci Visit the following resources to learn more: -- [@article@Single File Components](https://vuejs.org/guide/scaling-up/sfc.html) +- [@official@Single File Components](https://vuejs.org/guide/scaling-up/sfc.html) diff --git a/src/data/roadmaps/vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md b/src/data/roadmaps/vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md index c8d4652d2..f07330fea 100644 --- a/src/data/roadmaps/vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md +++ b/src/data/roadmaps/vue/content/slots@jkX66izOHVWqtyd6KZ0K6.md @@ -4,4 +4,4 @@ In some cases, we may want to pass a template fragment to a child component, and Visit the following resources to learn more: -- [@article@Slots in Vue.js](https://vuejs.org/guide/components/slots.html) +- [@official@Slots in Vue.js](https://vuejs.org/guide/components/slots.html) diff --git a/src/data/roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md b/src/data/roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md index cdb7765e5..10dbbb95a 100644 --- a/src/data/roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md +++ b/src/data/roadmaps/vue/content/ssg@822tGnM9jOkYh9aNlosPr.md @@ -4,7 +4,7 @@ A static site generator is a tool that generates a full static HTML website base Visit the following resources to learn more: -- [@article@What is a static site generator?](https://www.cloudflare.com/learning/performance/static-site-generator/) +- [@article@What is a Static Site Generator?](https://www.cloudflare.com/learning/performance/static-site-generator/) - [@article@Next.js SSG](https://nextjs.org/docs/advanced-features/static-html-export) - [@article@Gatsby SSG](https://www.gatsbyjs.com/docs/glossary/static-site-generator/) - [@article@SSG — An 11ty, Vite And JAM Sandwich](https://www.smashingmagazine.com/2021/10/building-ssg-11ty-vite-jam-sandwich/) diff --git a/src/data/roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md b/src/data/roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md index 27539c035..b1d63e88c 100644 --- a/src/data/roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md +++ b/src/data/roadmaps/vue/content/ssr@Cm6mqXYp-G4mGfPxuU73_.md @@ -4,9 +4,8 @@ Server-side rendering refers to the process that the service side completes the Visit the following resources to learn more: -- [@article@what is server side rendering](https://www.educative.io/answers/what-is-server-side-rendering) +- [@article@What is Server Side Rendering (SSR)?](https://www.educative.io/answers/what-is-server-side-rendering) - [@article@When should I Server-Side Render?](https://medium.com/@mbleigh/when-should-i-server-side-render-c2a383ff2d0f) - [@article@Server-Side Rendering (SSR)](https://vuejs.org/guide/scaling-up/ssr.html) -- [@video@what is server side rendering?](https://www.youtube.com/watch?v=GQzn7XRdzxY) -- [@video@What is server-side rendering for web development?](https://www.youtube.com/watch?v=okvg3MRAPs0) +- [@video@What is Server Side Rendering (SSR) for Web Development?](https://www.youtube.com/watch?v=okvg3MRAPs0) - [@feed@Explore top posts about Web Development](https://app.daily.dev/tags/webdev?ref=roadmapsh) diff --git a/src/data/roadmaps/vue/content/state-management@9AwVtwIv6TfP9F4ulz2F0.md b/src/data/roadmaps/vue/content/state-management@9AwVtwIv6TfP9F4ulz2F0.md index 206929cf1..d4bff59cd 100644 --- a/src/data/roadmaps/vue/content/state-management@9AwVtwIv6TfP9F4ulz2F0.md +++ b/src/data/roadmaps/vue/content/state-management@9AwVtwIv6TfP9F4ulz2F0.md @@ -4,4 +4,5 @@ Application state management is the process of maintaining knowledge of an appli Visit the following resources to learn more: +- [@official@State Management](https://vuejs.org/guide/scaling-up/state-management.html) - [@article@What is State Management?](https://www.techtarget.com/searchapparchitecture/definition/state-management) diff --git a/src/data/roadmaps/vue/content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md b/src/data/roadmaps/vue/content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md index 3cf85ce3d..567f87421 100644 --- a/src/data/roadmaps/vue/content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md +++ b/src/data/roadmaps/vue/content/tanstack-query@WSq_cDKQPZa_qmQlIdGXg.md @@ -4,4 +4,4 @@ TanStack Query is a data fetching and caching library for Vue.js and React. It i Visit the following resources to learn more: -- [@official@Official Website](https://tanstack.com/query) \ No newline at end of file +- [@official@Tanstack Query Website](https://tanstack.com/query) diff --git a/src/data/roadmaps/vue/content/teleport-components@SGsd08ZTu4H76s8cfbCKe.md b/src/data/roadmaps/vue/content/teleport-components@SGsd08ZTu4H76s8cfbCKe.md index 7ddda0235..e5872062b 100644 --- a/src/data/roadmaps/vue/content/teleport-components@SGsd08ZTu4H76s8cfbCKe.md +++ b/src/data/roadmaps/vue/content/teleport-components@SGsd08ZTu4H76s8cfbCKe.md @@ -4,4 +4,4 @@ Sometimes we may run into the following scenario: a part of a component's templa Visit the following resources to learn more: -- [@article@Teleport Components](https://vuejs.org/guide/built-ins/teleport.html) +- [@official@Teleport Components](https://vuejs.org/guide/built-ins/teleport.html) diff --git a/src/data/roadmaps/vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md b/src/data/roadmaps/vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md index 0e583f900..8454530b3 100644 --- a/src/data/roadmaps/vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md +++ b/src/data/roadmaps/vue/content/templates@VlcYnTHW5d4J_zLYupvu5.md @@ -4,4 +4,4 @@ Vue uses an HTML-based template syntax that allows you to declaratively bind the Visit the following resources to learn more: -- [@article@Template Syntax](https://vuejs.org/guide/essentials/template-syntax.html) +- [@official@Template Syntax](https://vuejs.org/guide/essentials/template-syntax.html) diff --git a/src/data/roadmaps/vue/content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md b/src/data/roadmaps/vue/content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md index cc27fbd3f..66cb71b0d 100644 --- a/src/data/roadmaps/vue/content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md +++ b/src/data/roadmaps/vue/content/transition-group@HjzOYjS-7ZEBvElRJ8uN2.md @@ -4,4 +4,4 @@ Visit the following resources to learn more: -- [@article@TransitionGroup Component](https://vuejs.org/guide/built-ins/transition-group.html) +- [@official@TransitionGroup Component](https://vuejs.org/guide/built-ins/transition-group.html) diff --git a/src/data/roadmaps/vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md b/src/data/roadmaps/vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md index fea06dd9d..cd6888b0e 100644 --- a/src/data/roadmaps/vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md +++ b/src/data/roadmaps/vue/content/transition@SWpWg5J5N9ZfY_DaIigA5.md @@ -7,4 +7,4 @@ Vue offers two built-in components that can help work with transitions and anima Visit the following resources to learn more: -- [@article@Transition Component](https://vuejs.org/guide/built-ins/transition.html#transition) +- [@official@Transition Component](https://vuejs.org/guide/built-ins/transition.html#transition) diff --git a/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md b/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md index 0bbc2fe26..b7ce2b66f 100644 --- a/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md +++ b/src/data/roadmaps/vue/content/v-bind@cuM9q9vYy8JpZPGeBffd1.md @@ -1,11 +1,10 @@ # v-bind -The `v-bind` directive dynamically binds an HTML attribute to data. +The `v-bind` directive dynamically binds an HTML attribute to data. The shorthand for this directive is `:` -The shorthand for this directive is `:` +## Example -Example: -```vue +```html \n \n \n \n\nVisit the following resources to learn more:", + "description": "The `v-for` directive is used to render an HTML element, a block of elements, or even a component based on an array, an object, or a set number of times. When using this directive it is important to assign a unique key to each item to avoid issues and improve performance. This directive follows the `item in items` syntax.\n\nExample\n-------\n\n \n \n \n \n\nVisit the following resources to learn more:", "links": [ { - "title": "v-for documentation", + "title": "v-for Documentation", "url": "https://vuejs.org/guide/essentials/list#v-for", "type": "article" } @@ -319,15 +336,21 @@ }, "hVuRmhXVP65IPtuHTORjJ": { "title": "v-on", - "description": "", - "links": [] + "description": "The v-on directive is placed on an element to attach an event listener. To attach an event listener with v-on we need to provide the event type, and any modifier, and a method or expression that should run when that event occurs.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "v-on Directive", + "url": "https://www.w3schools.com/vue/ref_v-on.php", + "type": "article" + } + ] }, "cuM9q9vYy8JpZPGeBffd1": { "title": "v-bind", - "description": "The `v-bind` directive dynamically binds an HTML attribute to data.\n\nThe shorthand for this directive is `:`\n\nExample:\n\n \n \n \n \n\nVisit the following resources for more information:", + "description": "The `v-bind` directive dynamically binds an HTML attribute to data. The shorthand for this directive is `:`\n\nExample\n-------\n\n \n \n \n \n\nVisit the following resources for more information:", "links": [ { - "title": "v-bind documentation", + "title": "v-bind Documentation", "url": "https://vuejs.org/api/built-in-directives.html#v-bind", "type": "article" } @@ -357,10 +380,10 @@ }, "5k9CrbzhNy9iiS6ez2UE6": { "title": "v-once", - "description": "The `v-once` directive makes an HTML element render only once, skipping every future update.\n\nExample:\n\n \n \n \n \n\nIn this example the **p** element will not change its text even if the input variable is changed through the **input** element.\n\nVisit the following resources to learn more:", + "description": "The `v-once` directive makes an HTML element render only once, skipping every future update.\n\nExample\n-------\n\n \n \n \n \n\nIn this example the **p** element will not change its text even if the input variable is changed through the **input** element.\n\nVisit the following resources to learn more:", "links": [ { - "title": "v-once documentation", + "title": "v-once Documentation", "url": "https://vuejs.org/api/built-in-directives.html#v-once", "type": "article" } @@ -368,7 +391,7 @@ }, "mlsrhioiEkqnRIL6O3hNa": { "title": "v-pre", - "description": "The `v-pre` directive makes an element render its content as-is, skipping its compilation. The most common use case is when displaying raw mustache syntax.\n\nExample:\n\n \n \n \n \n\nThe **p** element will display: `{{ text }}` and not `Some Text` because the compilation is skipped.\n\nVisit the following resources to learn more:", + "description": "The `v-pre` directive makes an element render its content as-is, skipping its compilation. The most common use case is when displaying raw mustache syntax.\n\nExample\n-------\n\n \n \n \n \n\nThe **p** element will display: `{{ text }}` and not `Some Text` because the compilation is skipped.\n\nVisit the following resources to learn more:", "links": [ { "title": "v-pre Documentation", @@ -379,10 +402,10 @@ }, "RrSekP8Ub01coegMwLP6a": { "title": "v-cloak", - "description": "The v-cloak directive is used to prevent the uncompiled Vue template from being visible while the Vue instance is still loading. It temporarily hides the content until Vue has finished compiling the template\n\nThe v-cloak directive remains until the component instance is mounted.\n\n
\n {{ message }}\n
\n \n\nCombined with CSS, you can hide elements with v-cloak until they are ready.\n\n [v-cloak] {\n display: none;\n }\n \n\nThe `
` will not be visible until the compilation is done.\n\nVisit the following resources to learn more:", + "description": "The v-cloak directive is used to prevent the uncompiled Vue template from being visible while the Vue instance is still loading. It temporarily hides the content until Vue has finished compiling the template. The v-cloak directive remains until the component instance is mounted.\n\n
\n {{ message }}\n
\n \n\nCombined with CSS, you can hide elements with v-cloak until they are ready.\n\n [v-cloak] {\n display: none;\n }\n \n\nThe `
` will not be visible until the compilation is done.\n\nVisit the following resources to learn more:", "links": [ { - "title": "v-cloak documentation", + "title": "v-cloak Documentation", "url": "https://vuejs.org/api/built-in-directives.html#v-cloak", "type": "article" } @@ -393,7 +416,7 @@ "description": "Optimizing rendering is crucial for ensuring a smooth and efficient user experience across all your frontend projects. Sluggish webpages can lead to frustration for users, and potentially cause them to entirely abandon your web application. This issue comes up most often in single-page applications (SPAs), where the entirety of your application is loaded within a single webpage, and updates to it are handled dynamically without needing a full reload of the webpage.\n\nLearn more from the following resources:", "links": [ { - "title": "Optimizing rendering in Vue", + "title": "Optimizing Rendering in Vue", "url": "https://blog.logrocket.com/optimizing-rendering-vue/", "type": "article" } @@ -401,8 +424,14 @@ }, "dxwKfBxd5KYVkfEPMdHp-": { "title": "Debugging", - "description": "", - "links": [] + "description": "Debugging in Vue.js involves identifying and fixing issues in your Vue applications. It’s an essential part of the development process, and there are several tools and techniques you can use to effectively debug your Vue code.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Debugging Documentation", + "url": "https://vuejs.org/v2/cookbook/debugging-in-vscode.html", + "type": "article" + } + ] }, "WiGG9_4G5y-AVA9byw6_g": { "title": "Lifecycle Hooks", @@ -448,12 +477,18 @@ }, "NfB3HlZ3uwYK5xszvV50b": { "title": "Input Bindings", - "description": "", - "links": [] + "description": "Input bindings are a way to bind user input to a component's data. This allows the component to react to user input and update its state accordingly. Input bindings are typically used with form elements such as text inputs, checkboxes, and select dropdowns.\n\nVisit the following resources to learn more:", + "links": [ + { + "title": "Input Bindings", + "url": "https://vuejs.org/guide/essentials/forms", + "type": "article" + } + ] }, "gMFndBcrTC6FtGryqN6dX": { "title": "v-model", - "description": "The v-model directive in Vue.js is used for creating two-way data bindings on form input elements, such as , , and . This means that the data can be updated in the component when the user inputs something, and the UI will update if the data in the component changes.", + "description": "The v-model directive in Vue.js is used for creating two-way data bindings on form input elements, such as ``, `