Merge branch 'master' into dansholds/ai-roadmap-content

dansholds/ai-roadmap-content
dsh 1 day ago committed by GitHub
commit 7fd1909a34
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      contributing.md
  2. 8
      package.json
  3. 75
      pnpm-lock.yaml
  4. 20
      public/roadmap-content/ai-data-scientist.json
  5. 263
      public/roadmap-content/ai-engineer.json
  6. 245
      public/roadmap-content/api-design.json
  7. 14
      public/roadmap-content/cyber-security.json
  8. 15
      public/roadmap-content/devops.json
  9. 2
      public/roadmap-content/full-stack.json
  10. 10
      public/roadmap-content/ios.json
  11. 10
      public/roadmap-content/nodejs.json
  12. 2
      public/roadmap-content/python.json
  13. 130
      public/roadmap-content/react.json
  14. 12
      public/roadmap-content/redis.json
  15. 2
      public/roadmap-content/software-architect.json
  16. 1
      readme.md
  17. 3
      src/components/AuthenticationFlow/GitHubButton.tsx
  18. 17
      src/components/AuthenticationFlow/GoogleButton.tsx
  19. 12
      src/components/AuthenticationFlow/LinkedInButton.tsx
  20. 3
      src/components/AuthenticationFlow/TriggerVerifyAccount.tsx
  21. 10
      src/components/Dashboard/ProgressStack.tsx
  22. 29
      src/components/PageSponsor.tsx
  23. 1
      src/data/best-practices/frontend-performance/content/compress-your-images.md
  24. 22
      src/data/changelogs/devops-project-ideas.md
  25. 2
      src/data/guides/how-to-become-frontend-developer.md
  26. 4
      src/data/projects/automated-backups.md
  27. 1
      src/data/projects/caching-server.md
  28. 1
      src/data/projects/database-backup-utility.md
  29. 1
      src/data/projects/expense-tracker.md
  30. 1
      src/data/projects/github-user-activity.md
  31. 1
      src/data/projects/number-guessing-game.md
  32. 1
      src/data/projects/task-tracker.md
  33. 2
      src/data/roadmaps/ai-engineer/content/ai-engineer-vs-ml-engineer@jSZ1LhPdhlkW-9QJhIvFs.md
  34. 6
      src/data/roadmaps/ai-engineer/content/hugging-face-hub@YLOdOvLXa5Fa7_mmuvKEi.md
  35. 7
      src/data/roadmaps/ai-engineer/content/hugging-face-tasks@YKIPOiSj_FNtg0h8uaSMq.md
  36. 2
      src/data/roadmaps/ai-engineer/content/hugging-face@v99C5Bml2a6148LCJ9gy9.md
  37. 6
      src/data/roadmaps/ai-engineer/content/inference-sdk@3kRTzlLNBnXdTsAEXVu_M.md
  38. 2
      src/data/roadmaps/ai-engineer/content/llms@wf2BSyUekr1S1q6l8kyq6.md
  39. 2
      src/data/roadmaps/ai-engineer/content/ollama-models@ro3vY_sp6xMQ-hfzO-rc1.md
  40. 7
      src/data/roadmaps/ai-engineer/content/ollama-sdk@TsG_I7FL-cOCSw8gvZH3r.md
  41. 2
      src/data/roadmaps/ai-engineer/content/ollama@rTT2UnvqFO3GH6ThPLEjO.md
  42. 2
      src/data/roadmaps/ai-engineer/content/open-vs-closed-source-models@RBwGsq9DngUsl8PrrCbqx.md
  43. 2
      src/data/roadmaps/ai-engineer/content/opensource-ai@a_3SabylVqzzOyw3tZN5f.md
  44. 2
      src/data/roadmaps/ai-engineer/content/popular-open-source-models@97eu-XxYUH9pYbD_KjAtA.md
  45. 2
      src/data/roadmaps/ai-engineer/content/transformersjs@bGLrbpxKgENe2xS1eQtdh.md
  46. 10
      src/data/roadmaps/ai-engineer/content/what-is-an-ai-engineer@GN6SnI7RXIeW8JeD-qORW.md
  47. 2
      src/data/roadmaps/api-design/api-design.json
  48. 2
      src/data/roadmaps/api-design/content/api-gateways@MJeUD4fOHaJu1oxk4uQ-x.md
  49. 2
      src/data/roadmaps/api-design/content/api-integration-patterns@R3aRhqCslwhegMfHtxg5z.md
  50. 4
      src/data/roadmaps/api-design/content/api-keys--management@tzUJwXu_scwQHnPPT0oY-.md
  51. 6
      src/data/roadmaps/api-design/content/api-lifecycle-management@At5exN7ZAx2IzY3cTCzHm.md
  52. 4
      src/data/roadmaps/api-design/content/api-performance@d9ZXdU73jiCdeNHQv1_DH.md
  53. 4
      src/data/roadmaps/api-design/content/api-testing@Wpk4TvxcZOJgAoXjrOsZF.md
  54. 2
      src/data/roadmaps/api-design/content/attribute-based-access-control-abac@dZTe_kxIUQsc9N3w920aR.md
  55. 6
      src/data/roadmaps/api-design/content/authentication-methods@cQnQ9v3mH27MGNwetz3JW.md
  56. 6
      src/data/roadmaps/api-design/content/authorization-methods@nHbn8_sMY7J8o6ckbD-ER.md
  57. 1
      src/data/roadmaps/api-design/content/basic-auth@0FzHERK5AeYL5wv1FBJbH.md
  58. 4
      src/data/roadmaps/api-design/content/batch-processing@X68HXAAV-nKo-V4Fu1o72.md
  59. 4
      src/data/roadmaps/api-design/content/best-practices@q1yaf-RbHIQsOqfzjn4k4.md
  60. 6
      src/data/roadmaps/api-design/content/building-json--restful-apis@awdoiCHz7Yc3kYac_iy-a.md
  61. 4
      src/data/roadmaps/api-design/content/caching-strategies@PrvRCR4HCdGar0vcUbG_a.md
  62. 2
      src/data/roadmaps/api-design/content/ccpa@a-_iIE7UdoXzD00fD9MxN.md
  63. 2
      src/data/roadmaps/api-design/content/common-vulnerabilities@G70wvcOM1Isrx5ZBvS2xP.md
  64. 2
      src/data/roadmaps/api-design/content/content-negotiation@TX_hg7EobNJhmWKsMCaT1.md
  65. 6
      src/data/roadmaps/api-design/content/contract-testing@NqeBglhzukVMMEF9p2CXc.md
  66. 8
      src/data/roadmaps/api-design/content/different-api-styles@o8i093VQv-T5Qf1yGqU0R.md
  67. 8
      src/data/roadmaps/api-design/content/error-handling--retries@XD1vDtrRQFbLyKJaD1AlA.md
  68. 4
      src/data/roadmaps/api-design/content/error-handling@8tELdagrOaGCf3nMVs8t3.md
  69. 6
      src/data/roadmaps/api-design/content/event-driven-architecture@oMfOBkVsgiLvFLicOUdx6.md
  70. 4
      src/data/roadmaps/api-design/content/functional-testing@6lm3wy9WTAERTqXCn6pFt.md
  71. 3
      src/data/roadmaps/api-design/content/graphql-apis@MKVcPM2EzAr2_Ieyp9Fu3.md
  72. 6
      src/data/roadmaps/api-design/content/grpc-apis@Wwd-0PjrtViMFWxRGaQey.md
  73. 4
      src/data/roadmaps/api-design/content/http-headers@rE-0yibRH6B2UBKp351cf.md
  74. 4
      src/data/roadmaps/api-design/content/http-methods@rADHM-6NAxEjzmgiHefDX.md
  75. 2
      src/data/roadmaps/api-design/content/http-versions@ACALE93mL4gnX5ThRIdRp.md
  76. 1
      src/data/roadmaps/api-design/content/jwt@tWg68AHLIr1gIZA1za3jp.md
  77. 5
      src/data/roadmaps/api-design/content/load-balancing@p5wsniYnOS7cbHd92RxGk.md
  78. 6
      src/data/roadmaps/api-design/content/load-testing@7JNEx_cbqnAx3esvwZMOd.md
  79. 4
      src/data/roadmaps/api-design/content/messaging-queues@IkPZel5zxXWIx90Qx7fZI.md
  80. 4
      src/data/roadmaps/api-design/content/microservices-architecture@PPeBbooE121zrgNwpVTiA.md
  81. 5
      src/data/roadmaps/api-design/content/oauth-20@TLuNtQ6HKYQXmglyVk8-t.md
  82. 2
      src/data/roadmaps/api-design/content/performance-metrics@nQpczZUcn-TvrfT80dv0Q.md
  83. 3
      src/data/roadmaps/api-design/content/postman@KQAus72RGqx5f-3-YeJby.md
  84. 4
      src/data/roadmaps/api-design/content/profiling-and-monitoring@-qdwBg7HvwlbLy3IKCRij.md
  85. 4
      src/data/roadmaps/api-design/content/rabbit-mq@H22jAI2W5QLL-b1rq-c56.md
  86. 4
      src/data/roadmaps/api-design/content/readmecom@LxWHkhlikUaMT2G8YmVDQ.md
  87. 4
      src/data/roadmaps/api-design/content/role-based-access-control-rbac@wFsbmMi5Ey9UyDADdbdPW.md
  88. 2
      src/data/roadmaps/api-design/content/session-based-auth@eQWoy4CpYP3TJL2bbhPB_.md
  89. 4
      src/data/roadmaps/api-design/content/simple-json-apis@TVR-SkErlOHbDKLBGfxep.md
  90. 12
      src/data/roadmaps/api-design/content/standards-and-compliance@yvdfoly5WHHTq2Puss355.md
  91. 4
      src/data/roadmaps/api-design/content/swagger--open-api@5RY7AlfRQydjxWK65Z4cv.md
  92. 2
      src/data/roadmaps/api-design/content/token-based-auth@QTH7sy9uQZWl6ieBz7erY.md
  93. 4
      src/data/roadmaps/api-design/content/uri-design@b3qRTLwCC_9uDoPGrd9Bu.md
  94. 2
      src/data/roadmaps/api-design/content/url-query--path-parameters@P-rGIk50Bg7nFmWieAW07.md
  95. 6
      src/data/roadmaps/api-design/content/versioning-strategies@itILK2SXvLvAjk1Kul7EK.md
  96. 4
      src/data/roadmaps/api-design/content/web-sockets@UQ8N7gcVpRLAYXgUNHBt5.md
  97. 4
      src/data/roadmaps/api-design/content/what-are-apis@r8M3quACGO2piu0u_R4hO.md
  98. 5
      src/data/roadmaps/cyber-security/content/router@lwSFIbIX-xOZ0QK2sGFb1.md
  99. 2
      src/data/roadmaps/cyber-security/content/understand-basics-of-popular-suites@_7RjH4Goi0x6Noy6za0rP.md
  100. 1
      src/data/roadmaps/devops/content/white--grey-listing@E-lSLGzgOPrz-25ER2Hk7.md
  101. Some files were not shown because too many files have changed in this diff Show More

@ -73,7 +73,7 @@ For new roadmaps, you can either:
For the existing roadmaps, please follow the details listed for the nature of contribution: 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. - **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 <strong>not to have the biggest list of items</strong>. Our goal is to list items or skills most relevant today. **Note:** Please note that our goal is <strong>not to have the biggest list of items</strong>. Our goal is to list items or skills most relevant today.

@ -38,8 +38,8 @@
"@napi-rs/image": "^1.9.2", "@napi-rs/image": "^1.9.2",
"@resvg/resvg-js": "^2.6.2", "@resvg/resvg-js": "^2.6.2",
"@types/react": "^18.3.11", "@types/react": "^18.3.11",
"@types/react-dom": "^18.3.0", "@types/react-dom": "^18.3.1",
"astro": "^4.16.0", "astro": "^4.16.1",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"dayjs": "^1.11.13", "dayjs": "^1.11.13",
"dom-to-image": "^2.6.0", "dom-to-image": "^2.6.0",
@ -47,9 +47,9 @@
"gray-matter": "^4.0.3", "gray-matter": "^4.0.3",
"htm": "^3.1.1", "htm": "^3.1.1",
"image-size": "^1.1.1", "image-size": "^1.1.1",
"jose": "^5.9.3", "jose": "^5.9.4",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"lucide-react": "^0.451.0", "lucide-react": "^0.452.0",
"luxon": "^3.5.0", "luxon": "^3.5.0",
"nanoid": "^5.0.7", "nanoid": "^5.0.7",
"nanostores": "^0.11.3", "nanostores": "^0.11.3",

@ -10,16 +10,16 @@ importers:
dependencies: dependencies:
'@astrojs/node': '@astrojs/node':
specifier: ^8.3.4 specifier: ^8.3.4
version: 8.3.4(astro@4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2)) version: 8.3.4(astro@4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))
'@astrojs/react': '@astrojs/react':
specifier: ^3.6.2 specifier: ^3.6.2
version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@18.19.50)) version: 3.6.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@18.19.50))
'@astrojs/sitemap': '@astrojs/sitemap':
specifier: ^3.2.0 specifier: ^3.2.0
version: 3.2.0 version: 3.2.0
'@astrojs/tailwind': '@astrojs/tailwind':
specifier: ^5.1.2 specifier: ^5.1.2
version: 5.1.2(astro@4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))(tailwindcss@3.4.13) version: 5.1.2(astro@4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))(tailwindcss@3.4.13)
'@fingerprintjs/fingerprintjs': '@fingerprintjs/fingerprintjs':
specifier: ^4.5.0 specifier: ^4.5.0
version: 4.5.0 version: 4.5.0
@ -36,11 +36,11 @@ importers:
specifier: ^18.3.11 specifier: ^18.3.11
version: 18.3.11 version: 18.3.11
'@types/react-dom': '@types/react-dom':
specifier: ^18.3.0 specifier: ^18.3.1
version: 18.3.0 version: 18.3.1
astro: astro:
specifier: ^4.16.0 specifier: ^4.16.1
version: 4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2) version: 4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2)
clsx: clsx:
specifier: ^2.1.1 specifier: ^2.1.1
version: 2.1.1 version: 2.1.1
@ -63,14 +63,14 @@ importers:
specifier: ^1.1.1 specifier: ^1.1.1
version: 1.1.1 version: 1.1.1
jose: jose:
specifier: ^5.9.3 specifier: ^5.9.4
version: 5.9.3 version: 5.9.4
js-cookie: js-cookie:
specifier: ^3.0.5 specifier: ^3.0.5
version: 3.0.5 version: 3.0.5
lucide-react: lucide-react:
specifier: ^0.451.0 specifier: ^0.452.0
version: 0.451.0(react@18.3.1) version: 0.452.0(react@18.3.1)
luxon: luxon:
specifier: ^3.5.0 specifier: ^3.5.0
version: 3.5.0 version: 3.5.0
@ -1360,8 +1360,8 @@ packages:
'@types/react-calendar-heatmap@1.6.7': '@types/react-calendar-heatmap@1.6.7':
resolution: {integrity: sha512-xWBS9iOvw+aCidPk8QwCH69OCO7jnj6/9TjooqGQ9W+rA5m1aw36GjQMlSYKAg86otDeg9dzA+hSAIcvw/y9Rg==} resolution: {integrity: sha512-xWBS9iOvw+aCidPk8QwCH69OCO7jnj6/9TjooqGQ9W+rA5m1aw36GjQMlSYKAg86otDeg9dzA+hSAIcvw/y9Rg==}
'@types/react-dom@18.3.0': '@types/react-dom@18.3.1':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==}
'@types/react-slick@0.23.13': '@types/react-slick@0.23.13':
resolution: {integrity: sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A==} resolution: {integrity: sha512-bNZfDhe/L8t5OQzIyhrRhBr/61pfBcWaYJoq6UDqFtv5LMwfg4NsVDD2J8N01JqdAdxLjOt66OZEp6PX+dGs/A==}
@ -1450,8 +1450,8 @@ packages:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'} engines: {node: '>=8'}
astro@4.16.0: astro@4.16.1:
resolution: {integrity: sha512-R5voBFy0yOg57uFnW24WV+RvqPerp9eOoDQoT0pQYqECuGuyV1PsZaSb9Nm0ec+KMLrfO9jvvESFw9LIN6XiUw==} resolution: {integrity: sha512-ZeZd+L147HHgHmvoSkve7KM3EutV+hY0mOCa4PwARHEFAAh+omo4MUNoTWsFkfq7ozTgR0PCXQwslrZduoWHNg==}
engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true hasBin: true
@ -2164,8 +2164,8 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true hasBin: true
jose@5.9.3: jose@5.9.4:
resolution: {integrity: sha512-egLIoYSpcd+QUF+UHgobt5YzI2Pkw/H39ou9suW687MY6PmCwPmkNV/4TNjn1p2tX5xO3j0d0sq5hiYE24bSlg==} resolution: {integrity: sha512-WBBl6au1qg6OHj67yCffCgFR3BADJBXN8MdRvCgJDuMv3driV2nHr7jdGvaKX9IolosAsn+M0XRArqLXUhyJHQ==}
js-cookie@3.0.5: js-cookie@3.0.5:
resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==} resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
@ -2263,8 +2263,8 @@ packages:
lru-cache@5.1.1: lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
lucide-react@0.451.0: lucide-react@0.452.0:
resolution: {integrity: sha512-OwQ3uljZLp2cerj8sboy5rnhtGTCl9UCJIhT1J85/yOuGVlEH+xaUPR7tvNdddPvmV5M5VLdr7cQuWE3hzA4jw==} resolution: {integrity: sha512-kNefjOUOGm+Mu3KDiryONyPba9r+nhcrz5oJs3N6JDzGboQNEXw5GB3yB8rnV9/FA4bPyggNU6CRSihZm9MvSw==}
peerDependencies: peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc
@ -2845,9 +2845,6 @@ packages:
rehype-raw@7.0.0: rehype-raw@7.0.0:
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
rehype-stringify@10.0.0:
resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==}
rehype-stringify@10.0.1: rehype-stringify@10.0.1:
resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
@ -3385,9 +3382,9 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@astrojs/node@8.3.4(astro@4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))': '@astrojs/node@8.3.4(astro@4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))':
dependencies: dependencies:
astro: 4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2) astro: 4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2)
send: 0.19.0 send: 0.19.0
server-destroy: 1.0.1 server-destroy: 1.0.1
transitivePeerDependencies: transitivePeerDependencies:
@ -3397,10 +3394,10 @@ snapshots:
dependencies: dependencies:
prismjs: 1.29.0 prismjs: 1.29.0
'@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@18.19.50))': '@astrojs/react@3.6.2(@types/react-dom@18.3.1)(@types/react@18.3.11)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.8(@types/node@18.19.50))':
dependencies: dependencies:
'@types/react': 18.3.11 '@types/react': 18.3.11
'@types/react-dom': 18.3.0 '@types/react-dom': 18.3.1
'@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@18.19.50)) '@vitejs/plugin-react': 4.3.1(vite@5.4.8(@types/node@18.19.50))
react: 18.3.1 react: 18.3.1
react-dom: 18.3.1(react@18.3.1) react-dom: 18.3.1(react@18.3.1)
@ -3415,9 +3412,9 @@ snapshots:
stream-replace-string: 2.0.0 stream-replace-string: 2.0.0
zod: 3.23.8 zod: 3.23.8
'@astrojs/tailwind@5.1.2(astro@4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))(tailwindcss@3.4.13)': '@astrojs/tailwind@5.1.2(astro@4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2))(tailwindcss@3.4.13)':
dependencies: dependencies:
astro: 4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2) astro: 4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2)
autoprefixer: 10.4.20(postcss@8.4.47) autoprefixer: 10.4.20(postcss@8.4.47)
postcss: 8.4.47 postcss: 8.4.47
postcss-load-config: 4.0.2(postcss@8.4.47) postcss-load-config: 4.0.2(postcss@8.4.47)
@ -4475,7 +4472,7 @@ snapshots:
dependencies: dependencies:
'@types/react': 18.3.11 '@types/react': 18.3.11
'@types/react-dom@18.3.0': '@types/react-dom@18.3.1':
dependencies: dependencies:
'@types/react': 18.3.11 '@types/react': 18.3.11
@ -4558,7 +4555,7 @@ snapshots:
array-union@2.1.0: {} array-union@2.1.0: {}
astro@4.16.0(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2): astro@4.16.1(@types/node@18.19.50)(rollup@4.22.4)(typescript@5.6.2):
dependencies: dependencies:
'@astrojs/compiler': 2.10.3 '@astrojs/compiler': 2.10.3
'@astrojs/internal-helpers': 0.4.1 '@astrojs/internal-helpers': 0.4.1
@ -4590,7 +4587,6 @@ snapshots:
esbuild: 0.21.5 esbuild: 0.21.5
estree-walker: 3.0.3 estree-walker: 3.0.3
fast-glob: 3.3.2 fast-glob: 3.3.2
fastq: 1.17.1
flattie: 1.1.1 flattie: 1.1.1
github-slugger: 2.0.0 github-slugger: 2.0.0
gray-matter: 4.0.3 gray-matter: 4.0.3
@ -4611,7 +4607,6 @@ snapshots:
rehype: 13.0.2 rehype: 13.0.2
semver: 7.6.3 semver: 7.6.3
shiki: 1.22.0 shiki: 1.22.0
string-width: 7.2.0
tinyexec: 0.3.0 tinyexec: 0.3.0
tsconfck: 3.1.3(typescript@5.6.2) tsconfck: 3.1.3(typescript@5.6.2)
unist-util-visit: 5.0.0 unist-util-visit: 5.0.0
@ -4645,7 +4640,7 @@ snapshots:
autoprefixer@10.4.20(postcss@8.4.47): autoprefixer@10.4.20(postcss@8.4.47):
dependencies: dependencies:
browserslist: 4.23.3 browserslist: 4.24.0
caniuse-lite: 1.0.30001663 caniuse-lite: 1.0.30001663
fraction.js: 4.3.7 fraction.js: 4.3.7
normalize-range: 0.1.2 normalize-range: 0.1.2
@ -5355,7 +5350,7 @@ snapshots:
jiti@1.21.6: {} jiti@1.21.6: {}
jose@5.9.3: {} jose@5.9.4: {}
js-cookie@3.0.5: {} js-cookie@3.0.5: {}
@ -5437,7 +5432,7 @@ snapshots:
dependencies: dependencies:
yallist: 3.1.1 yallist: 3.1.1
lucide-react@0.451.0(react@18.3.1): lucide-react@0.452.0(react@18.3.1):
dependencies: dependencies:
react: 18.3.1 react: 18.3.1
@ -5449,7 +5444,7 @@ snapshots:
magicast@0.3.5: magicast@0.3.5:
dependencies: dependencies:
'@babel/parser': 7.25.6 '@babel/parser': 7.25.8
'@babel/types': 7.25.8 '@babel/types': 7.25.8
source-map-js: 1.2.1 source-map-js: 1.2.1
@ -6138,12 +6133,6 @@ snapshots:
hast-util-raw: 9.0.4 hast-util-raw: 9.0.4
vfile: 6.0.3 vfile: 6.0.3
rehype-stringify@10.0.0:
dependencies:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.3
unified: 11.0.5
rehype-stringify@10.0.1: rehype-stringify@10.0.1:
dependencies: dependencies:
'@types/hast': 3.0.4 '@types/hast': 3.0.4
@ -6154,7 +6143,7 @@ snapshots:
dependencies: dependencies:
'@types/hast': 3.0.4 '@types/hast': 3.0.4
rehype-parse: 9.0.0 rehype-parse: 9.0.0
rehype-stringify: 10.0.0 rehype-stringify: 10.0.1
unified: 11.0.5 unified: 11.0.5
remark-gfm@4.0.0: remark-gfm@4.0.0:

@ -326,8 +326,24 @@
}, },
"kBdt_t2SvVsY3blfubWIz": { "kBdt_t2SvVsY3blfubWIz": {
"title": "Machine Learning", "title": "Machine Learning",
"description": "Machine learning is a field of artificial intelligence that uses statistical techniques to give computer systems the ability to \"learn\" (e.g., progressively improve performance on a specific task) from data, without being explicitly programmed. The name machine learning was coined in 1959 by Arthur Samuel. Evolved from the study of pattern recognition and computational learning theory in artificial intelligence, machine learning explores the study and construction of algorithms that can learn from and make predictions on data – such algorithms overcome following strictly static program instructions by making data-driven predictions or decisions, through building a model from sample inputs. Machine learning is employed in a range of computing tasks where designing and programming explicit algorithms with good performance is difficult or infeasible; example applications include email filtering, detection of network intruders, and computer vision.", "description": "Machine learning is a field of artificial intelligence that uses statistical techniques to give computer systems the ability to \"learn\" (e.g., progressively improve performance on a specific task) from data, without being explicitly programmed. The name machine learning was coined in 1959 by Arthur Samuel. Evolved from the study of pattern recognition and computational learning theory in artificial intelligence, machine learning explores the study and construction of algorithms that can learn from and make predictions on data – such algorithms overcome following strictly static program instructions by making data-driven predictions or decisions, through building a model from sample inputs. Machine learning is employed in a range of computing tasks where designing and programming explicit algorithms with good performance is difficult or infeasible; example applications include email filtering, detection of network intruders, and computer vision.\n\nLearn more from the following resources:",
"links": [] "links": [
{
"title": "Advantages and Disadvantages of AI",
"url": "https://towardsdatascience.com/advantages-and-disadvantages-of-artificial-intelligence-182a5ef6588c",
"type": "article"
},
{
"title": "Reinforcement Learning 101",
"url": "https://towardsdatascience.com/reinforcement-learning-101-e24b50e1d292",
"type": "article"
},
{
"title": "Understanding AUC-ROC Curve",
"url": "https://towardsdatascience.com/understanding-auc-roc-curve-68b2303cc9c5",
"type": "article"
}
]
}, },
"FdBih8tlGPPy97YWq463y": { "FdBih8tlGPPy97YWq463y": {
"title": "Classic ML (Sup., Unsup.), Advanced ML (Ensembles, NNs)", "title": "Classic ML (Sup., Unsup.), Advanced ML (Ensembles, NNs)",

@ -6,18 +6,66 @@
}, },
"GN6SnI7RXIeW8JeD-qORW": { "GN6SnI7RXIeW8JeD-qORW": {
"title": "What is an AI Engineer?", "title": "What is an AI Engineer?",
"description": "", "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": [] "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": { "jSZ1LhPdhlkW-9QJhIvFs": {
"title": "AI Engineer vs ML Engineer", "title": "AI Engineer vs ML Engineer",
"description": "", "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": [] "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": { "wf2BSyUekr1S1q6l8kyq6": {
"title": "LLMs", "title": "LLMs",
"description": "", "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": [] "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": { "KWjD4xEPhOOYS51dvRLd2": {
"title": "Inference", "title": "Inference",
@ -51,7 +99,7 @@
}, },
"9XCxilAQ7FRet7lHQr1gE": { "9XCxilAQ7FRet7lHQr1gE": {
"title": "AI Agents", "title": "AI Agents",
"description": "", "description": "In AI engineering, \"agents\" refer to autonomous systems or components that can perceive their environment, make decisions, and take actions to achieve specific goals. Agents often interact with external systems, users, or other agents to carry out complex tasks. They can vary in complexity, from simple rule-based bots to sophisticated AI-powered agents that leverage machine learning models, natural language processing, and reinforcement learning.\n\nVisit the following resources to learn more:\n\n\\-[@article@Building an AI Agent Tutorial - LangChain](https://python.langchain.com/docs/tutorials/agents/) -[@article@Ai agents and their types](https://play.ht/blog/ai-agents-use-cases/) -[@video@The Complete Guide to Building AI Agents for Beginners](https://youtu.be/MOyl58VF2ak?si=-QjRD_5y3iViprJX)",
"links": [] "links": []
}, },
"5QdihE1lLpMc3DFrGy46M": { "5QdihE1lLpMc3DFrGy46M": {
@ -217,7 +265,7 @@
}, },
"4Q5x2VCXedAWISBXUIyin": { "4Q5x2VCXedAWISBXUIyin": {
"title": "Adding end-user IDs in prompts", "title": "Adding end-user IDs in prompts",
"description": "", "description": "Sending end-user IDs in your requests can be a useful tool to help OpenAI monitor and detect abuse. This allows OpenAI to provide your team with more actionable feedback in the event that we detect any policy violations in your application.\n\nVisit the following resources to learn more:\n\n\\-[@official@Sending end-user IDs - OpenAi](https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids)",
"links": [] "links": []
}, },
"qmx6OHqx4_0JXVIv8dASp": { "qmx6OHqx4_0JXVIv8dASp": {
@ -237,58 +285,184 @@
}, },
"a_3SabylVqzzOyw3tZN5f": { "a_3SabylVqzzOyw3tZN5f": {
"title": "OpenSource AI", "title": "OpenSource AI",
"description": "", "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": [] "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": { "RBwGsq9DngUsl8PrrCbqx": {
"title": "Open vs Closed Source Models", "title": "Open vs Closed Source Models",
"description": "", "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": [] "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": { "97eu-XxYUH9pYbD_KjAtA": {
"title": "Popular Open Source Models", "title": "Popular Open Source Models",
"description": "", "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": [] "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": { "v99C5Bml2a6148LCJ9gy9": {
"title": "Hugging Face", "title": "Hugging Face",
"description": "", "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": [] "links": [
{
"title": "Hugging Face",
"url": "https://huggingface.co/",
"type": "article"
},
{
"title": "Github",
"url": "https://github.com/huggingface",
"type": "article"
}
]
}, },
"YLOdOvLXa5Fa7_mmuvKEi": { "YLOdOvLXa5Fa7_mmuvKEi": {
"title": "Hugging Face Hub", "title": "Hugging Face Hub",
"description": "", "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": [] "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": { "YKIPOiSj_FNtg0h8uaSMq": {
"title": "Hugging Face Tasks", "title": "Hugging Face Tasks",
"description": "", "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": [] "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": { "3kRTzlLNBnXdTsAEXVu_M": {
"title": "Inference SDK", "title": "Inference SDK",
"description": "", "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": [] "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": { "bGLrbpxKgENe2xS1eQtdh": {
"title": "Transformers.js", "title": "Transformers.js",
"description": "", "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": [] "links": [
{
"title": "Transformers.js",
"url": "https://huggingface.co/docs/hub/en/transformers-js",
"type": "article"
}
]
}, },
"rTT2UnvqFO3GH6ThPLEjO": { "rTT2UnvqFO3GH6ThPLEjO": {
"title": "Ollama", "title": "Ollama",
"description": "", "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": [] "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": { "ro3vY_sp6xMQ-hfzO-rc1": {
"title": "Ollama Models", "title": "Ollama Models",
"description": "", "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": [] "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": { "TsG_I7FL-cOCSw8gvZH3r": {
"title": "Ollama SDK", "title": "Ollama SDK",
"description": "", "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": [] "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": { "--ig0Ume_BnXb9K2U7HJN": {
"title": "What are Embeddings", "title": "What are Embeddings",
@ -357,7 +531,7 @@
}, },
"dSd2C9lNl-ymmCRT9_ZC3": { "dSd2C9lNl-ymmCRT9_ZC3": {
"title": "Chroma", "title": "Chroma",
"description": "", "description": "Chroma is an open-source vector database and AI-native embedding database designed to handle and store large-scale embeddings and semantic vectors. It is used in applications that require fast, efficient similarity searches, such as natural language processing (NLP), machine learning (ML), and AI systems dealing with text, images, and other high-dimensional data.\n\nVisit the following resources to learn more:\n\n\\-[@official@Chroma](https://www.trychroma.com/) -[@article@Chroma Tutorials](https://lablab.ai/tech/chroma) -[@video@Chroma - Chroma - Vector Database for LLM Applications](https://youtu.be/Qs_y0lTJAp0?si=Z2-eSmhf6PKrEKCW)",
"links": [] "links": []
}, },
"_Cf7S1DCvX7p1_3-tP3C3": { "_Cf7S1DCvX7p1_3-tP3C3": {
@ -477,7 +651,7 @@
}, },
"778HsQzTuJ_3c9OSn5DmH": { "778HsQzTuJ_3c9OSn5DmH": {
"title": "Agents Usecases", "title": "Agents Usecases",
"description": "", "description": "AI Agents have a variety of usecases ranging from customer support, workflow automation, cybersecurity, finance, marketing and sales, and more.\n\nVisit the following resources to learn more:\n\n* [@article@Top 15 Use Cases Of AI Agents In Business](https://www.ampcome.com/post/15-use-cases-of-ai-agents-in-business) -[@article@A Brief Guide on AI Agents: Benefits and Use Cases](https://www.codica.com/blog/brief-guide-on-ai-agents/) -[@video@The Complete Guide to Building AI Agents for Beginners](https://youtu.be/MOyl58VF2ak?si=-QjRD_5y3iViprJX)",
"links": [] "links": []
}, },
"voDKcKvXtyLzeZdx2g3Qn": { "voDKcKvXtyLzeZdx2g3Qn": {
@ -577,8 +751,29 @@
}, },
"XcKeQfpTA5ITgdX51I4y-": { "XcKeQfpTA5ITgdX51I4y-": {
"title": "AI Code Editors", "title": "AI Code Editors",
"description": "", "description": "AI code editors are development tools that leverage artificial intelligence to assist software developers in writing, debugging, and optimizing code. These editors go beyond traditional syntax highlighting and code completion by incorporating machine learning models, natural language processing, and data analysis to understand code context, generate suggestions, and even automate portions of the software development process.\n\nVisit the following resources to learn more:",
"links": [] "links": [
{
"title": "Cursor - The AI Code Editor",
"url": "https://www.cursor.com/",
"type": "website"
},
{
"title": "Bolt - Prompt, run, edit, and deploy full-stack web apps",
"url": "https://bolt.new",
"type": "website"
},
{
"title": "Replit - Build Apps using AI",
"url": "https://replit.com/ai",
"type": "website"
},
{
"title": "v0 - Build Apps with AI",
"url": "https://v0.dev",
"type": "website"
}
]
}, },
"TifVhqFm1zXNssA8QR3SM": { "TifVhqFm1zXNssA8QR3SM": {
"title": "Code Completion Tools", "title": "Code Completion Tools",

@ -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:", "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": [ "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/", "url": "https://aws.amazon.com/what-is/api/",
"type": "article" "type": "article"
}, },
@ -61,7 +71,7 @@
"type": "article" "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", "url": "https://www.baeldung.com/cs/http-versions",
"type": "article" "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:", "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": [ "links": [
{ {
"title": "HTTP request methods", "title": "HTTP Methods - MDN",
"url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods", "url": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods",
"type": "article" "type": "article"
}, },
@ -82,7 +92,7 @@
"type": "article" "type": "article"
}, },
{ {
"title": "What are HTTP Methods?", "title": "What are HTTP Methods? - Postman",
"url": "https://blog.postman.com/what-are-http-methods/", "url": "https://blog.postman.com/what-are-http-methods/",
"type": "article" "type": "article"
} }
@ -124,12 +134,12 @@
"type": "article" "type": "article"
}, },
{ {
"title": "What are HTTP headers?", "title": "What are HTTP Headers?",
"url": "https://blog.postman.com/what-are-http-headers/", "url": "https://blog.postman.com/what-are-http-headers/",
"type": "article" "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/", "url": "https://requestly.com/blog/what-are-http-headers-understand-different-types-of-http-headers/",
"type": "article" "type": "article"
} }
@ -150,7 +160,7 @@
"type": "article" "type": "article"
}, },
{ {
"title": "Path parameters", "title": "Path Parameters",
"url": "https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters", "url": "https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters",
"type": "article" "type": "article"
} }
@ -182,7 +192,7 @@
"type": "article" "type": "article"
}, },
{ {
"title": "Content Negotiation in practice", "title": "Content Negotiation in Practice",
"url": "https://softwaremill.com/content-negotiation-in-practice/", "url": "https://softwaremill.com/content-negotiation-in-practice/",
"type": "article" "type": "article"
} }
@ -258,8 +268,19 @@
}, },
"o8i093VQv-T5Qf1yGqU0R": { "o8i093VQv-T5Qf1yGqU0R": {
"title": "Different API Styles", "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.", "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": [] "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": { "BvwdASMvuNQ9DNgzdSZ4o": {
"title": "RESTful APIs", "title": "RESTful APIs",
@ -287,45 +308,30 @@
"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:", "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": [ "links": [
{ {
"title": "A specification for building JSON APIs", "title": "Specification for Building JSON APIs",
"url": "https://github.com/json-api/json-api", "url": "https://github.com/json-api/json-api",
"type": "opensource" "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", "url": "https://www.youtube.com/watch?v=N-4prIh7t38",
"type": "video" "type": "video"
} }
] ]
}, },
"Wwd-0PjrtViMFWxRGaQey": { "Wwd-0PjrtViMFWxRGaQey": {
"title": "gRPC APIs", "title": "SOAP 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": "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": [ "links": [
{ {
"title": "gRPC Website", "title": "What are SOAP APIs?",
"url": "https://grpc.io/", "url": "https://www.indeed.com/career-advice/career-development/what-is-soap-api",
"type": "article" "type": "article"
}, },
{ {
"title": "gRPC Introduction", "title": "SOAP vs REST 101: Understand The Differences",
"url": "https://grpc.io/docs/what-is-grpc/introduction/", "url": "https://www.soapui.org/learn/api/soap-vs-rest-api/",
"type": "article" "type": "article"
},
{
"title": "gRPC Core Concepts",
"url": "https://grpc.io/docs/what-is-grpc/core-concepts/",
"type": "article"
},
{
"title": "Explore top posts about gRPC",
"url": "https://app.daily.dev/tags/grpc?ref=roadmapsh",
"type": "article"
},
{
"title": "Stephane Maarek - gRPC Introduction",
"url": "https://youtu.be/XRXTsQwyZSU",
"type": "video"
} }
] ]
}, },
@ -338,13 +344,18 @@
"url": "https://github.com/graphql-kit/graphql-apis", "url": "https://github.com/graphql-kit/graphql-apis",
"type": "opensource" "type": "opensource"
}, },
{
"title": "Visit Dedicated GraphQL Roadmap",
"url": "https://roadmap.sh/graphql",
"type": "article"
},
{ {
"title": "GraphQL Website", "title": "GraphQL Website",
"url": "https://graphql.org/", "url": "https://graphql.org/",
"type": "article" "type": "article"
}, },
{ {
"title": "GraphQL explained in 100 seconds", "title": "GraphQL Explained in 100 Seconds",
"url": "https://www.youtube.com/watch?v=eIQh02xuVw4", "url": "https://www.youtube.com/watch?v=eIQh02xuVw4",
"type": "video" "type": "video"
} }
@ -355,12 +366,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:", "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": [ "links": [
{ {
"title": "A specification for building APIs in JSON", "title": "Specification for Building APIs in JSON",
"url": "https://jsonapi.org/", "url": "https://jsonapi.org/",
"type": "article" "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/", "url": "https://www.integrate.io/blog/how-to-make-a-rest-api/",
"type": "article" "type": "article"
}, },
@ -392,7 +403,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:", "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": [ "links": [
{ {
"title": "Guidelines for URI design", "title": "Guidelines for URI Design",
"url": "https://css-tricks.com/guidelines-for-uri-design/", "url": "https://css-tricks.com/guidelines-for-uri-design/",
"type": "article" "type": "article"
}, },
@ -408,12 +419,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:", "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": [ "links": [
{ {
"title": "What is API versioning?", "title": "What is API Versioning?",
"url": "https://www.postman.com/api-platform/api-versioning/", "url": "https://www.postman.com/api-platform/api-versioning/",
"type": "article" "type": "article"
}, },
{ {
"title": "4 API versioning best practices", "title": "API Versioning Best Practices",
"url": "https://kodekloud.com/blog/api-versioning-best-practices/", "url": "https://kodekloud.com/blog/api-versioning-best-practices/",
"type": "article" "type": "article"
}, },
@ -513,7 +524,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:", "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": [ "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/", "url": "https://blog.postman.com/best-practices-for-api-error-handling/",
"type": "article" "type": "article"
}, },
@ -563,13 +574,24 @@
}, },
"cQnQ9v3mH27MGNwetz3JW": { "cQnQ9v3mH27MGNwetz3JW": {
"title": "Authentication Methods", "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.", "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": [] "links": [
{
"title": "API Authentication",
"url": "https://www.postman.com/api-platform/api-authentication/",
"type": "article"
}
]
}, },
"0FzHERK5AeYL5wv1FBJbH": { "0FzHERK5AeYL5wv1FBJbH": {
"title": "Basic Auth", "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:", "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": [ "links": [
{
"title": "Basic Authentication",
"url": "https://roadmap.sh/guides/basic-authentication",
"type": "article"
},
{ {
"title": "Basic Auth Generation Header", "title": "Basic Auth Generation Header",
"url": "https://www.debugbear.com/basic-auth-header-generator", "url": "https://www.debugbear.com/basic-auth-header-generator",
@ -591,6 +613,11 @@
"title": "Token Based Auth", "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:", "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": [ "links": [
{
"title": "Token Based Authentication",
"url": "https://roadmap.sh/guides/token-authentication",
"type": "article"
},
{ {
"title": "What Is Token-Based Authentication?", "title": "What Is Token-Based Authentication?",
"url": "https://www.okta.com/uk/identity-101/what-is-token-based-authentication/", "url": "https://www.okta.com/uk/identity-101/what-is-token-based-authentication/",
@ -600,11 +627,6 @@
"title": "Session vs Token Authentication in 100 Seconds", "title": "Session vs Token Authentication in 100 Seconds",
"url": "https://www.youtube.com/watch?v=UBUNrFtufWo", "url": "https://www.youtube.com/watch?v=UBUNrFtufWo",
"type": "video" "type": "video"
},
{
"title": "Token based auth",
"url": "https://www.youtube.com/watch?v=woNZJMSNbuo",
"type": "video"
} }
] ]
}, },
@ -612,6 +634,11 @@
"title": "JWT ", "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:", "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": [ "links": [
{
"title": "JWT Authentication",
"url": "https://roadmap.sh/guides/jwt-authentication",
"type": "article"
},
{ {
"title": "Introduction to JSON Web Tokens", "title": "Introduction to JSON Web Tokens",
"url": "https://jwt.io/introduction", "url": "https://jwt.io/introduction",
@ -633,6 +660,11 @@
"title": "OAuth 2.0", "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:", "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": [ "links": [
{
"title": "OAuth",
"url": "https://roadmap.sh/guides/oauth",
"type": "article"
},
{ {
"title": "OAuth Website", "title": "OAuth Website",
"url": "https://oauth.net/2/", "url": "https://oauth.net/2/",
@ -655,7 +687,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:", "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": [ "links": [
{ {
"title": "Session Based Authentication - Roadmap.sh", "title": "Session Based Authentication",
"url": "https://roadmap.sh/guides/session-based-authentication", "url": "https://roadmap.sh/guides/session-based-authentication",
"type": "article" "type": "article"
}, },
@ -673,8 +705,14 @@
}, },
"nHbn8_sMY7J8o6ckbD-ER": { "nHbn8_sMY7J8o6ckbD-ER": {
"title": "Authorization Methods", "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.", "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": [] "links": [
{
"title": "API Authorization Methods",
"url": "https://konghq.com/blog/engineering/common-api-authentication-methods",
"type": "article"
}
]
}, },
"wFsbmMi5Ey9UyDADdbdPW": { "wFsbmMi5Ey9UyDADdbdPW": {
"title": "Role Based Access Control (RBAC)", "title": "Role Based Access Control (RBAC)",
@ -686,12 +724,12 @@
"type": "article" "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", "url": "https://www.redhat.com/en/topics/security/what-is-role-based-access-control",
"type": "article" "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", "url": "https://www.youtube.com/watch?v=rvZ35YW4t5k",
"type": "video" "type": "video"
} }
@ -718,12 +756,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:", "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": [ "links": [
{ {
"title": "What is API key management?", "title": "What is API Key Management?",
"url": "https://www.akeyless.io/secrets-management-glossary/api-key-management/", "url": "https://www.akeyless.io/secrets-management-glossary/api-key-management/",
"type": "article" "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", "url": "https://infisical.com/blog/api-key-management",
"type": "article" "type": "article"
} }
@ -760,13 +798,13 @@
"type": "article" "type": "article"
}, },
{ {
"title": "What is Swagger?", "title": "OpenAPI Inititive",
"url": "https://blog.hubspot.com/website/what-is-swagger", "url": "https://www.openapis.org/",
"type": "article" "type": "article"
}, },
{ {
"title": "OpenAPI Inititive", "title": "What is Swagger?",
"url": "https://www.openapis.org/", "url": "https://blog.hubspot.com/website/what-is-swagger",
"type": "article" "type": "article"
} }
] ]
@ -781,7 +819,12 @@
"type": "article" "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", "url": "https://www.youtube.com/watch?v=MFxk5BZulVU",
"type": "video" "type": "video"
} }
@ -792,12 +835,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:", "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": [ "links": [
{ {
"title": "readmeio", "title": "ReadMe",
"url": "https://github.com/readmeio", "url": "https://github.com/orgs/readmeio/repositories?type=source",
"type": "opensource" "type": "opensource"
}, },
{ {
"title": "readme.com", "title": "ReadMe Website",
"url": "https://readme.com", "url": "https://readme.com",
"type": "article" "type": "article"
} }
@ -856,12 +899,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:", "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": [ "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/", "url": "https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/",
"type": "article" "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/", "url": "https://swagger.io/resources/articles/best-practices-in-api-design/",
"type": "article" "type": "article"
} }
@ -893,7 +936,7 @@
"type": "article" "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/", "url": "https://tyk.io/blog/api-product-metrics-what-you-need-to-know/",
"type": "article" "type": "article"
} }
@ -909,7 +952,7 @@
"type": "article" "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", "url": "https://www.lonti.com/blog/using-caching-strategies-to-improve-api-performance",
"type": "article" "type": "article"
}, },
@ -925,17 +968,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:", "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": [ "links": [
{ {
"title": "What is load balancing?", "title": "What is Load Balancing?",
"url": "https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/", "url": "https://www.cloudflare.com/en-gb/learning/performance/what-is-load-balancing/",
"type": "article" "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?", "title": "API Gateway vs Load Balancer: Which is Right for Your Application?",
"url": "https://konghq.com/blog/engineering/api-gateway-vs-load-balancer", "url": "https://konghq.com/blog/engineering/api-gateway-vs-load-balancer",
"type": "article" "type": "article"
}, },
{ {
"title": "What is a load balancer?", "title": "What is a Load Balancer?",
"url": "https://www.youtube.com/watch?v=sCR3SAVdyCc", "url": "https://www.youtube.com/watch?v=sCR3SAVdyCc",
"type": "video" "type": "video"
} }
@ -967,7 +1015,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:", "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": [ "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/", "url": "https://learning.postman.com/docs/monitoring-your-api/intro-monitors/",
"type": "article" "type": "article"
}, },
@ -1004,7 +1052,7 @@
"type": "article" "type": "article"
}, },
{ {
"title": "API Integration Patterns", "title": "API Integration Patterns - Devoteam",
"url": "https://uk.devoteam.com/expert-view/api-integration-patterns/", "url": "https://uk.devoteam.com/expert-view/api-integration-patterns/",
"type": "article" "type": "article"
} }
@ -1036,12 +1084,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:", "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": [ "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", "url": "https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/event-driven",
"type": "article" "type": "article"
}, },
{ {
"title": "Event-driven architecture", "title": "Event-driven Architecture",
"url": "https://aws.amazon.com/event-driven-architecture/", "url": "https://aws.amazon.com/event-driven-architecture/",
"type": "article" "type": "article"
}, },
@ -1083,7 +1131,7 @@
"type": "article" "type": "article"
}, },
{ {
"title": "Microservices explained in 5 minutes", "title": "Microservices Explained in 5 Minutes",
"url": "https://www.youtube.com/watch?v=lL_j7ilk7rc", "url": "https://www.youtube.com/watch?v=lL_j7ilk7rc",
"type": "video" "type": "video"
} }
@ -1094,12 +1142,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:", "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": [ "links": [
{ {
"title": "What is a message queue?", "title": "What is a Message Queue?",
"url": "https://aws.amazon.com/message-queue/", "url": "https://aws.amazon.com/message-queue/",
"type": "article" "type": "article"
}, },
{ {
"title": "REST API message queues explained", "title": "REST API Message Queues Explained",
"url": "https://www.youtube.com/watch?v=2idPgA6IN_Q", "url": "https://www.youtube.com/watch?v=2idPgA6IN_Q",
"type": "video" "type": "video"
} }
@ -1126,12 +1174,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:", "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": [ "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/", "url": "https://tyk.io/blog/api-design-guidance-bulk-and-batch-import/",
"type": "article" "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", "url": "https://www.youtube.com/watch?v=1xgBQTF24mU",
"type": "video" "type": "video"
} }
@ -1139,7 +1187,7 @@
}, },
"H22jAI2W5QLL-b1rq-c56": { "H22jAI2W5QLL-b1rq-c56": {
"title": "Rabbit MQ", "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": [ "links": [
{ {
"title": "RabbitMQ Website", "title": "RabbitMQ Website",
@ -1179,7 +1227,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:", "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": [ "links": [
{ {
"title": "What is API testing?", "title": "What is API Testing?",
"url": "https://www.postman.com/api-platform/api-testing/", "url": "https://www.postman.com/api-platform/api-testing/",
"type": "article" "type": "article"
}, },
@ -1224,7 +1272,7 @@
}, },
"6lm3wy9WTAERTqXCn6pFt": { "6lm3wy9WTAERTqXCn6pFt": {
"title": "Functional Testing", "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": [ "links": [
{ {
"title": "API Functional Testing – Why Is It Important And How to Test", "title": "API Functional Testing – Why Is It Important And How to Test",
@ -1243,17 +1291,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:", "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": [ "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/", "url": "https://grafana.com/blog/2024/01/30/api-load-testing/",
"type": "article" "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/", "url": "https://blog.postman.com/postman-api-performance-testing/",
"type": "article" "type": "article"
}, },
{ {
"title": "Load testing your API's", "title": "Load Testing API's",
"url": "https://www.youtube.com/watch?v=a5hWE4hMOoY", "url": "https://www.youtube.com/watch?v=a5hWE4hMOoY",
"type": "video" "type": "video"
} }
@ -1285,12 +1333,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:", "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": [ "links": [
{ {
"title": "A complete guide to Contract Testing", "title": "Complete Guide to Contract Testing",
"url": "https://testsigma.com/blog/api-contract-testing/", "url": "https://testsigma.com/blog/api-contract-testing/",
"type": "article" "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", "url": "https://saucelabs.com/resources/blog/getting-started-with-api-contract-testing",
"type": "article" "type": "article"
}, },
@ -1303,7 +1351,7 @@
}, },
"XD1vDtrRQFbLyKJaD1AlA": { "XD1vDtrRQFbLyKJaD1AlA": {
"title": "Error Handling / Retries", "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": [ "links": [
{ {
"title": "How To Improve Your Backend By Adding Retries to Your API Calls", "title": "How To Improve Your Backend By Adding Retries to Your API Calls",
@ -1311,7 +1359,7 @@
"type": "article" "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", "url": "https://www.youtube.com/watch?v=Gly94hp3Eec",
"type": "video" "type": "video"
} }
@ -1343,12 +1391,12 @@
"type": "article" "type": "article"
}, },
{ {
"title": "What are websockets?", "title": "What are Web Sockets?",
"url": "https://www.pubnub.com/guides/websockets/", "url": "https://www.pubnub.com/guides/websockets/",
"type": "article" "type": "article"
}, },
{ {
"title": "How web sockets work", "title": "How Web Sockets Work",
"url": "https://www.youtube.com/watch?v=pnj3Jbho5Ck", "url": "https://www.youtube.com/watch?v=pnj3Jbho5Ck",
"type": "video" "type": "video"
} }
@ -1372,20 +1420,20 @@
}, },
"yvdfoly5WHHTq2Puss355": { "yvdfoly5WHHTq2Puss355": {
"title": "Standards and Compliance", "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": [ "links": [
{ {
"title": "What is API compliance?", "title": "What is API Compliance?",
"url": "https://tyk.io/learning-center/api-compliance/", "url": "https://tyk.io/learning-center/api-compliance/",
"type": "article" "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", "url": "https://www.traceable.ai/blog-post/achieve-api-compliance",
"type": "article" "type": "article"
}, },
{ {
"title": "REST API standards", "title": "REST API Standards",
"url": "https://www.integrate.io/blog/rest-api-standards/", "url": "https://www.integrate.io/blog/rest-api-standards/",
"type": "article" "type": "article"
} }
@ -1412,17 +1460,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:", "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": [ "links": [
{ {
"title": "What is the API lifecycle?", "title": "What is the API Lifecycle?",
"url": "https://www.postman.com/api-platform/api-lifecycle/", "url": "https://www.postman.com/api-platform/api-lifecycle/",
"type": "article" "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/", "url": "https://swagger.io/blog/api-strategy/what-is-api-lifecycle-management/",
"type": "article" "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", "url": "https://www.youtube.com/watch?v=VxY_cz0VQXE",
"type": "video" "type": "video"
} }
@ -1491,5 +1539,10 @@
"type": "article" "type": "article"
} }
] ]
},
"grpc-apis@1DrqtOwxCuFtWQXQ6ZALp.md": {
"title": "gRPC APIs",
"description": "",
"links": []
} }
} }

@ -78,7 +78,7 @@
"type": "article" "type": "article"
}, },
{ {
"title": "Libra Office", "title": "LibreOffice",
"url": "https://www.libreoffice.org/", "url": "https://www.libreoffice.org/",
"type": "article" "type": "article"
} }
@ -1058,7 +1058,7 @@
}, },
"lwSFIbIX-xOZ0QK2sGFb1": { "lwSFIbIX-xOZ0QK2sGFb1": {
"title": "Router", "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": [ "links": [
{ {
"title": "What is a Router", "title": "What is a Router",
@ -1069,6 +1069,16 @@
"title": "What is a router and how does it work?", "title": "What is a router and how does it work?",
"url": "https://www.youtube.com/watch?v=UIJzHLpG9bM", "url": "https://www.youtube.com/watch?v=UIJzHLpG9bM",
"type": "video" "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"
} }
] ]
}, },

@ -858,6 +858,11 @@
"url": "https://nginx.org/", "url": "https://nginx.org/",
"type": "article" "type": "article"
}, },
{
"title": "Basic NGINX Setup on Ubuntu: Guide to a Functional and Secure Website Serving",
"url": "https://swissmade.host/en/blog/basic-nginx-setup-ubuntu-guide-to-a-functional-and-secure-website-serving",
"type": "article"
},
{ {
"title": "Explore top posts about Nginx", "title": "Explore top posts about Nginx",
"url": "https://app.daily.dev/tags/nginx?ref=roadmapsh", "url": "https://app.daily.dev/tags/nginx?ref=roadmapsh",
@ -1504,11 +1509,6 @@
"title": "White / Grey Listing", "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:", "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": [ "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", "title": "Detailed Introduction to greylisting",
"url": "https://en.wikipedia.org/wiki/Greylisting_(email)", "url": "https://en.wikipedia.org/wiki/Greylisting_(email)",
@ -2114,6 +2114,11 @@
"title": "GitHub Actions", "title": "GitHub Actions",
"description": "GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform integrated directly into GitHub repositories. It allows developers to automate software workflows, including building, testing, and deploying applications. Actions are defined in YAML files and triggered by various GitHub events such as pushes, pull requests, or scheduled tasks. The platform provides a marketplace of pre-built actions and supports custom actions. GitHub Actions offers matrix builds, parallel job execution, and supports multiple operating systems and languages. It integrates seamlessly with GitHub's ecosystem, facilitating automated code review, issue tracking, and project management. This tool enables developers to implement DevOps practices efficiently within their GitHub workflow, enhancing productivity and code quality.\n\nVisit the following resources to learn more:", "description": "GitHub Actions is a continuous integration and continuous delivery (CI/CD) platform integrated directly into GitHub repositories. It allows developers to automate software workflows, including building, testing, and deploying applications. Actions are defined in YAML files and triggered by various GitHub events such as pushes, pull requests, or scheduled tasks. The platform provides a marketplace of pre-built actions and supports custom actions. GitHub Actions offers matrix builds, parallel job execution, and supports multiple operating systems and languages. It integrates seamlessly with GitHub's ecosystem, facilitating automated code review, issue tracking, and project management. This tool enables developers to implement DevOps practices efficiently within their GitHub workflow, enhancing productivity and code quality.\n\nVisit the following resources to learn more:",
"links": [ "links": [
{
"title": "GitHub Actions Certification – Full Course to PASS the Exam",
"url": "https://www.youtube.com/watch?v=Tz7FsunBbfQ",
"type": "course"
},
{ {
"title": "Learn Git & GitHub", "title": "Learn Git & GitHub",
"url": "https://roadmap.sh/git-github", "url": "https://roadmap.sh/git-github",

@ -874,4 +874,4 @@
"description": "If you remember, earlier in the roadmap, you manually logged into the AWS console and had to setup the services. Now that you know terraform, go ahead and automate the process of creating the infrastructure for your application using terraform and with that your deployments will be fully automated i.e., you should have:\n\n* Infrastructure setup using terraform\n* Provisioning using Ansible\n* CI/CD using GitHub Actions\n* Monitoring using Monit\n\nAnd that is it! You have successfully completed the roadmap and are now a full-stack developer. Congratulations! 🎉\n\nWhat's next?\n------------\n\nGo ahead and build something cool! Share your learnings with the community and help others learn as well. If you have any questions, feel free to join our [discord server](https://roadmap.sh/discord) and ask away!", "description": "If you remember, earlier in the roadmap, you manually logged into the AWS console and had to setup the services. Now that you know terraform, go ahead and automate the process of creating the infrastructure for your application using terraform and with that your deployments will be fully automated i.e., you should have:\n\n* Infrastructure setup using terraform\n* Provisioning using Ansible\n* CI/CD using GitHub Actions\n* Monitoring using Monit\n\nAnd that is it! You have successfully completed the roadmap and are now a full-stack developer. Congratulations! 🎉\n\nWhat's next?\n------------\n\nGo ahead and build something cool! Share your learnings with the community and help others learn as well. If you have any questions, feel free to join our [discord server](https://roadmap.sh/discord) and ask away!",
"links": [] "links": []
} }
} }

@ -3,6 +3,16 @@
"title": "Swift (Recommended)", "title": "Swift (Recommended)",
"description": "Swift is a powerful and intuitive programming language developed by Apple for building iOS, macOS, watchOS, and tvOS applications. It combines modern language features like type safety, concise syntax, and performance optimizations, making it easy to write and maintain.\n\nSwift is designed to be safe, fast, and interactive, offering a more productive coding experience compared to Objective-C.\n\nVisit the following resources to learn more:", "description": "Swift is a powerful and intuitive programming language developed by Apple for building iOS, macOS, watchOS, and tvOS applications. It combines modern language features like type safety, concise syntax, and performance optimizations, making it easy to write and maintain.\n\nSwift is designed to be safe, fast, and interactive, offering a more productive coding experience compared to Objective-C.\n\nVisit the following resources to learn more:",
"links": [ "links": [
{
"title": "Programiz - Swift Programming Tutorials",
"url": "https://www.programiz.com/swift-programming",
"type": "course"
},
{
"title": "HackingWithSwift - 100 Days of Swift",
"url": "https://www.hackingwithswift.com/100",
"type": "course"
},
{ {
"title": "Swift Documentation", "title": "Swift Documentation",
"url": "https://www.swift.org/documentation/", "url": "https://www.swift.org/documentation/",

@ -448,6 +448,11 @@
"url": "https://blog.bitsrc.io/types-of-native-errors-in-javascript-you-must-know-b8238d40e492", "url": "https://blog.bitsrc.io/types-of-native-errors-in-javascript-you-must-know-b8238d40e492",
"type": "article" "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", "title": "Explore top posts about JavaScript",
"url": "https://app.daily.dev/tags/javascript?ref=roadmapsh", "url": "https://app.daily.dev/tags/javascript?ref=roadmapsh",
@ -463,6 +468,11 @@
"title": "Node.js Errors - Official Docs", "title": "Node.js Errors - Official Docs",
"url": "https://nodejs.org/api/errors.html#errors_class_systemerror", "url": "https://nodejs.org/api/errors.html#errors_class_systemerror",
"type": "article" "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"
} }
] ]
}, },

@ -1382,7 +1382,7 @@
}, },
"SSnzpijHLO5_l7DNEoMfx": { "SSnzpijHLO5_l7DNEoMfx": {
"title": "nose", "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": [ "links": [
{ {
"title": "Introduction to Nose", "title": "Introduction to Nose",

@ -244,7 +244,7 @@
"links": [ "links": [
{ {
"title": "Lifecycle of Reactive Effects", "title": "Lifecycle of Reactive Effects",
"url": "https://react.dev/learn/lifecycle-of-reactive-effectsv", "url": "https://react.dev/learn/lifecycle-of-reactive-effects",
"type": "article" "type": "article"
}, },
{ {
@ -479,112 +479,22 @@
}, },
"dgoDNDtW2_q9R9yhkXrcz": { "dgoDNDtW2_q9R9yhkXrcz": {
"title": "useCallback", "title": "useCallback",
"description": "React also has a lot of hooks that allow you to write more efficient React code.\n\nVisit the following resources to learn more:", "description": "`useCallback` is a React hook that returns a memoized version of a callback function. It's used to optimize performance by preventing unnecessary re-renders. Specifically, it helps avoid recreating functions when their dependencies haven't changed, which can be useful when passing callbacks to child components that rely on referential equality to prevent re-rendering.\n\nVisit the following resources to learn more:",
"links": [ "links": [
{ {
"title": "useCallback", "title": "React Documentation on useCallback",
"url": "https://react.dev/reference/react/useCallback", "url": "https://react.dev/reference/react/useCallback",
"type": "article" "type": "article"
}, },
{ {
"title": "useContext", "title": "useCallback Explained in Depth",
"url": "https://react.dev/reference/react/useContext", "url": "https://kentcdodds.com/blog/usememo-and-usecallback",
"type": "article"
},
{
"title": "useDebugValue",
"url": "https://react.dev/reference/react/useDebugValue",
"type": "article"
},
{
"title": "useDeferredValue",
"url": "https://react.dev/reference/react/useDeferredValue",
"type": "article"
},
{
"title": "useEffect",
"url": "https://react.dev/reference/react/useEffect",
"type": "article"
},
{
"title": "useId",
"url": "https://react.dev/reference/react/useId",
"type": "article"
},
{
"title": "useImperativeHandle",
"url": "https://react.dev/reference/react/useImperativeHandle",
"type": "article"
},
{
"title": "useInsertionEffect",
"url": "https://react.dev/reference/react/useInsertionEffect",
"type": "article"
},
{
"title": "useLayoutEffect",
"url": "https://react.dev/reference/react/useLayoutEffect",
"type": "article"
},
{
"title": "useReducer",
"url": "https://react.dev/reference/react/useReducer",
"type": "article"
},
{
"title": "useRef",
"url": "https://react.dev/reference/react/useRef",
"type": "article"
},
{
"title": "useState",
"url": "https://react.dev/reference/react/useState",
"type": "article"
},
{
"title": "useSyncExternalStore",
"url": "https://react.dev/reference/react/useSyncExternalStore",
"type": "article"
},
{
"title": "useTransition",
"url": "https://react.dev/reference/react/useTransition",
"type": "article"
},
{
"title": "useCallback Hook by Example",
"url": "https://www.robinwieruch.de/react-usecallback-hook/",
"type": "article"
},
{
"title": "useMemo Hook by Example",
"url": "https://www.robinwieruch.de/react-usememo-hook/",
"type": "article"
},
{
"title": "useContext Hook by Example",
"url": "https://www.robinwieruch.de/react-usecontext-hook/",
"type": "article"
},
{
"title": "useReducer Hook by Example",
"url": "https://www.robinwieruch.de/react-usereducer-hook/",
"type": "article"
},
{
"title": "useReducer vs useState Hook",
"url": "https://www.robinwieruch.de/react-usereducer-vs-usestate/",
"type": "article" "type": "article"
}, },
{ {
"title": "Explore top posts about React Hooks", "title": "useCallback Hook: An Introductory Guide",
"url": "https://app.daily.dev/tags/react-hooks?ref=roadmapsh", "url": "https://dmitripavlutin.com/dont-overuse-react-usecallback/",
"type": "article" "type": "article"
},
{
"title": "useDefferedValue Hook video",
"url": "https://www.youtube.com/watch?v=jCGMedd6IWA",
"type": "video"
} }
] ]
}, },
@ -672,27 +582,6 @@
} }
] ]
}, },
"2zrN65JZhCyNimi33g78f": {
"title": "useCallback",
"description": "`useCallback` is a React hook that returns a memoized version of a callback function. It's used to optimize performance by preventing unnecessary re-renders. Specifically, it helps avoid recreating functions when their dependencies haven't changed, which can be useful when passing callbacks to child components that rely on referential equality to prevent re-rendering.\n\nVisit the following resources to learn more:",
"links": [
{
"title": "React Documentation on useCallback",
"url": "https://react.dev/reference/react/useCallback",
"type": "article"
},
{
"title": "useCallback Explained in Depth",
"url": "https://kentcdodds.com/blog/usememo-and-usecallback",
"type": "article"
},
{
"title": "useCallback Hook: An Introductory Guide",
"url": "https://dmitripavlutin.com/dont-overuse-react-usecallback/",
"type": "article"
}
]
},
"FK59Zsm5ENA9g11XWCan_": { "FK59Zsm5ENA9g11XWCan_": {
"title": "useState", "title": "useState",
"description": "`useState` hook is used to manage the state of a component in functional components. Calling `useState` returns an array with two elements: the current state value and a function to update the state.\n\nVisit the following resources to learn more:", "description": "`useState` hook is used to manage the state of a component in functional components. Calling `useState` returns an array with two elements: the current state value and a function to update the state.\n\nVisit the following resources to learn more:",
@ -1376,6 +1265,11 @@
"title": "Explore top posts about Jest", "title": "Explore top posts about Jest",
"url": "https://app.daily.dev/tags/jest?ref=roadmapsh", "url": "https://app.daily.dev/tags/jest?ref=roadmapsh",
"type": "article" "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"
} }
] ]
}, },

@ -670,7 +670,7 @@
"description": "`SCARD` is a Redis command used to get the number of members in a set, it returns the cardinality of the specified set, which is the total count of unique elements it contains. If the set does not exist, `SCARD` returns `0`. This command is useful for quickly determining the size of a set, allowing applications to make decisions based on the number of unique items, such as checking user participation in a campaign or the count of unique tags in a system.\n\nLearn more from the following resources:", "description": "`SCARD` is a Redis command used to get the number of members in a set, it returns the cardinality of the specified set, which is the total count of unique elements it contains. If the set does not exist, `SCARD` returns `0`. This command is useful for quickly determining the size of a set, allowing applications to make decisions based on the number of unique items, such as checking user participation in a campaign or the count of unique tags in a system.\n\nLearn more from the following resources:",
"links": [ "links": [
{ {
"title": "", "title": "SCARD Documentation",
"url": "https://redis.io/docs/latest/commands/scard/", "url": "https://redis.io/docs/latest/commands/scard/",
"type": "article" "type": "article"
} }
@ -829,7 +829,7 @@
}, },
"3pFChX6YIItrBz9lxu4XM": { "3pFChX6YIItrBz9lxu4XM": {
"title": "ZRANGE", "title": "ZRANGE",
"description": "The ZRANGE command can perform multiple range queries including by rank, by score or by lexiographical order. The order of elements returned are always from lowest to highest and any score ties are resolved using reverse lexiographical ordering.\n\nLearn more from the following resourceS:", "description": "The ZRANGE command can perform multiple range queries including by rank, by score or by lexiographical order. The order of elements returned are always from lowest to highest and any score ties are resolved using reverse lexiographical ordering.\n\nLearn more from the following resources:",
"links": [ "links": [
{ {
"title": "ZRANGE Documentation", "title": "ZRANGE Documentation",
@ -1349,8 +1349,8 @@
"description": "The `EXEC` command in Redis is used to execute a transaction that has been initiated with the `MULTI` command. When a transaction is started with `MULTI`, subsequent commands are queued but not executed immediately. Calling `EXEC` will execute all the commands in the transaction atomically, ensuring that either all commands succeed or none are applied. If any command in the transaction fails, the entire transaction is aborted. This command is essential for maintaining data integrity when performing a series of operations that should be treated as a single unit of work.\n\nLearn more from the following resources:", "description": "The `EXEC` command in Redis is used to execute a transaction that has been initiated with the `MULTI` command. When a transaction is started with `MULTI`, subsequent commands are queued but not executed immediately. Calling `EXEC` will execute all the commands in the transaction atomically, ensuring that either all commands succeed or none are applied. If any command in the transaction fails, the entire transaction is aborted. This command is essential for maintaining data integrity when performing a series of operations that should be treated as a single unit of work.\n\nLearn more from the following resources:",
"links": [ "links": [
{ {
"title": "", "title": "EXEC Documentation",
"url": "https://redis.io/docs/latest/commands/eval/", "url": "https://redis.io/docs/latest/commands/exec/",
"type": "article" "type": "article"
}, },
{ {
@ -1514,12 +1514,12 @@
"description": "Persistence refers to the writing of data to durable storage, such as a solid-state disk (SSD). Redis provides a range of persistence options of which AOF (Append Only File) is one of the options. AOF persistence logs every write operation received by the server. These operations can then be replayed again at server startup, reconstructing the original dataset.The rewrite will create a small optimized version of the current Append Only File.\n\nLearn more from the following resources:", "description": "Persistence refers to the writing of data to durable storage, such as a solid-state disk (SSD). Redis provides a range of persistence options of which AOF (Append Only File) is one of the options. AOF persistence logs every write operation received by the server. These operations can then be replayed again at server startup, reconstructing the original dataset.The rewrite will create a small optimized version of the current Append Only File.\n\nLearn more from the following resources:",
"links": [ "links": [
{ {
"title": "Persistence in redis", "title": "Persistence in Redis",
"url": "https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/", "url": "https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/",
"type": "article" "type": "article"
}, },
{ {
"title": "Enabling redis persistence", "title": "Enabling Redis persistence",
"url": "https://youtu.be/qBKnUeR0p10?si=TPvcFtpFMcTZB-Be", "url": "https://youtu.be/qBKnUeR0p10?si=TPvcFtpFMcTZB-Be",
"type": "video" "type": "video"
} }

@ -10,7 +10,7 @@
"links": [ "links": [
{ {
"title": "What is Software Architecture in Software Engineering?", "title": "What is Software Architecture in Software Engineering?",
"url": "https://www.future-processing.com/blog/what-is-software-architecture-in-software-engineering/", "url": "https://www.computer.org/resources/software-architecture",
"type": "article" "type": "article"
}, },
{ {

@ -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) - [Computer Science Roadmap](https://roadmap.sh/computer-science)
- [Data Structures and Algorithms Roadmap](https://roadmap.sh/datastructures-and-algorithms) - [Data Structures and Algorithms Roadmap](https://roadmap.sh/datastructures-and-algorithms)
- [AI and Data Scientist Roadmap](https://roadmap.sh/ai-data-scientist) - [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) - [AWS Roadmap](https://roadmap.sh/aws)
- [Linux Roadmap](https://roadmap.sh/linux) - [Linux Roadmap](https://roadmap.sh/linux)
- [Terraform Roadmap](https://roadmap.sh/terraform) - [Terraform Roadmap](https://roadmap.sh/terraform)

@ -4,6 +4,7 @@ import Cookies from 'js-cookie';
import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt'; import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt';
import { httpGet } from '../../lib/http'; import { httpGet } from '../../lib/http';
import { Spinner } from '../ReactIcons/Spinner.tsx'; import { Spinner } from '../ReactIcons/Spinner.tsx';
import { triggerUtmRegistration } from '../../lib/browser.ts';
type GitHubButtonProps = { type GitHubButtonProps = {
isDisabled?: boolean; isDisabled?: boolean;
@ -46,6 +47,8 @@ export function GitHubButton(props: GitHubButtonProps) {
return; return;
} }
triggerUtmRegistration();
let redirectUrl = '/'; let redirectUrl = '/';
const gitHubRedirectAt = localStorage.getItem(GITHUB_REDIRECT_AT); const gitHubRedirectAt = localStorage.getItem(GITHUB_REDIRECT_AT);
const lastPageBeforeGithub = localStorage.getItem(GITHUB_LAST_PAGE); const lastPageBeforeGithub = localStorage.getItem(GITHUB_LAST_PAGE);

@ -4,6 +4,10 @@ import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt';
import { httpGet } from '../../lib/http'; import { httpGet } from '../../lib/http';
import { Spinner } from '../ReactIcons/Spinner.tsx'; import { Spinner } from '../ReactIcons/Spinner.tsx';
import { GoogleIcon } from '../ReactIcons/GoogleIcon.tsx'; import { GoogleIcon } from '../ReactIcons/GoogleIcon.tsx';
import {
getStoredUtmParams,
triggerUtmRegistration,
} from '../../lib/browser.ts';
type GoogleButtonProps = { type GoogleButtonProps = {
isDisabled?: boolean; isDisabled?: boolean;
@ -37,6 +41,8 @@ export function GoogleButton(props: GoogleButtonProps) {
}`, }`,
) )
.then(({ response, error }) => { .then(({ response, error }) => {
const utmParams = getStoredUtmParams();
if (!response?.token) { if (!response?.token) {
setError(error?.message || 'Something went wrong.'); setError(error?.message || 'Something went wrong.');
setIsLoading(false); setIsLoading(false);
@ -45,6 +51,8 @@ export function GoogleButton(props: GoogleButtonProps) {
return; return;
} }
triggerUtmRegistration();
let redirectUrl = '/'; let redirectUrl = '/';
const googleRedirectAt = localStorage.getItem(GOOGLE_REDIRECT_AT); const googleRedirectAt = localStorage.getItem(GOOGLE_REDIRECT_AT);
const lastPageBeforeGoogle = localStorage.getItem(GOOGLE_LAST_PAGE); 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 // For non authentication pages, we want to redirect back to the page
// the user was on before they clicked the social login button // the user was on before they clicked the social login button
if (!['/login', '/signup'].includes(window.location.pathname)) { if (!['/login', '/signup'].includes(window.location.pathname)) {
const pagePath = ['/respond-invite', '/befriend', '/r', '/ai'].includes( const pagePath = [
window.location.pathname, '/respond-invite',
) '/befriend',
'/r',
'/ai',
].includes(window.location.pathname)
? window.location.pathname + window.location.search ? window.location.pathname + window.location.search
: window.location.pathname; : window.location.pathname;

@ -4,6 +4,7 @@ import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt';
import { httpGet } from '../../lib/http'; import { httpGet } from '../../lib/http';
import { Spinner } from '../ReactIcons/Spinner.tsx'; import { Spinner } from '../ReactIcons/Spinner.tsx';
import { LinkedInIcon } from '../ReactIcons/LinkedInIcon.tsx'; import { LinkedInIcon } from '../ReactIcons/LinkedInIcon.tsx';
import { triggerUtmRegistration } from '../../lib/browser.ts';
type LinkedInButtonProps = { type LinkedInButtonProps = {
isDisabled?: boolean; isDisabled?: boolean;
@ -45,6 +46,8 @@ export function LinkedInButton(props: LinkedInButtonProps) {
return; return;
} }
triggerUtmRegistration();
let redirectUrl = '/'; let redirectUrl = '/';
const linkedInRedirectAt = localStorage.getItem(LINKEDIN_REDIRECT_AT); const linkedInRedirectAt = localStorage.getItem(LINKEDIN_REDIRECT_AT);
const lastPageBeforeLinkedIn = localStorage.getItem(LINKEDIN_LAST_PAGE); 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 // For non authentication pages, we want to redirect back to the page
// the user was on before they clicked the social login button // the user was on before they clicked the social login button
if (!['/login', '/signup'].includes(window.location.pathname)) { if (!['/login', '/signup'].includes(window.location.pathname)) {
const pagePath = ['/respond-invite', '/befriend', '/r', '/ai'].includes( const pagePath = [
window.location.pathname, '/respond-invite',
) '/befriend',
'/r',
'/ai',
].includes(window.location.pathname)
? window.location.pathname + window.location.search ? window.location.pathname + window.location.search
: window.location.pathname; : window.location.pathname;

@ -4,6 +4,7 @@ import { httpPost } from '../../lib/http';
import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt'; import { TOKEN_COOKIE_NAME, setAuthToken } from '../../lib/jwt';
import { Spinner } from '../ReactIcons/Spinner'; import { Spinner } from '../ReactIcons/Spinner';
import { ErrorIcon2 } from '../ReactIcons/ErrorIcon2'; import { ErrorIcon2 } from '../ReactIcons/ErrorIcon2';
import { triggerUtmRegistration } from '../../lib/browser.ts';
export function TriggerVerifyAccount() { export function TriggerVerifyAccount() {
const [isLoading, setIsLoading] = useState(true); const [isLoading, setIsLoading] = useState(true);
@ -26,6 +27,8 @@ export function TriggerVerifyAccount() {
return; return;
} }
triggerUtmRegistration();
setAuthToken(response.token); setAuthToken(response.token);
window.location.href = '/'; window.location.href = '/';
}) })

@ -201,7 +201,7 @@ export function ProgressStack(props: ProgressStackProps) {
emptyLinkHref={'/roadmaps'} emptyLinkHref={'/roadmaps'}
emptyLinkText={'Explore Roadmaps'} emptyLinkText={'Explore Roadmaps'}
> >
<div className="grid grid-cols-2 gap-2"> <div className="grid flex-grow auto-rows-min grid-cols-2 items-start gap-2">
{userProgressesToShow.length > 0 && ( {userProgressesToShow.length > 0 && (
<> <>
{userProgressesToShow.map((progress) => { {userProgressesToShow.map((progress) => {
@ -239,6 +239,14 @@ export function ProgressStack(props: ProgressStackProps) {
/> />
)} )}
</div> </div>
<a
href={'/home'}
className="flex w-full flex-row items-center justify-center gap-2 rounded-md bg-gray-200 py-2 text-sm text-gray-700 hover:bg-gray-300 hover:text-black transition-colors"
>
<Map size={16} />
View All Roadmaps
</a>
</ProgressLane> </ProgressLane>
</div> </div>

@ -6,6 +6,7 @@ import { X } from 'lucide-react';
import { setViewSponsorCookie } from '../lib/jwt'; import { setViewSponsorCookie } from '../lib/jwt';
import { isMobile } from '../lib/is-mobile'; import { isMobile } from '../lib/is-mobile';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import { getUrlUtmParams } from '../lib/browser.ts';
export type PageSponsorType = { export type PageSponsorType = {
company: string; company: string;
@ -50,6 +51,16 @@ export function PageSponsor(props: PageSponsorProps) {
const [sponsorId, setSponsorId] = useState<string | null>(null); const [sponsorId, setSponsorId] = useState<string | null>(null);
const [sponsor, setSponsor] = useState<PageSponsorType>(); const [sponsor, setSponsor] = useState<PageSponsorType>();
useEffect(() => {
const foundUtmParams = getUrlUtmParams();
if (!foundUtmParams.utmSource) {
return;
}
localStorage.setItem('utm_params', JSON.stringify(foundUtmParams));
}, []);
const loadSponsor = async () => { const loadSponsor = async () => {
const currentPath = window.location.pathname; const currentPath = window.location.pathname;
if ( if (
@ -59,7 +70,7 @@ export function PageSponsor(props: PageSponsorProps) {
currentPath.startsWith('/guides') || currentPath.startsWith('/guides') ||
currentPath.startsWith('/videos') || currentPath.startsWith('/videos') ||
currentPath.startsWith('/account') || currentPath.startsWith('/account') ||
currentPath.startsWith('/team') currentPath.startsWith('/team/')
) { ) {
return; return;
} }
@ -127,6 +138,8 @@ export function PageSponsor(props: PageSponsorProps) {
const { url, title, imageUrl, description, company, gaLabel } = sponsor; const { url, title, imageUrl, description, company, gaLabel } = sponsor;
const isRoadmapAd = title.toLowerCase() === 'advertise with us!';
return ( return (
<a <a
href={url} href={url}
@ -165,10 +178,16 @@ export function PageSponsor(props: PageSponsorProps) {
<span className="mb-0.5 block font-semibold">{title}</span> <span className="mb-0.5 block font-semibold">{title}</span>
<span className="block text-gray-500">{description}</span> <span className="block text-gray-500">{description}</span>
</span> </span>
<span className="sponsor-footer hidden sm:block">Partner Content</span> {!isRoadmapAd && (
<span className="block pb-1 text-center text-[10px] uppercase text-gray-400 sm:hidden"> <>
Partner Content <span className="sponsor-footer hidden sm:block">
</span> Partner Content
</span>
<span className="block pb-1 text-center text-[10px] uppercase text-gray-400 sm:hidden">
Partner Content
</span>
</>
)}
</span> </span>
</a> </a>
); );

@ -16,3 +16,4 @@ Optimized images load faster in your browser and consume less data.
- [Cloudinary - Image Analysis Tool](https://webspeedtest.cloudinary.com) - [Cloudinary - Image Analysis Tool](https://webspeedtest.cloudinary.com)
- [ImageEngine - Image Webpage Loading Test](https://demo.imgeng.in) - [ImageEngine - Image Webpage Loading Test](https://demo.imgeng.in)
- [SVGOMG - Optimize SVG vector graphics files](https://jakearchibald.github.io/svgomg/) - [SVGOMG - Optimize SVG vector graphics files](https://jakearchibald.github.io/svgomg/)
- [Minipic - Convert Images Super Fast](https://minipic.app/)

@ -0,0 +1,22 @@
---
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"
"Team Dashboard": "https://assets.roadmap.sh/guest/team-dashboard.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)
- 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
ML Engineer roadmap and team dashboards are coming up next. Stay tuned!

@ -7,7 +7,7 @@ seo:
title: 'How to become a Front-End Developer in 7 Steps' 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!' 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' ogImageUrl: 'https://assets.roadmap.sh/guest/how-to-become-frontend-developer-i23nx.jpg'
isNew: true isNew: false
type: 'textual' type: 'textual'
date: 2024-08-15 date: 2024-08-15
sitemap: sitemap:

@ -19,7 +19,7 @@ roadmapIds:
- 'devops' - 'devops'
--- ---
The goal of this project is to setup a scheduled workflow to backup a Database every 12 hours and upload the backup to [Clouodflare R2](https://developers.cloudflare.com/r2/) which has a free tier for storage. The goal of this project is to setup a scheduled workflow to backup a Database every 12 hours and upload the backup to [Cloudflare R2](https://developers.cloudflare.com/r2/) which has a free tier for storage.
## Requirements ## Requirements
@ -43,4 +43,4 @@ Write a script to download the latest backup from R2 and restore the database.
<hr /> <hr />
Database backups are essential to ensure that you can restore your data in case of a disaster. This project will give you hands on experience on how to setup a scheduled workflow to backup a database and how to restore it from a backup. Database backups are essential to ensure that you can restore your data in case of a disaster. This project will give you hands on experience on how to setup a scheduled workflow to backup a database and how to restore it from a backup.

@ -22,6 +22,7 @@ roadmapIds:
- 'java' - 'java'
- 'golang' - 'golang'
- 'spring-boot' - '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. 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.

@ -22,6 +22,7 @@ roadmapIds:
- 'java' - 'java'
- 'golang' - 'golang'
- 'spring-boot' - '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. 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.

@ -23,6 +23,7 @@ roadmapIds:
- 'java' - 'java'
- 'golang' - 'golang'
- 'spring-boot' - '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. 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.

@ -22,6 +22,7 @@ roadmapIds:
- 'java' - 'java'
- 'golang' - 'golang'
- 'spring-boot' - '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. 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.

@ -22,6 +22,7 @@ roadmapIds:
- 'java' - 'java'
- 'golang' - 'golang'
- 'spring-boot' - '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. 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.

@ -22,6 +22,7 @@ roadmapIds:
- 'java' - 'java'
- 'golang' - 'golang'
- 'spring-boot' - '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. 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.

@ -6,4 +6,4 @@ Learn more from the following resources:
- [@article@What does an AI Engineer do?](https://www.codecademy.com/resources/blog/what-does-an-ai-engineer-do/) - [@article@What does an AI Engineer do?](https://www.codecademy.com/resources/blog/what-does-an-ai-engineer-do/)
- [@article@What is an ML Engineer?](https://www.coursera.org/articles/what-is-machine-learning-engineer) - [@article@What is an ML Engineer?](https://www.coursera.org/articles/what-is-machine-learning-engineer)
- [@video@AI vs ML](https://www.youtube.com/watch?v=4RixMPF4xis) - [@video@AI vs ML](https://www.youtube.com/watch?v=4RixMPF4xis)

@ -1,8 +1,8 @@
# Hugging Face Hub # Hugging Face Hub
The Hugging Face Hub is a platform with over 900k models, 200k datasets and over 300k demo apps that are all open source and available to the public. The Hugging Face Hub serves as a central place where anyone can explore, collaborate and experiment with Machine Learning. 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: Learn more from the following resources:
- [@official@Hugging Face Hub Documentation](https://huggingface.co/docs/hub/en/index) - [@official@Documentation](https://huggingface.co/docs/hub/en/index)
- [@official@Hugging Face Quick Start](https://huggingface.co/docs/huggingface_hub/quick-start) - [@course@nlp-official](https://huggingface.co/learn/nlp-course/en/chapter4/1)

@ -1,8 +1,9 @@
# Hugging Face Tasks # Hugging Face Tasks
On Hugging Face, the models provided are split into "tasks" such as Image Recognition, Text to Video and Keypoint Detection. Hugging Face provides easy-to-integrate models for these tasks, enabling developers to build, fine-tune, and deploy solutions across different domains. 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: Learn more from the following resources:
- [@official@Hugging Face Tasks](https://huggingface.co/tasks) - [@official@Task and Model](https://huggingface.co/learn/computer-vision-course/en/unit4/multimodal-models/tasks-models-part1)
- [@official@Hugging Face Tasks NPM Package](https://www.npmjs.com/package/@huggingface/tasks) - [@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)

@ -6,4 +6,4 @@ Learn more from the following resources:
- [@official@Hugging Face Website](https://huggingface.co) - [@official@Hugging Face Website](https://huggingface.co)
- [@video@What is Hugging Face? - Machine Learning Hub Explained](https://www.youtube.com/watch?v=1AUjKfpRZVo) - [@video@What is Hugging Face? - Machine Learning Hub Explained](https://www.youtube.com/watch?v=1AUjKfpRZVo)
- [@course@Hugging Face Official Video Course](https://www.youtube.com/watch?v=00GKzGyWFEs&list=PLo2EIpI_JMQvWfQndUesu0nPBAtZ9gP1o) - [@course@Hugging Face Official Video Course](https://www.youtube.com/watch?v=00GKzGyWFEs&list=PLo2EIpI_JMQvWfQndUesu0nPBAtZ9gP1o)

@ -1,8 +1,8 @@
# Inference SDK # Inference SDK
The Hugging Face Serverless Inference API offers a fast and free way to explore thousands of models for a variety of tasks. It supports quick integration of Hugging Face models into applications, enabling low-latency, scalable inference for tasks like text generation, sentiment analysis, and image classification. The SDK can be used locally or with cloud services, including Hugging Face's own Inference API and AWS SageMaker, simplifying the deployment process across various platforms. 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: Learn more from the following resources:
- [@official@API Inference](https://huggingface.co/docs/api-inference/en/index) - [@official@Inference](https://huggingface.co/docs/huggingface_hub/en/package_reference/inference_client)
- [@video@How to Use Hugging Face Inference API](https://www.youtube.com/watch?app=desktop&v=85FVwWPg63Q) - [@article@Endpoint Setup](https://www.npmjs.com/package/@huggingface/inference)

@ -6,4 +6,4 @@ Learn more from the following resources:
- [@article@What is a large language model (LLM)?](https://www.cloudflare.com/en-gb/learning/ai/what-is-large-language-model/) - [@article@What is a large language model (LLM)?](https://www.cloudflare.com/en-gb/learning/ai/what-is-large-language-model/)
- [@video@How Large Langauge Models Work](https://www.youtube.com/watch?v=5sLYAQS9sWQ) - [@video@How Large Langauge Models Work](https://www.youtube.com/watch?v=5sLYAQS9sWQ)
- [@video@Large Language Models (LLMs) - Everything You NEED To Know](https://www.youtube.com/watch?v=osKyvYJ3PRM) - [@video@Large Language Models (LLMs) - Everything You NEED To Know](https://www.youtube.com/watch?v=osKyvYJ3PRM)

@ -5,4 +5,4 @@ Ollama provides a collection of large language models (LLMs) designed to run loc
Learn more from the following resources: Learn more from the following resources:
- [@official@Ollama Model Library](https://ollama.com/library) - [@official@Ollama Model Library](https://ollama.com/library)
- [@video@What are the different types of models? Ollama Course](https://www.youtube.com/watch?v=f4tXwCNP1Ac) - [@video@What are the different types of models? Ollama Course](https://www.youtube.com/watch?v=f4tXwCNP1Ac)

@ -1,8 +1,9 @@
# Ollama SDK # Ollama SDK
The Ollama SDK is a toolkit that enables developers to integrate and run large language models (LLMs) locally on personal devices or within applications. It provides APIs and utilities for deploying, managing, and interacting with models directly on laptops, desktops, or edge devices without needing cloud-based processing. The SDK simplifies the integration of AI capabilities, allowing developers to build applications for tasks like text generation, summarization, and question answering while maintaining data privacy and reducing latency. 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: Learn more from the following resources:
- [@official@Ollama Python & JS Libraries](https://ollama.com/blog/python-javascript-libraries) - [@article@SDK Provider](https://sdk.vercel.ai/providers/community-providers/ollama)
- [@video@Unlocking The Power Of AI: Creating Python Apps With Ollama!](https://www.youtube.com/watch?v=_4K20tOsXK8) - [@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)

@ -5,4 +5,4 @@ Ollama is a platform that offers large language models (LLMs) designed to run lo
Learn more from the following resources: Learn more from the following resources:
- [@official@Ollama Website](https://ollama.com/) - [@official@Ollama Website](https://ollama.com/)
- [@article@Ollama: Easily run LLMs locally](https://klu.ai/glossary/ollama) - [@article@Ollama: Easily run LLMs locally](https://klu.ai/glossary/ollama)

@ -5,4 +5,4 @@ Open-source models are freely available for customization and collaboration, pro
Learn more from the following resources: Learn more from the following resources:
- [@article@OpenAI vs. open-source LLM](https://ubiops.com/openai-vs-open-source-llm/) - [@article@OpenAI vs. open-source LLM](https://ubiops.com/openai-vs-open-source-llm/)
- [@video@AI360 | Open-Source vs Closed-Source LLMs](https://www.youtube.com/watch?v=710PDpuLwOc) - [@video@AI360 | Open-Source vs Closed-Source LLMs](https://www.youtube.com/watch?v=710PDpuLwOc)

@ -5,4 +5,4 @@ Open-source AI refers to AI models, tools, and frameworks that are freely availa
Learn more from the following resources: Learn more from the following resources:
- [@article@Open Source AI Is the Path Forward](https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/) - [@article@Open Source AI Is the Path Forward](https://about.fb.com/news/2024/07/open-source-ai-is-the-path-forward/)
- [@video@Should You Use Open Source Large Language Models?](https://www.youtube.com/watch?v=y9k-U9AuDeM) - [@video@Should You Use Open Source Large Language Models?](https://www.youtube.com/watch?v=y9k-U9AuDeM)

@ -4,4 +4,4 @@ Popular open-source models include BERT for NLP tasks like text classification a
- [@official@GPT-NEO](https://huggingface.co/docs/transformers/en/model_doc/gpt_neo) - [@official@GPT-NEO](https://huggingface.co/docs/transformers/en/model_doc/gpt_neo)
- [@opensource@OpenAI CLIP](https://github.com/openai/CLIP) - [@opensource@OpenAI CLIP](https://github.com/openai/CLIP)
- [@opensource@OpenAI Whisper](https://github.com/openai/whisper) - [@opensource@OpenAI Whisper](https://github.com/openai/whisper)

@ -5,4 +5,4 @@ Transformers.js is a JavaScript library that enables transformer models, like th
Learn more from the following resources: Learn more from the following resources:
- [@official@Transformers.js on Hugging Face](https://huggingface.co/docs/transformers.js/en/index) - [@official@Transformers.js on Hugging Face](https://huggingface.co/docs/transformers.js/en/index)
- [@video@How Transformer.js Can Help You Create Smarter AI In Your Browser](https://www.youtube.com/watch?v=MNJHu9zjpqg) - [@video@How Transformer.js Can Help You Create Smarter AI In Your Browser](https://www.youtube.com/watch?v=MNJHu9zjpqg)

@ -1,8 +1,10 @@
# What is an AI Engineer? # What is an AI Engineer?
An AI Engineer is a professional who designs, builds, and deploys artificial intelligence systems to solve real-world problems. They work on developing machine learning models, creating data pipelines, and integrating AI solutions into software applications. AI Engineers handle tasks like data preprocessing, model training, and optimization to ensure the systems perform accurately and efficiently. They also collaborate with data scientists, software developers, and other stakeholders to align AI projects with business goals, making sure that the solutions are scalable, reliable, and ethical. Their work spans various fields, including natural language processing, computer vision, and robotics. 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.
Learn more from the following resources: Visit the following resources to learn more:
- [@article@What Is an AI Engineer? (And How to Become One)](https://www.coursera.org/articles/ai-engineer) - [@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@The AI Engineer Role Today](https://www.splunk.com/en_us/blog/learn/ai-engineer-role.html) - [@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)

@ -3550,7 +3550,7 @@
"selectable": true "selectable": true
}, },
{ {
"id": "Wwd-0PjrtViMFWxRGaQey", "id": "1DrqtOwxCuFtWQXQ6ZALp",
"type": "subtopic", "type": "subtopic",
"position": { "position": {
"x": -198.46804969796983, "x": -198.46804969796983,

@ -5,4 +5,4 @@ API Gateways act as the main point of entry in a microservices architecture, oft
Learn more from the following resources: 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 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/) - [@article@What are API Gateways?](https://www.ibm.com/blog/api-gateway/)

@ -5,4 +5,4 @@ API Integration Patterns, in the context of API Design, refers to the common par
Learn more from the following resources: Learn more from the following resources:
- [@article@API Integration Patterns - Dzone](https://dzone.com/refcardz/api-integration-patterns) - [@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/)

@ -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: Learn more from the following resources:
- [@article@What is API key management?](https://www.akeyless.io/secrets-management-glossary/api-key-management/) - [@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) - [@article@API Key Management - Definition and Best Practices](https://infisical.com/blog/api-key-management)

@ -4,6 +4,6 @@ API Lifecycle Management is a crucial aspect in API design that oversees the pro
Learn more from the following resources: Learn more from the following resources:
- [@article@What is the API lifecycle?](https://www.postman.com/api-platform/api-lifecycle/) - [@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/) - [@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) - [@video@Day in the Lifecycle of an API](https://www.youtube.com/watch?v=VxY_cz0VQXE)

@ -4,5 +4,5 @@ When we talk about API design, one crucial aspect that demands our attention is
Learn more from the following resources: 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/)
- [@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)

@ -4,5 +4,5 @@ API Testing refers to the process of checking the functionality, reliability, pe
Learn more from the following resources: Learn more from the following resources:
- [@article@What is API testing?](https://www.postman.com/api-platform/api-testing/) - [@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/) - [@article@API Testing : What It is, How to Test & Best Practices](https://testsigma.com/guides/api-testing/)

@ -5,4 +5,4 @@ Attribute Based Access Control (ABAC) is a flexible and powerful authorization m
Learn more from the following resources: 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@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) - [@article@Attribute Based Access Control](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)

@ -1,3 +1,7 @@
# Authentication Methods in API Design # 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. 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/)

@ -1,3 +1,7 @@
# Authorization Methods in API Design # 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. 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)

@ -4,6 +4,7 @@ Basic Auth, short for Basic Authentication, is a simple method often used in API
Learn more from the following resources: 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 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 - Swagger.io](https://swagger.io/docs/specification/authentication/basic-authentication/)
- [@article@Basic Authentication - Twillio](https://www.twilio.com/docs/glossary/what-is-basic-authentication) - [@article@Basic Authentication - Twillio](https://www.twilio.com/docs/glossary/what-is-basic-authentication)

@ -4,5 +4,5 @@ Batch Processing refers to the method of handling bulk data requests in API desi
Learn more from the following resources: 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/) - [@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) - [@video@Stream vs Batch Processing Explained with Examples](https://www.youtube.com/watch?v=1xgBQTF24mU)

@ -4,5 +4,5 @@ API design has rapidly emerged as a vital component of software development. Whe
Learn more from the following resources: 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 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/) - [@article@Best Practices in API Design](https://swagger.io/resources/articles/best-practices-in-api-design/)

@ -4,6 +4,6 @@ Building JSON/RESTful APIs involves designing and implementing APIs that adhere
Learn more from the following resources: Learn more from the following resources:
- [@article@A specification for building APIs in JSON](https://jsonapi.org/) - [@official@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/) - [@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) - [@video@What is a REST API?](https://www.youtube.com/watch?v=lsMQRaeKNDk&t=170s)

@ -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: 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@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) - [@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) - [@video@Cache Systems Every Developer Should Know](https://www.youtube.com/watch?v=dGAgxozNWFE)

@ -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. 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.

@ -5,4 +5,4 @@ API design is a critical component of modern software development, enabling vari
Learn more from the following resources: Learn more from the following resources:
- [@article@API Vulnerability Overview](https://apimike.com/api-vulnerabilities) - [@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/) - [@article@Top API Vulnerabilities and 6 Ways to Mitigate Them](https://brightsec.com/blog/top-api-vulnerabilities-and-6-ways-to-mitigate-them/)

@ -5,4 +5,4 @@ In the context of API design, Content Negotiation refers to the process where th
Learn more from the following resources: Learn more from the following resources:
- [@article@Content Negotiation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation) - [@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/) - [@article@Content Negotiation in Practice](https://softwaremill.com/content-negotiation-in-practice/)

@ -4,6 +4,6 @@ Contract Testing is a critical aspect of maintaining a robust and reliable API i
Learn more from the following resources: Learn more from the following resources:
- [@article@A complete guide to Contract Testing](https://testsigma.com/blog/api-contract-testing/) - [@article@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@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/) - [@article@Contract Testing](https://www.postman.com/templates/42247877-8529-429d-acba-4de20c3b5b3b/Contract-testing/)

@ -1,3 +1,9 @@
# Different API Styles # 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. 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)

@ -1,10 +1,8 @@
# Error Handling / Retries # 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. 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.
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.
Learn more from the following resources: 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)
- [@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)

@ -4,6 +4,6 @@ Error Handling is a crucial aspect of API design that ensures the stability, usa
Learn more from the following resources: 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) - [@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) - [@video@Handling HTTP API Errors with Problem Details](https://www.youtube.com/watch?v=uvTT_0hqhyY)

@ -4,6 +4,6 @@ Event-driven architecture (EDA) is a software design concept that revolves aroun
Learn more form the following resources: 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 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/) - [@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) - [@video@Event-Driven Architecture: Explained in 7 Minutes!](https://www.youtube.com/watch?v=gOuAqRaDdHA)

@ -1,8 +1,8 @@
# Functional Testing in API Design # 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: 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/) - [@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) - [@video@What Is API Functional Testing?](https://www.youtube.com/watch?v=CvJHDKMWofk)

@ -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: Learn more from the following resources:
- [@roadmap@Visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql)
- [@official@GraphQL Website](https://graphql.org/) - [@official@GraphQL Website](https://graphql.org/)
- [@opensource@Public GraphQL APIs](https://github.com/graphql-kit/graphql-apis) - [@opensource@Public GraphQL APIs](https://github.com/graphql-kit/graphql-apis)
- [@video@GraphQL explained in 100 seconds](https://www.youtube.com/watch?v=eIQh02xuVw4) - [@video@GraphQL Explained in 100 Seconds](https://www.youtube.com/watch?v=eIQh02xuVw4)

@ -1,10 +1,6 @@
# gRPC # 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. 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#.
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
Visit the following resources to learn more: Visit the following resources to learn more:

@ -5,5 +5,5 @@ HTTP Headers play a crucial role in API Design as they provide essential informa
Learn more from the following resources: Learn more from the following resources:
- [@article@HTTP Headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers) - [@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?](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/) - [@article@What are HTTP Headers & Types of HTTP headers](https://requestly.com/blog/what-are-http-headers-understand-different-types-of-http-headers/)

@ -4,6 +4,6 @@ HTTP (Hypertext Transfer Protocol) Methods play a significant role in API design
Learn more from the following resources: 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@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/) - [@article@What are HTTP Methods? - Postman](https://blog.postman.com/what-are-http-methods/)

@ -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: 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@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)

@ -4,6 +4,7 @@ JSON Web Tokens, or JWT, are a popular and secure method of transferring informa
Learn more from the following resources: 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) - [@official@Introduction to JSON Web Tokens](https://jwt.io/introduction)
- [@article@JSON Web Tokens](https://auth0.com/docs/secure/tokens/json-web-tokens) - [@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) - [@video@Why is JWT popular?](https://www.youtube.com/watch?v=P2CPd9ynFLg)

@ -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: 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) - [@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) - [@video@What is a Load Balancer?](https://www.youtube.com/watch?v=sCR3SAVdyCc)

@ -4,6 +4,6 @@ Load testing is a crucial aspect of API design that ensures reliability, efficie
Learn more from the following resources: Learn more from the following resources:
- [@article@API load testing - a beginners guide](https://grafana.com/blog/2024/01/30/api-load-testing/) - [@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/) - [@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) - [@video@Load Testing API's](https://www.youtube.com/watch?v=a5hWE4hMOoY)

@ -4,5 +4,5 @@ Messaging Queues play a fundamental role in API design, particularly in creating
Learn more from the following resources: Learn more from the following resources:
- [@article@What is a message queue?](https://aws.amazon.com/message-queue/) - [@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) - [@video@REST API Message Queues Explained](https://www.youtube.com/watch?v=2idPgA6IN_Q)

@ -4,6 +4,6 @@ When it comes to API Design, Microservices Architecture plays a crucial role. It
Learn more from the following resources: 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@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) - [@article@Microservice Architecture Style](https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices)

@ -4,6 +4,7 @@ OAuth 2.0 is an authorization framework that allows applications to obtain limit
Learn more from the following resources: Learn more from the following resources:
- [@roadmap@OAuth](https://roadmap.sh/guides/oauth)
- [@official@OAuth Website](https://oauth.net/2/) - [@official@OAuth Website](https://oauth.net/2/)
- [@article@What is OAuth 2.0?](https://auth0.com/intro-to-iam/what-is-oauth-2) - [@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) - [@video@OAuth 2 Explained In Simple Terms](https://www.youtube.com/watch?v=ZV5yTm4pT8g)

@ -5,4 +5,4 @@ API Design performance metrics play a critical role in ensuring APIs are efficie
Learn more from the following resources: Learn more from the following resources:
- [@article@API Performance Monitoring](https://www.catchpoint.com/api-monitoring-tools/api-performance-monitoring) - [@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/) - [@article@How does API Monitoring Improves API Performance?](https://tyk.io/blog/api-product-metrics-what-you-need-to-know/)

@ -5,4 +5,5 @@ Postman is a popular tool in web development for designing, testing, and managin
Learn more from the following resources: Learn more from the following resources:
- [@official@Postman Website](https://www.postman.com/) - [@official@Postman Website](https://www.postman.com/)
- [@video@Postman Api Testing Tutorial for beginners](https://www.youtube.com/watch?v=MFxk5BZulVU) - [@official@Postman Docs](https://www.postman.com/api-documentation-tool/)
- [@video@Postman Tutorial for Beginners](https://www.youtube.com/watch?v=MFxk5BZulVU)

@ -4,5 +4,5 @@ Profiling and monitoring are critical aspects of API design and implementation.
Learn more from the following resources: 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@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) - [@article@API profiling at Pintrest](https://medium.com/pinterest-engineering/api-profiling-at-pinterest-6fa9333b4961)

@ -1,8 +1,6 @@
# RabbitMQ in API Design # 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. 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.
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.
Learn more from the following resources: Learn more from the following resources:

@ -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: Learn more from the following resources:
- [@official@readme.com](https://readme.com) - [@official@ReadMe Website](https://readme.com)
- [@opensource@readmeio](https://github.com/readmeio) - [@opensource@ReadMe](https://github.com/orgs/readmeio/repositories?type=source)

@ -5,5 +5,5 @@ Role-Based Access Control (RBAC) is a method of managing authorization in API de
Learn more from the following resources: Learn more from the following resources:
- [@article@Role-Based Access Control](https://auth0.com/docs/manage-users/access-control/rbac) - [@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) - [@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) - [@video@Role-based Access Control (RBAC) vs. Attribute-based Access Control (ABAC)](https://www.youtube.com/watch?v=rvZ35YW4t5k)

@ -8,6 +8,6 @@ Understanding Session Based Authentication is crucial for secure API design, esp
Learn more from the following resources: 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) - [@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) - [@article@Session vs Token Authentication](https://www.authgear.com/post/session-vs-token-authentication)

@ -4,5 +4,5 @@ Simple JSON (JavaScript Object Notation) APIs are a popular form of API or "Appl
Learn more from the following resources: Learn more from the following resources:
- [@video@JSON API: Explained in 4 minutes (+ EXAMPLES)](https://www.youtube.com/watch?v=N-4prIh7t38) - [@video@JSON API: Explained in 4 Minutes](https://www.youtube.com/watch?v=N-4prIh7t38)
- [@opensource@A specification for building JSON APIs](https://github.com/json-api/json-api) - [@opensource@Specification for Building JSON APIs](https://github.com/json-api/json-api)

@ -1,13 +1,9 @@
# Standards and Compliance in API Design # 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. 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.
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.
Learn more from the following resources: Learn more from the following resources:
- [@article@What is API compliance?](https://tyk.io/learning-center/api-compliance/) - [@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@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/) - [@article@REST API Standards](https://www.integrate.io/blog/rest-api-standards/)

@ -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: Learn more from the following resources:
- [@official@Swagger Website](https://swagger.io/) - [@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/)
- [@official@OpenAPI Inititive](https://www.openapis.org/) - [@article@What is Swagger?](https://blog.hubspot.com/website/what-is-swagger)

@ -4,6 +4,6 @@ Token-based authentication is a crucial aspect of API design. It involves provid
Learn more from the following resources: 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/) - [@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@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)

@ -4,5 +4,5 @@ URI (Uniform Resource Identifier) is a string of characters used to identify a n
Learn more from the following resources: Learn more from the following resources:
- [@article@Guidelines for URI design](https://css-tricks.com/guidelines-for-uri-design/) - [@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) - [@article@Designing URIs](https://www.oreilly.com/library/view/restful-web-services/9780596809140/ch04.html)

@ -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@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@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) - [@article@Path Parameters](https://help.iot-x.com/api/how-to-use-the-api/parameters/path-parameters)

@ -4,6 +4,6 @@ API Versioning is a critical component of API Design and Management. As the APIs
Learn more from the following resources: Learn more from the following resources:
- [@article@What is API versioning?](https://www.postman.com/api-platform/api-versioning/) - [@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/) - [@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) - [@video@Versioning your APIs](https://www.youtube.com/watch?v=Np_Jr6AvCOc)

@ -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: Learn more from the following resources:
- [@article@The WebSocket API (WebSockets)](https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API) - [@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/) - [@article@What are Web Sockets?](https://www.pubnub.com/guides/websockets/)
- [@video@How web sockets work](https://www.youtube.com/watch?v=pnj3Jbho5Ck) - [@video@How Web Sockets Work](https://www.youtube.com/watch?v=pnj3Jbho5Ck)

@ -4,5 +4,7 @@ APIs, or Application Programming Interfaces, provide a manner in which software
Visit the following resources to learn more: 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) - [@video@What is an API?](https://www.youtube.com/watch?v=s7wmiS2mSXY)

@ -1,9 +1,10 @@
# Router # 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: Learn more from the following resources:
- [@article@What is a Router](https://www.cloudflare.com/en-gb/learning/network-layer/what-is-a-router/) - [@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@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)

@ -16,4 +16,4 @@ Learn more from the following resources:
- [@official@Microsoft Office](https://www.office.com/) - [@official@Microsoft Office](https://www.office.com/)
- [@official@Google Workspace](https://workspace.google.com) - [@official@Google Workspace](https://workspace.google.com)
- [@official@Libra Office](https://www.libreoffice.org/) - [@official@LibreOffice](https://www.libreoffice.org/)

@ -4,7 +4,6 @@ Whitelisting involves creating a list of trusted entities (such as IP addresses,
Visit the following resources to learn more: 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)) - [@article@Detailed Introduction to greylisting](https://en.wikipedia.org/wiki/Greylisting_(email))
- [@video@Greylisting](https://www.youtube.com/watch?v=ljtU6I0sIiw) - [@video@Greylisting](https://www.youtube.com/watch?v=ljtU6I0sIiw)
- [@video@How to Whitelist an Email Address?](https://www.youtube.com/watch?v=NqQIBtY7ySw) - [@video@How to Whitelist an Email Address?](https://www.youtube.com/watch?v=NqQIBtY7ySw)

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save