Initial commit

astro
Kamran Ahmed 2 years ago
commit 16f48a1958
  1. 20
      .gitignore
  2. 4
      .vscode/extensions.json
  3. 11
      .vscode/launch.json
  4. 50
      README.md
  5. 9
      astro.config.mjs
  6. 10064
      package-lock.json
  7. 19
      package.json
  8. 3719
      pnpm-lock.yaml
  9. 13
      public/favicon.svg
  10. 40
      src/components/Icon.astro
  11. 45
      src/components/Navigation.astro
  12. 12
      src/components/YouTubeBanner.astro
  13. 1
      src/env.d.ts
  14. 3
      src/icons/bell.svg
  15. 5
      src/icons/check.svg
  16. 5
      src/icons/close.svg
  17. 4
      src/icons/comment.svg
  18. 4
      src/icons/download.svg
  19. 4
      src/icons/email.svg
  20. 4
      src/icons/facebook.svg
  21. 3
      src/icons/hackernews.svg
  22. 3
      src/icons/hamburger.svg
  23. 4
      src/icons/logo.svg
  24. 3
      src/icons/reddit.svg
  25. 6
      src/icons/reset.svg
  26. 1
      src/icons/search.svg
  27. 4
      src/icons/spinner.svg
  28. 3
      src/icons/star.svg
  29. 3
      src/icons/twitter.svg
  30. 5
      src/icons/youtube.svg
  31. 45
      src/layouts/Layout.astro
  32. 24
      src/pages/index.astro
  33. 12
      src/roadmaps/frontend/content/100-internet/100-how-does-the-internet-work.md
  34. 12
      src/roadmaps/frontend/content/100-internet/101-what-is-http.md
  35. 10
      src/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md
  36. 13
      src/roadmaps/frontend/content/100-internet/103-dns-and-how-it-works.md
  37. 9
      src/roadmaps/frontend/content/100-internet/104-what-is-domain-name.md
  38. 9
      src/roadmaps/frontend/content/100-internet/105-what-is-hosting.md
  39. 13
      src/roadmaps/frontend/content/100-internet/index.md
  40. 12
      src/roadmaps/frontend/content/101-html/100-learn-the-basics.md
  41. 12
      src/roadmaps/frontend/content/101-html/101-writing-semantic-html.md
  42. 8
      src/roadmaps/frontend/content/101-html/102-forms-and-validations.md
  43. 8
      src/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md
  44. 13
      src/roadmaps/frontend/content/101-html/104-accessibility.md
  45. 13
      src/roadmaps/frontend/content/101-html/105-seo-basics.md
  46. 15
      src/roadmaps/frontend/content/101-html/index.md
  47. 12
      src/roadmaps/frontend/content/102-css/100-learn-the-basics.md
  48. 16
      src/roadmaps/frontend/content/102-css/101-making-layouts.md
  49. 12
      src/roadmaps/frontend/content/102-css/102-responsive-design-and-media-queries.md
  50. 22
      src/roadmaps/frontend/content/102-css/index.md
  51. 10
      src/roadmaps/frontend/content/103-javascript/100-syntax-and-basic-constructs.md
  52. 16
      src/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md
  53. 10
      src/roadmaps/frontend/content/103-javascript/102-learn-fetch-api-ajax-xhr.md
  54. 12
      src/roadmaps/frontend/content/103-javascript/103-es6-and-modular-javascript.md
  55. 15
      src/roadmaps/frontend/content/103-javascript/104-concepts.md
  56. 18
      src/roadmaps/frontend/content/103-javascript/index.md
  57. 11
      src/roadmaps/frontend/content/104-version-control-systems/100-basic-usage-of-git.md
  58. 11
      src/roadmaps/frontend/content/104-version-control-systems/index.md
  59. 12
      src/roadmaps/frontend/content/105-repo-hosting-services/100-github.md
  60. 8
      src/roadmaps/frontend/content/105-repo-hosting-services/101-gitlab.md
  61. 8
      src/roadmaps/frontend/content/105-repo-hosting-services/102-bitbucket.md
  62. 9
      src/roadmaps/frontend/content/105-repo-hosting-services/index.md
  63. 14
      src/roadmaps/frontend/content/106-web-security-knowledge/100-https.md
  64. 9
      src/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md
  65. 7
      src/roadmaps/frontend/content/106-web-security-knowledge/102-cors.md
  66. 10
      src/roadmaps/frontend/content/106-web-security-knowledge/103-owasp-security-risks.md
  67. 13
      src/roadmaps/frontend/content/106-web-security-knowledge/index.md
  68. 11
      src/roadmaps/frontend/content/107-package-managers/100-npm.md
  69. 9
      src/roadmaps/frontend/content/107-package-managers/101-yarn.md
  70. 8
      src/roadmaps/frontend/content/107-package-managers/102-pnpm.md
  71. 14
      src/roadmaps/frontend/content/107-package-managers/index.md
  72. 10
      src/roadmaps/frontend/content/108-css-architecture/100-bem.md
  73. 8
      src/roadmaps/frontend/content/108-css-architecture/101-oocss.md
  74. 7
      src/roadmaps/frontend/content/108-css-architecture/102-smacss.md
  75. 11
      src/roadmaps/frontend/content/108-css-architecture/index.md
  76. 10
      src/roadmaps/frontend/content/109-css-preprocessors/100-sass.md
  77. 7
      src/roadmaps/frontend/content/109-css-preprocessors/101-postcss.md
  78. 9
      src/roadmaps/frontend/content/109-css-preprocessors/102-less.md
  79. 8
      src/roadmaps/frontend/content/109-css-preprocessors/index.md
  80. 9
      src/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md
  81. 8
      src/roadmaps/frontend/content/110-build-tools/100-task-runners/index.md
  82. 9
      src/roadmaps/frontend/content/110-build-tools/101-module-bundlers/100-webpack.md
  83. 9
      src/roadmaps/frontend/content/110-build-tools/101-module-bundlers/101-esbuild.md
  84. 8
      src/roadmaps/frontend/content/110-build-tools/101-module-bundlers/102-rollup.md
  85. 8
      src/roadmaps/frontend/content/110-build-tools/101-module-bundlers/103-parcel.md
  86. 9
      src/roadmaps/frontend/content/110-build-tools/101-module-bundlers/104-vite.md
  87. 11
      src/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md
  88. 8
      src/roadmaps/frontend/content/110-build-tools/102-linters-formatters/100-prettier.md
  89. 9
      src/roadmaps/frontend/content/110-build-tools/102-linters-formatters/101-eslint.md
  90. 8
      src/roadmaps/frontend/content/110-build-tools/102-linters-formatters/102-standardjs.md
  91. 7
      src/roadmaps/frontend/content/110-build-tools/102-linters-formatters/index.md
  92. 11
      src/roadmaps/frontend/content/110-build-tools/index.md
  93. 10
      src/roadmaps/frontend/content/111-pick-a-framework/100-react-js/100-redux.md
  94. 8
      src/roadmaps/frontend/content/111-pick-a-framework/100-react-js/101-mobx.md
  95. 9
      src/roadmaps/frontend/content/111-pick-a-framework/100-react-js/102-recoil.md
  96. 15
      src/roadmaps/frontend/content/111-pick-a-framework/100-react-js/index.md
  97. 10
      src/roadmaps/frontend/content/111-pick-a-framework/101-angular/100-rxjs.md
  98. 9
      src/roadmaps/frontend/content/111-pick-a-framework/101-angular/101-ngrx.md
  99. 10
      src/roadmaps/frontend/content/111-pick-a-framework/101-angular/index.md
  100. 7
      src/roadmaps/frontend/content/111-pick-a-framework/102-vue-js/100-pinia.md
  101. Some files were not shown because too many files have changed in this diff Show More

20
.gitignore vendored

@ -0,0 +1,20 @@
# build output
dist/
.output/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store

@ -0,0 +1,4 @@
{
"recommendations": ["astro-build.astro-vscode"],
"unwantedRecommendations": []
}

@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}

@ -0,0 +1,50 @@
# Welcome to [Astro](https://astro.build)
[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/basics)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/s/github/withastro/astro/tree/latest/examples/basics)
> 🧑🚀 **Seasoned astronaut?** Delete this file. Have fun!
![basics](https://user-images.githubusercontent.com/4677417/186188965-73453154-fdec-4d6b-9c34-cb35c248ae5b.png)
## 🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
```
/
├── public/
│ └── favicon.svg
├── src/
│ ├── components/
│ │ └── Card.astro
│ ├── layouts/
│ │ └── Layout.astro
│ └── pages/
│ └── index.astro
└── package.json
```
Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.
There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.
Any static assets, like images, can be placed in the `public/` directory.
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :--------------------- | :------------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:3000` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro preview` |
| `npm run astro --help` | Get help using the Astro CLI |
## 👀 Want to learn more?
Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).

@ -0,0 +1,9 @@
import { defineConfig } from 'astro/config';
// https://astro.build/config
import tailwind from "@astrojs/tailwind";
// https://astro.build/config
export default defineConfig({
integrations: [tailwind()]
});

10064
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -0,0 +1,19 @@
{
"name": "@example/basics",
"type": "module",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/tailwind": "^2.1.3",
"astro": "^1.8.0",
"node-html-parser": "^6.1.4",
"tailwindcss": "^3.2.4"
}
}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 36 36">
<path fill="#000" d="M22.25 4h-8.5a1 1 0 0 0-.96.73l-5.54 19.4a.5.5 0 0 0 .62.62l5.05-1.44a2 2 0 0 0 1.38-1.4l3.22-11.66a.5.5 0 0 1 .96 0l3.22 11.67a2 2 0 0 0 1.38 1.39l5.05 1.44a.5.5 0 0 0 .62-.62l-5.54-19.4a1 1 0 0 0-.96-.73Z"/>
<path fill="url(#gradient)" d="M18 28a7.63 7.63 0 0 1-5-2c-1.4 2.1-.35 4.35.6 5.55.14.17.41.07.47-.15.44-1.8 2.93-1.22 2.93.6 0 2.28.87 3.4 1.72 3.81.34.16.59-.2.49-.56-.31-1.05-.29-2.46 1.29-3.25 3-1.5 3.17-4.83 2.5-6-.67.67-2.6 2-5 2Z"/>
<defs>
<linearGradient id="gradient" x1="16" x2="16" y1="32" y2="24" gradientUnits="userSpaceOnUse">
<stop stop-color="#000"/>
<stop offset="1" stop-color="#000" stop-opacity="0"/>
</linearGradient>
</defs>
<style>
@media (prefers-color-scheme:dark){:root{filter:invert(100%)}}
</style>
</svg>

After

Width:  |  Height:  |  Size: 873 B

@ -0,0 +1,40 @@
---
import { parse } from 'node-html-parser';
export interface Props {
icon: string;
}
async function getSVG(name: string) {
const filepath = `/src/icons/${name}.svg`;
const iconFiles = await Astro.glob("../icons/**/*.svg");
console.log(iconFiles[0]);
const files = import.meta.glob<string>('/src/icons/**/*.svg', {
eager: true,
as: 'raw',
});
if (!(filepath in files)) {
throw new Error(`${filepath} not found`);
}
const root = parse(files[filepath]);
const svg = root.querySelector('svg');
return {
attributes: svg?.attributes,
innerHTML: svg?.innerHTML,
};
}
const { icon, ...attributes } = Astro.props as Props;
const { attributes: baseAttributes, innerHTML } = await getSVG(icon);
const svgAttributes = { ...baseAttributes, ...attributes };
---
<svg {...svgAttributes} set:html={innerHTML}></svg>

@ -0,0 +1,45 @@
---
import YouTubeBanner from "./YouTubeBanner.astro";
import Icon from "./Icon.astro";
---
<YouTubeBanner />
<div class='bg-slate-900 text-white py-5 sm:py-8'>
<nav class="container flex items-center justify-between">
<a class='font-medium text-lg flex items-center text-white' href='/'>
<Icon icon="logo" />
<span class='ml-3'>roadmap.sh</span>
</a>
<!-- Desktop navigation items -->
<ul class='hidden sm:flex space-x-5'>
<li><a href='/roadmaps' class='text-gray-400 hover:text-white'>Roadmaps</a></li>
<li><a href='/guides' class='text-gray-400 hover:text-white'>Guides</a></li>
<li><a href='/videos' class='text-gray-400 hover:text-white'>Videos</a></li>
<li>
<a class='py-2 px-4 text-sm font-regular rounded-full bg-gradient-to-r from-blue-500 to-blue-700 hover:from-blue-500 hover:to-blue-600 text-white' href='/signup'>
Subscribe
</a>
</li>
</ul>
<!-- Mobile Navigation Button -->
<button id='show-mobile-navigation' class='text-gray-400 hover:text-gray-50 block sm:hidden cursor-pointer' aria-label="Menu">
<Icon icon="hamburger" />
</button>
<!-- Mobile Navigation Items -->
<div id='mobile-navigation' class='fixed top-0 bottom-0 left-0 right-0 z-40 bg-slate-900 flex items-center hidden'>
<button id='close-mobile-navigation' class='text-gray-400 hover:text-gray-50 block cursor-pointer absolute top-6 right-6 cursor-pointer'>
<Icon icon="close" />
</button>
<ul class='flex flex-col gap-2 md:gap-3 items-center w-full'>
<li><a href='/roadmaps' class='text-xl md:text-lg hover:text-blue-300'>Roadmaps</a></li>
<li><a href='/guides' class='text-xl md:text-lg hover:text-blue-300'>Guides</a></li>
<li><a href='/videos' class='text-xl md:text-lg hover:text-blue-300'>Videos</a></li>
<li><a href='/signup' class='text-xl md:text-lg text-red-300 hover:text-red-400'>Subscribe</a></li>
</ul>
</div>
</nav>
</div>

@ -0,0 +1,12 @@
---
import Icon from "./Icon.astro";
---
<div class='sticky top-0 border-b border-b-yellow-300 z-10 flex h-[37px]' id='sticky-youtube-banner'>
<a href='https://youtube.com/theroadmap?sub_confirmation=1' target='_blank' class='flex bg-yellow-200 text-center flex-1 items-center justify-center text-sm hover:bg-yellow-300 outline-0 '>
<Icon icon="youtube" /> We now have a YouTube Channel.&nbsp;<span class='hidden sm:inline'>Subscribe for the video content.</span>
</a>
<button class='text-yellow-500 bg-yellow-200 hover:text-yellow-900 hover:bg-yellow-400 outline-0 px-2' onclick='this.parentElement.classList.add("hidden")'>
<Icon icon="close" />
</button>
</div>

1
src/env.d.ts vendored

@ -0,0 +1 @@
/// <reference types="astro/client" />

@ -0,0 +1,3 @@
<svg viewBox="0 0 24 24" class='h-24 w-24 mx-auto mb-5 text-gray-300' focusable="false">
<path fill="currentColor" d="M12 22c1.1 0 2-.9 2-2h-4c0 1.1.89 2 2 2zm6-6v-5c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2z"></path>
</svg>

After

Width:  |  Height:  |  Size: 297 B

@ -0,0 +1,5 @@
<svg viewBox="0 0 14 14" focusable="false" class="h-3 w-3" aria-hidden="true">
<g fill="currentColor">
<polygon points="5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039"></polygon>
</g>
</svg>

After

Width:  |  Height:  |  Size: 230 B

@ -0,0 +1,5 @@
<svg aria-hidden="true" class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd"
d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
clip-rule="evenodd"></path>
</svg>

After

Width:  |  Height:  |  Size: 393 B

@ -0,0 +1,4 @@
<svg viewBox="0 0 14 14" focusable="false" class="h-3 w-3" aria-hidden="true">
<path fill="currentColor"
d="M0.913134,0.920639 C1.49851,0.331726 2.29348,0 3.12342,0 L10.8766,0 C11.7065,0 12.5015,0.331725 13.0869,0.920639 C13.6721,1.50939 14,2.30689 14,3.13746 L14,8.12943 C13.9962,8.51443 13.9059,8.97125 13.7629,9.32852 C13.6128,9.683 13.3552,10.0709 13.0869,10.3462 C12.813,10.6163 12.4265,10.8761 12.0734,11.0274 C11.7172,11.1716 11.2607,11.263 10.8766,11.2669 L10.1234,11.2669 L10.1234,12.5676 L10.1209,12.5676 C10.1204,12.793 10.0633,13.0791 9.97807,13.262 C9.8627,13.466 9.61158,13.7198 9.40818,13.8382 L9.40824,13.8383 C9.4077,13.8386 9.40716,13.8388 9.40661,13.8391 C9.40621,13.8393 9.4058,13.8396 9.40539,13.8398 L9.40535,13.8397 C9.22958,13.9254 8.94505,13.9951 8.75059,14 L8.74789,14 C8.35724,13.9963 7.98473,13.8383 7.71035,13.5617 L5.39553,11.2669 L3.12342,11.2669 C2.29348,11.2669 1.49851,10.9352 0.913134,10.3462 C0.644826,10.0709 0.387187,9.683 0.23711,9.32852 C0.0941235,8.97125 0.00379528,8.51443 0,8.12943 L0,3.13746 C0,2.30689 0.327915,1.50939 0.913134,0.920639 Z M3.12342,1.59494 C2.71959,1.59494 2.33133,1.75628 2.04431,2.04503 C1.75713,2.33395 1.59494,2.72681 1.59494,3.13746 L1.59494,8.12943 C1.59114,8.35901 1.62114,8.51076 1.71193,8.72129 C1.79563,8.9346 1.88065,9.06264 2.04431,9.22185 C2.33133,9.5106 2.71959,9.67195 3.12342,9.67195 L5.72383,9.67195 C5.93413,9.67195 6.13592,9.75502 6.28527,9.90308 L8.52848,12.1269 L8.52848,10.4694 C8.52848,10.029 8.88552,9.67195 9.32595,9.67195 L10.8766,9.67195 C11.1034,9.67583 11.2517,9.64614 11.4599,9.55518 C11.6712,9.47132 11.7976,9.38635 11.9557,9.22185 C12.1193,9.06264 12.2044,8.9346 12.2881,8.72129 C12.3789,8.51076 12.4089,8.35901 12.4051,8.12943 L12.4051,3.13746 C12.4051,2.72681 12.2429,2.33394 11.9557,2.04503 C11.6687,1.75628 11.2804,1.59494 10.8766,1.59494 L3.12342,1.59494 Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,4 @@
<svg viewBox="0 0 14 14" focusable="false" class='h-3 w-3' aria-hidden="true">
<path fill="currentColor"
d="M11.2857,6.05714 L10.08571,4.85714 L7.85714,7.14786 L7.85714,1 L6.14286,1 L6.14286,7.14786 L3.91429,4.85714 L2.71429,6.05714 L7,10.42857 L11.2857,6.05714 Z M1,11.2857 L1,13 L13,13 L13,11.2857 L1,11.2857 Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 339 B

@ -0,0 +1,4 @@
<svg viewBox="0 0 24 24" focusable="false" class='h-3 w-3' aria-hidden="true">
<path fill="currentColor"
d="M12,.5A11.634,11.634,0,0,0,.262,12,11.634,11.634,0,0,0,12,23.5a11.836,11.836,0,0,0,6.624-2,1.25,1.25,0,1,0-1.393-2.076A9.34,9.34,0,0,1,12,21a9.132,9.132,0,0,1-9.238-9A9.132,9.132,0,0,1,12,3a9.132,9.132,0,0,1,9.238,9v.891a1.943,1.943,0,0,1-3.884,0V12A5.355,5.355,0,1,0,12,17.261a5.376,5.376,0,0,0,3.861-1.634,4.438,4.438,0,0,0,7.877-2.736V12A11.634,11.634,0,0,0,12,.5Zm0,14.261A2.763,2.763,0,1,1,14.854,12,2.812,2.812,0,0,1,12,14.761Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 568 B

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill='currentColor' class='h-[26px] w-[26px]'>
<!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path d="M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z" />
</svg>

After

Width:  |  Height:  |  Size: 561 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill='currentColor' class='h-[26px] w-[26px]'>
<path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z" />
</svg>

After

Width:  |  Height:  |  Size: 398 B

@ -0,0 +1,3 @@
<svg class='h-5 w-5' viewBox="0 0 24 24" focusable="false" aria-hidden="true">
<path fill="currentColor" d="M 3 5 A 1.0001 1.0001 0 1 0 3 7 L 21 7 A 1.0001 1.0001 0 1 0 21 5 L 3 5 z M 3 11 A 1.0001 1.0001 0 1 0 3 13 L 21 13 A 1.0001 1.0001 0 1 0 21 11 L 3 11 z M 3 17 A 1.0001 1.0001 0 1 0 3 19 L 21 19 A 1.0001 1.0001 0 1 0 21 17 L 3 17 z"></path>
</svg>

After

Width:  |  Height:  |  Size: 358 B

@ -0,0 +1,4 @@
<svg width="30" height="30" viewBox="0 0 283 283" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 39C0 17.46 17.46 0 39 0h205c21.539 0 39 17.46 39 39v205c0 21.539-17.461 39-39 39H39c-21.54 0-39-17.461-39-39V39Z" fill="currentColor"></path>
<path d="M121.215 210.72c-1.867.56-4.854 1.12-8.96 1.68-3.92.56-8.027.84-12.32.84-4.107 0-7.84-.28-11.2-.84-3.174-.56-5.88-1.68-8.12-3.36-2.24-1.68-4.014-3.92-5.32-6.72-1.12-2.987-1.68-6.813-1.68-11.48v-84c0-4.293.746-7.933 2.24-10.92 1.68-3.173 4.013-5.973 7-8.4 2.986-2.427 6.626-4.573 10.92-6.44 4.48-2.053 9.24-3.827 14.28-5.32a106.176 106.176 0 0 1 15.68-3.36 95.412 95.412 0 0 1 16.24-1.4c8.96 0 16.053 1.773 21.28 5.32 5.226 3.36 7.84 8.96 7.84 16.8 0 2.613-.374 5.227-1.12 7.84-.747 2.427-1.68 4.667-2.8 6.72-3.92 0-7.934.187-12.04.56-4.107.373-8.12.933-12.04 1.68-3.92.747-7.654 1.587-11.2 2.52-3.36.747-6.254 1.68-8.68 2.8v95.48Zm45.172-22.4c0-7.84 2.426-14.373 7.28-19.6 4.853-5.227 11.48-7.84 19.88-7.84 8.4 0 15.026 2.613 19.88 7.84 4.853 5.227 7.28 11.76 7.28 19.6 0 7.84-2.427 14.373-7.28 19.6-4.854 5.227-11.48 7.84-19.88 7.84-8.4 0-15.027-2.613-19.88-7.84-4.854-5.227-7.28-11.76-7.28-19.6Z" fill="#000"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill='currentColor' class='h-[26px] w-[26px]'>
<path d="M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z" />
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,6 @@
<svg viewBox="0 0 24 24" focusable="false" class="w-3 h-3" aria-hidden="true">
<g fill="currentColor">
<path d="M10.319,4.936a7.239,7.239,0,0,1,7.1,2.252,1.25,1.25,0,1,0,1.872-1.657A9.737,9.737,0,0,0,9.743,2.5,10.269,10.269,0,0,0,2.378,9.61a.249.249,0,0,1-.271.178l-1.033-.13A.491.491,0,0,0,.6,9.877a.5.5,0,0,0-.019.526l2.476,4.342a.5.5,0,0,0,.373.248.43.43,0,0,0,.062,0,.5.5,0,0,0,.359-.152l3.477-3.593a.5.5,0,0,0-.3-.844L5.15,10.172a.25.25,0,0,1-.2-.333A7.7,7.7,0,0,1,10.319,4.936Z"></path>
<path d="M23.406,14.1a.5.5,0,0,0,.015-.526l-2.5-4.329A.5.5,0,0,0,20.546,9a.489.489,0,0,0-.421.151l-3.456,3.614a.5.5,0,0,0,.3.842l1.848.221a.249.249,0,0,1,.183.117.253.253,0,0,1,.023.216,7.688,7.688,0,0,1-5.369,4.9,7.243,7.243,0,0,1-7.1-2.253,1.25,1.25,0,1,0-1.872,1.656,9.74,9.74,0,0,0,9.549,3.03,10.261,10.261,0,0,0,7.369-7.12.251.251,0,0,1,.27-.179l1.058.127a.422.422,0,0,0,.06,0A.5.5,0,0,0,23.406,14.1Z"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 932 B

@ -0,0 +1 @@
<svg class='h-3 w-3' viewBox="0 0 24 24" focusable="false"><path fill="currentColor" d="M23.414,20.591l-4.645-4.645a10.256,10.256,0,1,0-2.828,2.829l4.645,4.644a2.025,2.025,0,0,0,2.828,0A2,2,0,0,0,23.414,20.591ZM10.25,3.005A7.25,7.25,0,1,1,3,10.255,7.258,7.258,0,0,1,10.25,3.005Z"></path></svg>

After

Width:  |  Height:  |  Size: 294 B

@ -0,0 +1,4 @@
<svg class='h-6 w-6 sm:w-12 sm:h-12 text-gray-200 animate-spin fill-blue-600' viewBox="0 0 93 93" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M46.5 93C72.1812 93 93 72.1812 93 46.5C93 20.8188 72.1812 0 46.5 0C20.8188 0 0 20.8188 0 46.5C0 72.1812 20.8188 93 46.5 93ZM46.5 77C63.3447 77 77 63.3447 77 46.5C77 29.6553 63.3447 16 46.5 16C29.6553 16 16 29.6553 16 46.5C16 63.3447 29.6553 77 46.5 77Z" fill="currentColor"/>
<path d="M84.9746 49.5667C89.3257 49.9135 93.2042 46.6479 92.81 42.3008C92.3588 37.3251 91.1071 32.437 89.0872 27.8298C86.0053 20.7998 81.2311 14.6422 75.1905 9.90623C69.15 5.17027 62.031 2.00329 54.4687 0.687889C49.5126 -0.174203 44.467 -0.223422 39.5274 0.525737C35.2118 1.18024 32.966 5.72596 34.3411 9.86865V9.86865C35.7161 14.0113 40.2118 16.1424 44.5681 15.8677C46.9635 15.7166 49.3773 15.8465 51.7599 16.2609C56.7515 17.1291 61.4505 19.2196 65.4377 22.3456C69.4249 25.4717 72.5762 29.5362 74.6105 34.1764C75.5815 36.3912 76.2835 38.7044 76.7084 41.0666C77.4811 45.3626 80.6234 49.2199 84.9746 49.5667V49.5667Z" fill="currentFill"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,3 @@
<svg class='w-4 h-4 fill-current' focusable='false' width="14" height="15" viewBox="0 0 14 15" xmlns="http://www.w3.org/2000/svg">
<path d="M6.99999 11.1515L2.88574 13.4545L3.80449 8.82984L0.342407 5.6285L5.02482 5.07317L6.99999 0.791504L8.97516 5.07317L13.6576 5.6285L10.1955 8.82984L11.1142 13.4545L6.99999 11.1515Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 336 B

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" fill='currentColor' class='h-[27px] w-[27px]'>
<path d="M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z" />
</svg>

After

Width:  |  Height:  |  Size: 723 B

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="currentColor"
style="height:20px;display:inline-block;margin-right:7px">
<path
d="M19.615 3.184c-3.604-.246-11.631-.245-15.23 0C.488 3.45.029 5.804 0 12c.029 6.185.484 8.549 4.385 8.816 3.6.245 11.626.246 15.23 0C23.512 20.55 23.971 18.196 24 12c-.029-6.185-.484-8.549-4.385-8.816zM9 16V8l8 3.993L9 16z"></path>
</svg>

After

Width:  |  Height:  |  Size: 418 B

@ -0,0 +1,45 @@
---
import Navigation from '../components/Navigation.astro';
export interface Props {
title: string;
}
const { title } = Astro.props;
---
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
</head>
<body>
<Navigation />
<slot />
</body>
</html>
<style is:global>
.container {
@apply max-w-[830px] px-4 mx-auto;
}
.bg-stripes {
background-image: linear-gradient(45deg, var(--stripes-color) 12.5%, transparent 12.5%, transparent 50%, var(--stripes-color) 50%, var(--stripes-color) 62.5%, transparent 62.5%, transparent 100%);
background-size: 5.66px 5.66px
}
.sponsor-footer {
text-align: center;
font-weight: 600;
font-size: 9px;
letter-spacing: 0.5px;
text-transform: uppercase;
padding: 3px 10px;
display: block;
background: repeating-linear-gradient(-45deg, transparent, transparent 5px, hsla(0, 0%, 0%, .025) 5px, hsla(0, 0%, 0%, .025) 10px) hsla(203, 11%, 95%, .4);
}
</style>

@ -0,0 +1,24 @@
---
import Layout from "../layouts/Layout.astro";
---
<Layout title="Developer Roadmaps">
<div class='bg-gradient-to-b from-slate-900 to-black'>
<div class='border-b border-b-slate-900'>
<div class='container text-left sm:text-center py-6 sm:py-20 px-6 sm:px-0'>
<h1 class='text-2xl sm:text-5xl mb-2 sm:mb-4 font-bold bg-gradient-to-b from-amber-50 to-purple-500 text-transparent bg-clip-text'>
Developer Roadmaps
</h1>
<p class='hidden sm:block text-gray-400 text-lg px-4'>
<span class='font-medium text-gray-400'>roadmap.sh</span> is a community effort to create roadmaps, guides and other educational content to help guide the developers in picking up the path and guide their learnings.
</p>
<p class='block sm:hidden text-gray-400 text-md px-0'>
Community created roadmaps, guides and articles to help developers grow in their career.
</p>
</div>
</div>
</div>
</Layout>

@ -0,0 +1,12 @@
# Internet
The Internet is a global network of computers connected to each other which communicate through a standardized set of protocols.
{% resources %}
{% Blog "https://www.vox.com/2014/6/16/18076282/the-internet", "The Internet Explained" %}
{% Blog "http://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm", "How Does the Internet Work?" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work", "How Does the Internet Work? MDN Docs" %}
{% Blog "/guides/what-is-internet", "Introduction to Internet" %}
{% Blog "https://www.youtube.com/watch?v=TNQsmPf24go", "How does the Internet work?" %}
{% Blog "https://www.youtube.com/watch?v=7_LPdttKXPc", "How the Internet Works in 5 Minutes" %}
{% endresources %}

@ -0,0 +1,12 @@
# What is HTTP?
HTTP is the `TCP/IP` based application layer communication protocol which standardizes how the client and server communicate with each other. HTTP follows a classical "Client-Server model" with a client opening a connection request, then waiting until it receives a response. HTTP is a stateless protocol, that means that the server does not keep any data (state) between two requests.
{% resources %}
{% Blog "https://www.cloudflare.com/en-gb/learning/ddos/glossary/hypertext-transfer-protocol-http/", "What is HTTP?" %}
{% Blog "https://howhttps.works", "How HTTPS Works ...in a comic!" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview", "An overview of HTTP" %}
{% Blog "https://kamranahmed.info/blog/2016/08/13/http-in-depth", "Journey to HTTP/2" %}
{% Blog "https://www.smashingmagazine.com/2021/08/http3-core-concepts-part1/", "HTTP/3 From A To Z: Core Concepts" %}
{% Blog "https://www.youtube.com/watch?v=iYM2zFP3Zn0", "HTTP Crash Course & Exploration" %}
{% endresources %}

@ -0,0 +1,10 @@
# Browsers
A web browser is a software application that enables a user to access and display web pages or other online content through its graphical user interface.
{% resources %}
{% Blog "https://www.html5rocks.com/en/tutorials/internals/howbrowserswork/", "How Browsers Work" %}
{% Blog "https://www.browserstack.com/guide/browser-rendering-engine", "Role of Rendering Engine in Browsers" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/Performance/How_browsers_work", "Populating the Page: How Browsers Work" %}
{% Blog "https://www.youtube.com/watch?v=WjDrMKZWCt0", "How Do Web Browsers Work?" %}
{% endresources %}

@ -0,0 +1,13 @@
# DNS
The Domain Name System (DNS) is the phonebook of the Internet. Humans access information online through domain names, like nytimes.com or espn.com. Web browsers interact through Internet Protocol (IP) addresses. DNS translates domain names to IP addresses so browsers can load Internet resources.
{% resources %}
{% Blog "https://www.cloudflare.com/en-gb/learning/dns/what-is-dns/", "What is DNS?" %}
{% Blog "https://messwithdns.net/", "Mess with DNS - DNS Playground" %}
{% Blog "https://howdns.works/", "How DNS works (comic)" %}
{% Blog "https://www.youtube.com/watch?v=Wj0od2ag5sk", "DNS and How does it Work?" %}
{% Blog "https://www.youtube.com/watch?v=7lxgpKh_fRY", "DNS Records" %}
{% Blog "https://www.youtube.com/watch?v=e48AyJOA9W8", "When to add glue records to DNS settings" %}
{% Blog "https://www.youtube.com/watch?v=YV5tkQYcvfg", "DNS Records for Newbies - How To Manage Website Records" %}
{% endresources %}

@ -0,0 +1,9 @@
# Domain Name
A domain name is a unique, easy-to-remember address used to access websites, such as ‘google.com’, and ‘facebook.com’. Users can connect to websites using domain names thanks to the DNS system.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_domain_name", "What is a Domain Name?" %}
{% Blog "https://www.cloudflare.com/en-gb/learning/dns/glossary/what-is-a-domain-name/", "What is a Domain Name? | Domain name vs. URL" %}
{% Blog "https://www.youtube.com/watch?v=Y4cRx19nhJk", "A Beginners Guide to How Domain Names Work" %}
{% endresources %}

@ -0,0 +1,9 @@
# Hosting
Web hosting is an online service that allows you to publish your website files onto the internet. So, anyone who has access to the internet has access to your website.
{% resources %}
{% Blog "https://www.youtube.com/watch?v=htbY9-yggB0", "What Is Web Hosting? Explained" %}
{% Blog "https://www.youtube.com/watch?v=AXVZYzw8geg", "Different Types of Web Hosting Explained" %}
{% Blog "https://www.youtube.com/watch?v=Kx_1NYYJS7Q", "Where to Host a Fullstack Project on a Budget" %}
{% endresources %}

@ -0,0 +1,13 @@
# Internet
The Internet is a global network of computers connected to each other which communicate through a standardized set of protocols.
{% resources %}
{% Blog "https://www.vox.com/2014/6/16/18076282/the-internet", "The Internet Explained" %}
{% Blog "http://web.stanford.edu/class/msande91si/www-spr04/readings/week1/InternetWhitepaper.htm", "How Does the Internet Work?" %}
{% Blog "/guides/what-is-internet", "Introduction to Internet" %}
{% Blog "https://internetfundamentals.com", "Learn How the Web Works" %}
{% Blog "https://www.youtube.com/watch?v=x3c1ih2NJEg", "How does the Internet work?" %}
{% Blog "https://www.youtube.com/watch?v=7_LPdttKXPc", "How the Internet Works in 5 Minutes" %}
{% endresources %}

@ -0,0 +1,12 @@
# HTML Basics
HTML stands for HyperText Markup Language. It is used on the frontend and gives the structure to the webpage which you can style using CSS and make interactive using JavaScript.
{% resources %}
{% Blog "https://www.w3schools.com/html/html_intro.asp", "W3Schools: Learn HTML" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started", "MDN Docs: Getting Started with HTML " %}
{% Blog "https://www.youtube.com/watch?v=pQN-pnXPaVg", "HTML Full Course - Build a Website Tutorial" %}
{% Blog "https://www.youtube.com/watch?v=qz0aGYrrlhU", "HTML Tutorial for Beginners: HTML Crash Course" %}
{% Blog "https://htmlcheatsheet.com", "HTML Cheatsheet" %}
{% Course "https://www.scaler.com/topics/html", "Scaler: HTML" %}
{% endresources %}

@ -0,0 +1,12 @@
# Semantic HTML
Semantic element clearly describes its meaning to both the browser and the developer. In HTML, semantic element are the type of elements that can be used to define different parts of a web page such as `<form>`, `<table>`, `<article>`, `<header>`, `<footer>`, etc.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Glossary/Semantics", "Semantics - MDN Web Docs Glossary: Definitions of Web-related terms | MDN" %}
{% Blog "https://www.w3schools.com/html/html5_semantic_elements.asp", "W3Schools: Semantic HTML" %}
{% Blog "https://hackernoon.com/how-to-write-semantic-html-dkq3ulo", "How To Write Semantic HTML" %}
{% Blog "https://www.freecodecamp.org/news/html-best-practices/", "HTML Best Practices – How to Build a Better HTML-Based Website" %}
{% Blog "https://blog.hubspot.com/website/semantic-html", "Semantic HTML: What It Is and How It Improves Your Site" %}
{% Blog "https://html.com/semantic-markup", "Semantic Markup" %}
{% endresources %}

@ -0,0 +1,8 @@
# Forms and Validations
Before submitting data to the server, it is important to ensure all required form controls are filled out, in the correct format. This is called client-side form validation, and helps ensure data submitted matches the requirements set forth in the various form controls.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Learn/Forms/Form_validation", "MDN Web Docs: Client-side form validation" %}
{% Blog "https://web.dev/learn/forms/", "Learn Forms by web.dev" %}
{% endresources %}

@ -0,0 +1,8 @@
# Best Practices
Learn to follow the best practices for writing maintainable and scalable HTML documents.
{% resources %}
{% Blog "https://github.com/hail2u/html-best-practices", "HTML Best Practices" %}
{% endresources %}

@ -0,0 +1,13 @@
# Accessibility
Web accessibility means that websites, tools, and technologies are designed and developed in such a way that people with disabilities can use them easily.
{% resources %}
{% Blog "https://www.w3.org/WAI/tips/developing/", "Developing for Web Accessibility by W3C WAI" %}
{% Blog "https://www.w3schools.com/accessibility/index.php", "Accessibility Tutorial" %}
{% Blog "https://www.smashingmagazine.com/2021/03/complete-guide-accessible-front-end-components/", "A Complete Guide To Accessible Front-End Components" %}
{% Blog "https://youtube.com/playlist?list=PLNYkxOF6rcICWx0C9LVWWVqvHlYJyqw7g", "Complete Playlist on Accessibility" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/Accessibility", "MDN Accessibility" %}
{% Blog "https://web.dev/accessibility", "Accessibility for Developers by Google" %}
{% Course "https://www.udacity.com/course/web-accessibility--ud891", "Web Accessibility by Udacity" %}
{% endresources %}

@ -0,0 +1,13 @@
# Basics of SEO
SEO or Search Engine Optimization is the technique used to optimize your website for better rankings on search engines such as Google, Bing etc.
{% resources %}
{% Blog "https://developers.google.com/search/docs", "Google Search Central — SEO Docs" %}
{% Blog "https://github.com/seo/guide", "SEO Guide" %}
{% Blog "https://neilpatel.com/blog/seo-developers/", "8 Must-Know SEO Best Practices For Developers" %}
{% Blog "https://medium.com/welldone-software/seo-for-developers-a-quick-overview-5b5b7ce34679", "SEO for Developers" %}
{% Blog "https://www.youtube.com/watch?v=xsVTqzratPs", "Complete SEO Course for Beginners" %}
{% Blog "https://www.youtube.com/watch?v=SnxeXZpZkI0", "SEO Expert Course" %}
{% endresources %}

@ -0,0 +1,15 @@
# HTML
HTML stands for HyperText Markup Language. It is used on the frontend and gives the structure to the webpage which you can style using CSS and make interactive using JavaScript.
{% resources %}
{% Blog "https://www.w3schools.com/html/html_intro.asp", "W3Schools: Learn HTML" %}
{% Blog "https://htmlreference.io/", "htmlreference.io: All HTML elements at a glance" %}
{% Blog "https://html.com", "HTML For Beginners The Easy Way" %}
{% Course "https://www.internetingishard.com/html-and-css/", "Web Development Basics" %}
{% Course "https://www.codecademy.com/learn/learn-html", "Codecademy - Learn HTML" %}
{% Course "https://github.com/denysdovhan/learnyouhtml", "Interactive HTML Course" %}
{% Blog "https://youtu.be/mJgBOIoGihA", "HTML Full Course for Beginners | Complete All-in-One Tutorial " %}
{% Blog "https://www.youtube.com/watch?v=pQN-pnXPaVg", "HTML Full Course - Build a Website Tutorial" %}
{% Blog "https://www.youtube.com/watch?v=qz0aGYrrlhU", "HTML Tutorial for Beginners: HTML Crash Course" %}
{% endresources %}

@ -0,0 +1,12 @@
# CSS Basics
CSS or Cascading Style Sheets is the language used to style the frontend of any website. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript.
{% resources %}
{% Blog "https://www.w3schools.com/css/", "W3Schools — Learn CSS" %}
{% Blog "https://www.freecodecamp.org/learn/responsive-web-design/", "freeCodeCamp — Responsive Web Design" %}
{% Blog "https://learn.shayhowe.com/html-css/building-your-first-web-page/", "Learn to Code HTML & CSS" %}
{% Blog "https://www.youtube.com/watch?v=yfoY53QXEnI", "CSS Crash Course For Absolute Beginners" %}
{% Blog "https://www.youtube.com/watch?v=D-h8L5hgW-w", "HTML and CSS Tutorial" %}
{% Blog "https://www.youtube.com/watch?v=FqmB-Zj2-PA", "CSS Masterclass - Tutorial & Course for Beginners" %}
{% endresources %}

@ -0,0 +1,16 @@
# Making layouts
Float, grid, flexbox, positioning, display and box model are some of the key topics that are used for making layouts. Use the resources below to learn about these topics:
{% resources %}
{% Blog "https://flexboxfroggy.com/", "Learn and Practice Flexbox" %}
{% Blog "https://cssgridgarden.com/", "Game for learning CSS Grid" %}
{% Blog "https://css-tricks.com/all-about-floats/", "All about Floats" %}
{% Blog "https://css-tricks.com/absolute-relative-fixed-positioining-how-do-they-differ/", "Positioning Types: How Do They Differ?" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model", "The Box Model" %}
{% Blog "https://www.freecodecamp.org/news/the-css-display-property-display-none-display-table-inline-block-and-more/", "The CSS Display Property" %}
{% Blog "https://css-tricks.com/snippets/css/a-guide-to-flexbox", "A Complete Guide to Flexbox" %}
{% Blog "https://css-tricks.com/snippets/css/complete-guide-grid", "A Complete Guide to Grid" %}
{% Blog "https://cssgrid.io/", "Learn CSS Grid - Course" %}
{% Blog "https://scrimba.com/learn/cssgrid", "Learn CSS Grid for free" %}
{% endresources %}

@ -0,0 +1,12 @@
# Responsive Web Design
Responsive Web Designing is the technique to make your webpages look good on all screen sizes. There are certain techniques used to achieve that e.g. CSS media queries, percentage widths, min or max widths heights etc.
{% resources %}
{% Blog "https://www.w3schools.com/css/css_rwd_intro.asp", "Responsive Web Design" %}
{% Blog "https://web.dev/learn/design/", "Learn Responsive Design" %}
{% Blog "https://kinsta.com/blog/responsive-web-design/", "The Beginner’s Guide to Responsive Web Design" %}
{% Blog "https://webflow.com/blog/responsive-web-design", "The guide to responsive web design in 2022" %}
{% Blog "https://www.youtube.com/watch?v=VQraviuwbzU", "5 simple tips to making responsive layouts the easy way" %}
{% Blog "https://www.youtube.com/watch?v=srvUrASNj0s", "Introduction To Responsive Web Design" %}
{% endresources %}

@ -0,0 +1,22 @@
# CSS
CSS or Cascading Style Sheets is the language used to style the frontend of any website. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript.
{% resources %}
{% Course "https://www.theodinproject.com//", "The Odin Project" %}
{% Course "https://flexbox.io/", "What The Flexbox!" %}
{% Course "https://www.codecademy.com/learn/learn-css", "Learn CSS | Codecademy" %}
{% Course "https://www.codecademy.com/learn/learn-intermediate-css", "Learn Intermediate CSS | Codecademy" %}
{% Blog "https://youtu.be/n4R2E7O-Ngo", "CSS Complete Course" %}
{% Blog "https://www.youtube.com/watch?v=yfoY53QXEnI", "CSS Crash Course For Absolute Beginners" %}
{% Blog "https://www.youtube.com/watch?v=D-h8L5hgW-w", "HTML and CSS Tutorial" %}
{% Blog "https://www.youtube.com/watch?v=FqmB-Zj2-PA", "CSS Masterclass - Tutorial & Course for Beginners" %}
{% Blog "https://www.w3schools.com/css/", "W3Schools — Learn CSS" %}
{% Blog "https://cssreference.io/", "cssreference.io: All CSS properties at a glance" %}
{% Blog "https://web.dev/learn/css/", "Web.dev by Google — Learn CSS" %}
{% Blog "https://www.freecodecamp.org/learn/responsive-web-design/", "freeCodeCamp — Responsive Web Design" %}
{% Blog "https://learn.shayhowe.com/html-css/building-your-first-web-page/", "Learn to Code HTML & CSS" %}
{% Blog "https://www.joshwcomeau.com/", "Joshw Comeaus CSS Hack Blog Posts" %}
{% Blog "https://100dayscss.com", "100 Days CSS Challenge" %}
{% Blog "https://www.scaler.com/topics/css", "CSS Tutorial | Scaler" %}
{% endresources %}

@ -0,0 +1,10 @@
# JavaScript
JavaScript allows you to add interactivity to your pages. Common examples that you may have seen on the websites are sliders, click interactions, popups and so on.
{% resources %}
{% Blog "https://www.w3schools.com/js/", "W3Schools – JavaScript Tutorial" %}
{% Blog "https://javascript.info/", "The Modern JavaScript Tutorial" %}
{% Blog "https://youtu.be/hdI2bqOjy3c?t=2", "JavaScript Crash Course for Beginners" %}
{% Blog "https://youtu.be/P7t13SGytRk?t=22", "Build a Netflix Landing Page Clone with HTML, CSS & JS" %}
{% endresources %}

@ -0,0 +1,16 @@
# DOM Manipulation
The Document Object Model (DOM) is a programming interface built for HTML and XML documents. It represents the page that allows programs and scripts to dynamically update the document structure, content, and style. With DOM, we can easily access and manipulate tags, IDs, classes, attributes, etc.
{% resources %}
{% Blog "https://javascript.info/dom-nodes", "DOM Treee" %}
{% Blog "https://www.geeksforgeeks.org/dom-document-object-model/", "GeeksForGeeks - DOM (Document Object Model)" %}
{% Blog "https://www.freecodecamp.org/news/what-is-the-dom-document-object-model-meaning-in-javascript/", "What is the DOM?" %}
{% Blog "https://eloquentjavascript.net/14_dom.html", "Eloquent JavaScript, 3rd Edition: The Document Object Model" %}
{% Blog "https://www.w3schools.com/js/js_htmldom.asp", "JavaScript HTML DOM" %}
{% Blog "https://www.javascripttutorial.net/javascript-dom/", "JavaScript DOM" %}
{% Blog "https://www.codeguage.com/courses/js/html-dom-introduction", "Learn the HTML DOM with Exercises - CodeGuage" %}
{% Blog "https://www.youtube.com/watch?v=7Tok22qxPzQ", "What is DOM, Shadow DOM and Virtual DOM?" %}
{% Blog "https://www.youtube.com/watch?v=0ik6X4DJKCc", "JavaScript DOM Crash Course" %}
{% endresources %}

@ -0,0 +1,10 @@
# Fetch API
Ajax is the technique that lets us send and receive the data asynchronously from the servers e.g. updating the user profile or asynchronously fetching the list of searched products without reloading the page.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API", "Fetch API MDN Docs" %}
{% Blog "https://www.javascripttutorial.net/javascript-fetch-api/", "A Simple Guide to JavaScript Fetch API" %}
{% Blog "https://web.dev/introduction-to-fetch/", "Introduction to Fetch" %}
{% Blog "https://www.youtube.com/watch?v=-ZI0ea5O2oA", "JavaScript Fetch API" %}
{% endresources %}

@ -0,0 +1,12 @@
# Modern JavaScript
ECMAScript 2015 or ES2015 is a significant update to the JavaScript programming language. It is the first major update to the language since ES5 which was standardized in 2009. You should look at the features introduced with ES6 and onwards.
{% resources %}
{% Blog "https://www.javascripttutorial.net/es6/", "ES6 Tutorial" %}
{% Blog "https://www.w3schools.com/js/js_es6.asp", "W3Schools: Javascript ES6" %}
{% Blog "https://www.youtube.com/watch?v=NCwa_xi0Uuc", "Learn Modern JavaScript in 1 Hour" %}
{% Blog "https://www.youtube.com/watch?v=nZ1DMMsyVyI", "JavaScript ES6, ES7, ES8" %}
{% Blog "https://www.youtube.com/watch?v=3PHXvlpOkf4", "Build 15 JavaScript Projects - Vanilla JavaScript" %}
{% Blog "https://codeloop.org/learn-modern-javascript-es6-es7-es8", "Modern JavaScript ES6, ES7 & ES8" %}
{% endresources %}

@ -0,0 +1,15 @@
# JavaScript Concepts
Learn and understand the concepts such as Hoisting, Event Bubbling, Scope, Prototype, Shadow DOM and strict.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Glossary/Hoisting", "JavaScript Hoisting" %}
{% Blog "https://javascript.info/bubbling-and-capturing", "Event Bubbling and Capturing" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Glossary/Scope", "Scope in JavaScript" %}
{% Blog "https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/", "Var, Let and Const — Whats the difference?" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain", "Inheritance and Prototype Chain" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode", "JavaScript Strict Mode" %}
{% Blog "https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif", "JavaScript Visualized (7 Part Series)" %}
{% Blog "https://www.youtube.com/watch?v=7Tok22qxPzQ", "DOM vs Shadow DOM vs Virtual DOM" %}
{% Blog "https://blog.greenroots.info/series/javascript-promises", "Demystifying JavaScript Promises" %}
{% endresources %}

@ -0,0 +1,18 @@
{% Roadmap "/javascript", "JavaScript" %}
# JavaScript
JavaScript allows you to add interactivity to your pages. Common examples that you may have seen on the websites are sliders, click interactions, popups and so on.
{% resources %}
{% Blog "https://www.w3schools.com/js/", "W3Schools – JavaScript Tutorial" %}
{% Blog "https://javascript.info/", "The Modern JavaScript Tutorial" %}
{% Blog "https://www.javascripttutorial.net/", "Learn JavaScript: Covered many topics" %}
{% Blog "https://eloquentjavascript.net/", "Eloquent JavaScript textbook" %}
{% Blog "https://github.com/getify/You-Dont-Know-JS", "You Dont Know JS Yet (book series) " %}
{% Blog "https://youtu.be/hdI2bqOjy3c?t=2", "JavaScript Crash Course for Beginners" %}
{% Blog "https://youtu.be/P7t13SGytRk?t=22", "Build a Netflix Landing Page Clone with HTML, CSS & JS" %}
{% Blog "https://javascript30.com/", "Build 30 Javascript projects in 30 days" %}
{% Course "https://github.com/workshopper/javascripting", "Learn the basics of JavaScript" %}
{% Course "https://www.scaler.com/topics/course/javascript-beginners", "JavaScript for Beginners " %}
{% endresources %}

@ -0,0 +1,11 @@
# Git
[Git](https://git-scm.com/) is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
{% resources %}
{% Blog "https://marklodato.github.io/visual-git-guide/index-en.html", "Visual Git Guide" %}
{% Blog "https://youtu.be/apGV9Kg7ics", "Git and Github full course" %}
{% Blog "https://www.youtube.com/watch?v=zbKdDsNNOhg", "Version Control System Introduction" %}
{% Blog "https://www.youtube.com/watch?v=SWYqp7iY_Tc", "Git & GitHub Crash Course For Beginners" %}
{% Blog "https://youtu.be/Y9XZQO1n_7c?t=21", "Learn Git in 20 Minutes" %}
{% endresources %}

@ -0,0 +1,11 @@
# Version Control Systems
Version control systems allow you to track changes to your codebase/files over time. They allow you to go back to some previous version of the codebase without any issues. Also, they help in collaborating with people working on the same code – if you’ve ever collaborated with other people on a project, you might already know the frustration of copying and merging the changes from someone else into your codebase; version control systems allow you to get rid of this issue.
{% resources %}
{% Blog "https://www.youtube.com/watch?v=zbKdDsNNOhg", "Version Control System Introduction" %}
{% Blog "https://www.youtube.com/watch?v=SWYqp7iY_Tc", "Git & GitHub Crash Course For Beginners" %}
{% Blog "https://youtu.be/Y9XZQO1n_7c?t=21", "Learn Git in 20 Minutes" %}
{% Official "https://git-scm.com/docs", "Git Documentation" %}
{% Blog "https://www.atlassian.com/git", "Learn Git by Atlassian" %}
{% endresources %}

@ -0,0 +1,12 @@
# GitHub
[GitHub](https://github.com) is a provider of internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
{% resources %}
{% Blog "https://docs.github.com/en/get-started/quickstart/hello-world", "GitHub: Quickstart" %}
{% Blog "https://skills.github.com/", "Learn Github by doing" %}
{% Blog "https://www.youtube.com/watch?v=w3jLJU7DT5E", "What is GitHub?" %}
{% Blog "https://www.youtube.com/watch?v=wpISo9TNjfU", "Git vs. GitHub: Whats the difference?" %}
{% Blog "https://www.youtube.com/watch?v=RGOj5yH7evk", "Git and GitHub for Beginners" %}
{% Blog "https://www.youtube.com/watch?v=eulnSXkhE7I", "Git and GitHub - CS50 Beyond 2019" %}
{% endresources %}

@ -0,0 +1,8 @@
# GitLab
[GitLab](https://gitlab.com) is a provider of internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
{% resources %}
{% Blog "https://docs.gitlab.com/", "GitLab Documentation" %}
{% Course "https://gitlab.com/", "GitLab Website" %}
{% endresources %}

@ -0,0 +1,8 @@
# BitBucket
[BitBucket](https://bitbucket.com) is a provider of internet hosting for software development and version control using Git. It offers the distributed version control and source code management functionality of Git, plus its own features.
{% resources %}
{% Blog "https://bitbucket.org/product/guides", "How to use BitBucket?" %}
{% Course "https://bitbucket.com/", "BitBucket Website" %}
{% endresources %}

@ -0,0 +1,9 @@
# Repo Hosting Services
There are different repository hosting services with the most famous one being GitHub, GitLab and BitBucket. I would recommend creating an account on GitHub because that is where most of the OpenSource work is done and most of the developers are.
{% resources %}
{% Blog "https://github.com", "GitHub: Where the world builds software" %}
{% Blog "https://gitlab.com", "GitLab: Iterate faster, innovate together" %}
{% Blog "https://bitbucket.com", "BitBucket: The Git solution for professional teams" %}
{% endresources %}

@ -0,0 +1,14 @@
# HTTPS
HTTPS is a secure way to send data between a web server and a browser.
Hypertext transfer protocol secure (HTTPS) is the secure version of HTTP, which is the primary protocol used to send data between a web browser and a website. HTTPS is encrypted in order to increase security of data transfer. This is particularly important when users transmit sensitive data, such as by logging into a bank account, email service, or health insurance provider
{% resources %}
{% Blog "https://www.cloudflare.com/en-gb/learning/ssl/what-is-https/", "What is HTTPS?" %}
{% Blog "https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https", "Why HTTPS Matters" %}
{% Blog "https://developers.google.com/web/fundamentals/security/encrypt-in-transit/enable-https", "Enabling HTTPS on Your Servers" %}
{% Blog "https://howhttps.works/", "How HTTPS works (comic)" %}
{% Blog "https://www.youtube.com/watch?v=hExRDVZHhig", "SSL, TLS, HTTP, HTTPS Explained" %}
{% Blog "https://www.youtube.com/watch?v=GoXgl9r0Kjk", "HTTPS — Stories from the field" %}
{% endresources %}

@ -0,0 +1,9 @@
# Content Security Policy
Content Security Policy is a computer security standard introduced to prevent cross-site scripting, clickjacking and other code injection attacks resulting from execution of malicious content in the trusted web page context.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP", "MDN — Content Security Policy (CSP)" %}
{% Blog "https://developers.google.com/web/fundamentals/security/csp", "Google Devs — Content Security Policy (CSP)" %}
{% endresources %}

@ -0,0 +1,7 @@
# CORS
Cross-Origin Resource Sharing (CORS) is an HTTP-header based mechanism that allows a server to indicate any origins (domain, scheme, or port) other than its own from which a browser should permit loading resources.
{% resources %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS", "CORS — Cross-Origin Resource Sharing" %}
{% endresources %}

@ -0,0 +1,10 @@
# OWASP Security Risks
OWASP or Open Web Application Security Project is an online community that produces freely-available articles, methodologies, documentation, tools, and technologies in the field of web application security.
{% resources %}
{% Blog "https://en.wikipedia.org/wiki/OWASP", "Wikipedia - OWASP" %}
{% Blog "https://github.com/0xRadi/OWASP-Web-Checklist", "OWASP Web Application Security Testing Checklist" %}
{% Blog "https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/", "OWASP Top 10 Security Risks" %}
{% Blog "https://cheatsheetseries.owasp.org/cheatsheets/AJAX_Security_Cheat_Sheet.html", "OWASP Cheatsheets" %}
{% endresources %}

@ -0,0 +1,13 @@
# Web Security Knowledge
Web security refers to the protective measures taken by the developers to protect the web applications from threats that could affect the business.
{% resources %}
{% Blog "https://developers.google.com/web/fundamentals/security/encrypt-in-transit/why-https", "Why HTTPS Matters" %}
{% Blog "https://en.wikipedia.org/wiki/OWASP", "Wikipedia - OWASP" %}
{% Blog "https://github.com/0xRadi/OWASP-Web-Checklist", "OWASP Web Application Security Testing Checklist" %}
{% Blog "https://sucuri.net/guides/owasp-top-10-security-vulnerabilities-2021/", "OWASP Top 10 Security Risks" %}
{% Blog "https://cheatsheetseries.owasp.org/cheatsheets/AJAX_Security_Cheat_Sheet.html", "OWASP Cheatsheets" %}
{% Blog "https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP", "Content Security Policy (CSP)" %}
{% Blog "https://www.youtube.com/playlist?list=PLH8n_ayg-60J9i3nsLybper-DR3zJw6Z5", "OWASP ZAP Step-by-Step Tutorial" %}
{% endresources %}

@ -0,0 +1,11 @@
# npm
npm is a package manager for the JavaScript programming language maintained by npm, Inc. npm is the default package manager for the JavaScript runtime environment Node.js.
{% resources %}
{% Blog "https://peterxjang.com/blog/modern-javascript-explained-for-dinosaurs.html", "Modern JavaScript for Dinosaurs" %}
{% Blog "https://nodesource.com/blog/an-absolute-beginners-guide-to-using-npm/", "An Absolute Beginners Guide to Using npm" %}
{% Course "https://github.com/workshopper/how-to-npm", "How to NPM" %}
{% Blog "https://www.youtube.com/watch?v=2V1UUhBJ62Y", "NPM tutorial for Beginners" %}
{% Blog "https://www.youtube.com/watch?v=jHDhaSSKmB0", "NPM Crash Course" %}
{% endresources %}

@ -0,0 +1,9 @@
# Yarn
Yarn is a software packaging system developed in 2016 by Facebook for Node.js JavaScript runtime environment that provides speed, consistency, stability, and security as an alternative to npm (package manager).
{% resources %}
{% Blog "https://peterxjang.com/blog/modern-javascript-explained-for-dinosaurs.html", "Modern JavaScript for Dinosaurs" %}
{% Blog "https://yarnpkg.com/en/docs/getting-started", "Yarn - Getting Started" %}
{% Blog "https://www.youtube.com/watch?v=g9_6KmiBISk", "Yarn Crash Course" %}
{% endresources %}

@ -0,0 +1,8 @@
# pnpm
PNPM is an alternative package manager for Node. js which stands for “Performant NPM”. The main purpose of PNPM is to hold all the packages at a global (centralized) store and use them if needed by other projects too by creating hard links to it.
{% resources %}
{% Official "https://pnpm.io", "Official Website" %}
{% Blog "https://blog.bitsrc.io/pnpm-javascript-package-manager-4b5abd59dc9", "Meet PNPM: The Faster, More Performant NPM" %}
{% endresources %}

@ -0,0 +1,14 @@
# Package Managers
Package managers allow you to manage the dependencies (external code written by you or someone else) that your project needs to work correctly.
{% resources %}
{% Blog "https://peterxjang.com/blog/modern-javascript-explained-for-dinosaurs.html", "Modern JavaScript for Dinosaurs" %}
{% Blog "https://nodesource.com/blog/an-absolute-beginners-guide-to-using-npm/", "An Absolute Beginners Guide to Using npm" %}
{% Blog "https://yarnpkg.com/en/docs/getting-started", "Yarn - Getting Started" %}
{% Blog "https://www.youtube.com/watch?v=2V1UUhBJ62Y", "NPM tutorial for Beginners" %}
{% Blog "https://www.youtube.com/watch?v=jHDhaSSKmB0", "NPM Crash Course" %}
{% Blog "https://www.youtube.com/watch?v=g9_6KmiBISk", "Yarn Crash Course" %}
{% endresources %}

@ -0,0 +1,10 @@
# BEM
The Block, Element, Modifier methodology (commonly referred to as BEM) is a popular naming convention for classes in HTML and CSS. Developed by the team at Yandex, its goal is to help developers better understand the relationship between the HTML and CSS in a given project.
{% resources %}
{% Official "https://en.bem.info", "BEM Official Website" %}
{% Official "https://en.bem.info/methodology/quick-start", "BEM Documentation" %}
{% Blog "https://css-tricks.com/bem-101", "BEM 101" %}
{% Blog "https://en.bem.info/tutorials/", "BEM Tutorials" %}
{% endresources %}

@ -0,0 +1,8 @@
# OOCSS
As with any object-based coding method, the purpose of OOCSS or Object Oriented CSS is to encourage code reuse and, ultimately, faster and more efficient stylesheets that are easier to add to and maintain.
{% resources %}
{% Official "http://oocss.org/", "OOCSS Official Website" %}
{% Blog "https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/", "Introduction to Object Oriented CSS" %}
{% endresources %}

@ -0,0 +1,7 @@
# SMACSS
SMACSS (pronounced “smacks”) is more style guide than rigid framework. SMACSS is a way to examine your design process and as a way to fit those rigid frameworks into a flexible thought process. It is an attempt to document a consistent approach to site development when using CSS.
{% resources %}
{% Official "http://smacss.com/", "SMACSS Official Website" %}
{% endresources %}

@ -0,0 +1,11 @@
# CSS Architecture
CSS is notoriously difficult to manage in large, complex, rapidly-iterated systems. There are different ways of writing CSS that allows in writing more maintainable CSS.
{% resources %}
{% Blog "https://www.webfx.com/blog/web-design/css-methodologies/", "A Look at Some CSS Methodologies" %}
{% Official "https://en.bem.info", "BEM Official Website" %}
{% Official "http://oocss.org/", "OOCSS Official Website" %}
{% Official "http://smacss.com/", "SMACSS Official Website" %}
{% endresources %}

@ -0,0 +1,10 @@
# Sass
Sass is a preprocessor scripting language that is interpreted or compiled into Cascading Style Sheets. It lets you write maintainable CSS and provides features like variable, nesting, mixins, extension, functions, loops, conditionals and so on.
{% resources %}
{% Official "https://sass-lang.com/", "Sass Website" %}
{% Official "https://sass-lang.com/documentation", "Official Documentation" %}
{% Blog "https://www.youtube.com/watch?v=_a5j7KoflTs", " Sass Tutorial for Beginners" %}
{% Blog "https://www.youtube.com/watch?v=jfMHA8SqUL4", " Sass, BEM, & Responsive Design" %}
{% endresources %}

@ -0,0 +1,7 @@
# PostCSS
PostCSS is a tool for transforming styles with JS plugins. These plugins can lint your CSS, support variables and mixins, transpile future CSS syntax, inline images, and more.
{% resources %}
{% Official "https://postcss.org/", "Official Website" %}
{% endresources %}

@ -0,0 +1,9 @@
# Less
Less extends CSS with dynamic behavior such as variables, mixins, operations and functions. Less runs on both the server-side (with Node.js and Rhino) or client-side (modern browsers only).
{% resources %}
{% Official "https://lesscss.org/", "Official Website" %}
{% Official "https://lesscss.org/usage/", "Official Documentation" %}
{% Blog "https://www.youtube.com/watch?v=YD91G8DdUsw", " Less CSS Pre-Processor Tutorial" %}
{% endresources %}

@ -0,0 +1,8 @@
# CSS Preprocessors
CSS Preprocessors are scripting languages that extend the default capabilities of CSS. They enable us to use logic in our CSS code, such as variables, nesting, inheritance, mixins, functions, and mathematical operations.
{% resources %}
{% Blog "https://www.freecodecamp.org/news/css-preprocessors/#:~:text=CSS%20Preprocessors%20compile%20the%20code,preprocessor%20were%20not%20in%20place.", "CSS Preprocessors Explained" %}
{% Blog "https://sherocommerce.com/what-is-a-css-preprocessors-why-use-them/", "Why Use Preprocessors?" %}
{% endresources %}

@ -0,0 +1,9 @@
# npm Scripts
npm scripts are the entries in the scripts field of the package.json file. The scripts field holds an object where you can specify various commands and scripts that you want to expose.
{% resources %}
{% Blog "https://www.geeksforgeeks.org/introduction-to-npm-scripts/", "Introduction to npm scripts" %}
{% Blog "https://www.youtube.com/watch?v=hHt3oVk3XVk", "Codevolution: npm scripts" %}
{% endresources %}

@ -0,0 +1,8 @@
# Task Runners
Task Runner are tools to simplify certain tedious tasks of development, like automating sass/scss compilation, bundling assets, linting source code, and hot reloading local server.
{% resources %}
{% Blog "https://docs.npmjs.com/cli/v8/using-npm/scripts", "npm script" %}
{% Blog "https://classic.yarnpkg.com/lang/en/docs/cli/run/#toc-yarn-run-script", "yarn script" %}
{% endresources %}

@ -0,0 +1,9 @@
# Webpack
Webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.
{% resources %}
{% Official "https://webpack.js.org/", "Webpack Official Website" %}
{% Official "https://webpack.js.org/concepts/", "Webpack Documentation" %}
{% Official "https://www.valentinog.com/blog/webpack", "A Complete Guide to Webpack 5" %}
{% endresources %}

@ -0,0 +1,9 @@
# esbuild
Our current build tools for the web are 10-100x slower than they could be. The main goal of the esbuild bundler project is to bring about a new era of build tool performance, and create an easy-to-use modern bundler along the way.
{% resources %}
{% Official "https://esbuild.github.io/", "Esbuild Official Website" %}
{% Official "https://esbuild.github.io/api/", "Esbuild Documentation" %}
{% Blog "https://www.youtube.com/watch?v=9XS_RA6zyyU", "Why are People Obsessed with esbuild?" %}
{% endresources %}

@ -0,0 +1,8 @@
# Rollup
Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application.
{% resources %}
{% Official "https://rollupjs.org/", "Official Website and Docs" %}
{% Blog "https://www.youtube.com/watch?v=ICYLOZuFMz8", "How to Set Up JavaScript Bundling Using Rollup" %}
{% endresources %}

@ -0,0 +1,8 @@
# Parcel
Parcel is a web application bundler, differentiated by its developer experience. It offers blazing-fast performance utilizing multicore processing and requires zero configuration.
{% resources %}
{% Official "https://parceljs.org/plugin-system/bundler/", "Official Website and Docs" %}
{% Blog "https://www.youtube.com/watch?v=hCxvp3_o0gM", "Using Parcel Bundler with React" %}
{% endresources %}

@ -0,0 +1,9 @@
# Vite
Vite is a build tool that aims to provide a faster and leaner development experience for modern web projects.
{% resources %}
{% Official "https://vitejs.dev", "Vite Website" %}
{% Official "https://vitejs.dev/guide", "Vite Documentation" %}
{% Course "https://youtu.be/LQQ3CR2JTX8", "Vite Crash Course" %}
{% endresources %}

@ -0,0 +1,11 @@
# Module Bundlers
A module bundler is a tool that takes pieces of JavaScript and their dependencies and bundles them into a single file, usually for use in the browser. You may have used tools such as Browserify, Webpack, Rollup or one of many others.
It usually starts with an entry file, and from there it bundles up all of the code needed for that entry file.
{% resources %}
{% Blog "https://www.freecodecamp.org/news/lets-learn-how-module-bundlers-work-and-then-write-one-ourselves-b2e3fe6c88ae/", "Let’s learn how module bundlers work" %}
{% Blog "https://www.youtube.com/watch?v=5IG4UmULyoA", "Module Bundlers Explained" %}
{% endresources %}

@ -0,0 +1,8 @@
# Prettier
Prettier is an opinionated code formatter with support for JavaScript, HTML, CSS, YAML, Markdown, GraphQL Schemas. By far the biggest reason for adopting Prettier is to stop all the on-going debates over styles.
{% resources %}
{% Official "https://prettier.io", "Prettier Website" %}
{% Official "https://prettier.io/docs/en/why-prettier.html", "Why Prettier" %}
{% endresources %}

@ -0,0 +1,9 @@
# ESLint
With ESLint you can impose the coding standard using a certain set of standalone rules.
{% resources %}
{% Official "https://eslint.org/", "ESLint Official Website" %}
{% Blog "https://dev.to/shivambmgupta/eslint-what-why-when-how-5f1d", "Introduction to ESLint" %}
{% Blog "https://www.youtube.com/watch?v=qhuFviJn-es", "ESLint Quickstart - find errors automatically" %}
{% endresources %}

@ -0,0 +1,8 @@
# StandardJS
Standardjs is a Style guide, with linter & automatic code fixer. It is a way to enforce consistent style in your project. It automatically formats code.
Standard JS is a tool in the Code Review category of a tech stack.
{% resources %}
{% Official "https://standardjs.com/", "Official Website" %}
{% endresources %}

@ -0,0 +1,7 @@
# Linters formatters
A linter is a tool used to analyze code and discover bugs, syntax errors, stylistic inconsistencies, and suspicious constructs. Popular linters for JavaScript include ESLint, JSLint, and JSHint.
{% resources %}
{% Blog "https://www.testim.io/blog/what-is-a-linter-heres-a-definition-and-quick-start-guide/", "What Is a Linter?" %}
{% endresources %}

@ -0,0 +1,11 @@
# Build Tools
Task runners automatically execute commands and carry out processes behind the scenes. This helps automate your workflow by performing mundane, repetitive tasks that you would otherwise waste an egregious amount of time repeating yourself.
Common usages of task runners include numerous development tasks such as: spinning up development servers, compiling code (ex. SCSS to CSS), running linters, serving files up from a local port on your computer, and many more!
{% resources %}
{% Blog "https://webpack.js.org/", "webpack is a static module bundler for modern JavaScript applications" %}
{% Blog "https://vitejs.dev", "Vite Next Generation Frontend Tooling" %}
{% Blog "https://parceljs.org/", "Parcel is a zero configuration build tool for the web" %}
{% endresources %}

@ -0,0 +1,10 @@
# Redux
Redux is a predictable state container for JavaScript apps. It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. On top of that, it provides a great developer experience, such as [live code editing combined with a time traveling debugger](https://github.com/reduxjs/redux-devtools).
{% resources %}
{% Blog "https://redux.js.org/", "Official Website" %}
{% Blog "https://redux.js.org/introduction/getting-started", "Official Getting Started to Redux" %}
{% Course "https://redux.js.org/tutorials/essentials/part-1-overview-concepts", "Official Tutorial to Learn Redux" %}
{% Course "https://egghead.io/courses/fundamentals-of-redux-course-from-dan-abramov-bd5cc867", "Fundamentals of Redux Course from Dan Abramov" %}
{% endresources %}

@ -0,0 +1,8 @@
# MobX
MobX is an open source state management tool. MobX, a simple, scalable, and standalone state management library, follows functional reactive programming (FRP) implementation and prevents inconsistent state by ensuring that all derivations are performed automatically.
{% resources %}
{% Official "https://mobx.js.org/", "MobX Official Website" %}
{% Blog "https://www.youtube.com/watch?v=WQQq1QbYlAw", "Intro to MobX Tutorial" %}
{% endresources %}

@ -0,0 +1,9 @@
# Recoil
Recoil is a new state management library built by the Facebook team that simplifies global state management.
{% resources %}
{% Official "https://recoiljs.org/", "Recoil Official Website" %}
{% Blog "https://recoiljs.org/docs/introduction/getting-started", "Official Documentation" %}
{% Blog "https://www.youtube.com/watch?v=BchtCWxs7sA", "Learn the basics of Recoil.js" %}
{% endresources %}

@ -0,0 +1,15 @@
{% Roadmap "/react", "React" %}
# React
React is the most popular front-end JavaScript library for building user interfaces. React can also render on the server using Node and power mobile apps using React Native.
{% resources %}
{% Official "https://reactjs.org/", "React Website" %}
{% Blog "https://reactjs.org/tutorial/tutorial.html", "Official Getting Started" %}
{% Blog "https://beta.reactjs.org/", "Beta React Docs" %}
{% Course "https://egghead.io/courses/the-beginner-s-guide-to-react", "The Beginners Guide to React" %}
{% Blog "https://www.youtube.com/watch?v=nTeuhbP7wdE", "React JS Course for Beginners" %}
{% Blog "https://www.youtube.com/watch?v=bMknfKXIFA8", "React Course - Beginners Tutorial for React JavaScript Library [2022]" %}
{% Blog "https://www.youtube.com/watch?v=i793Qm6kv3U", "Understanding Reacts UI Rendering Process" %}
{% endresources %}

@ -0,0 +1,10 @@
# RxJS
RxJS (Reactive Extensions for JavaScript) is a library for reactive programming using observables that makes it easier to compose asynchronous or callback-based code.
{% resources %}
{% Official "https://rxjs.dev/guide/overview", "RxJS Official Website" %}
{% Blog "https://angular.io/guide/rx-library", "RxJS Angular Docs" %}
{% Course "https://www.youtube.com/watch?v=PhggNGsSQyg", "RxJS Crash Course" %}
{% Blog "https://www.youtube.com/watch?v=2LCo926NFLI", "RxJS Quick Start" %}
{% endresources %}

@ -0,0 +1,9 @@
# NgRx
NgRx is an open source library that provides reactive state management for your Angular applications
{% resources %}
{% Official "https://ngrx.io/docs", "Official Documentation" %}
{% Blog "https://www.youtube.com/watch?v=2LCo926NFLI", "Angular NgRx Redux Quick Start Tutorial" %}
{% Blog "https://www.youtube.com/watch?v=nuHBHD32iw8", "NgRx Course" %}
{% endresources %}

@ -0,0 +1,10 @@
{% Roadmap "/angular", "Angular" %}
# Angular
Angular is a component based front-end development framework built on TypeScript which includes a collection of well-integrated libraries that include features like routing, forms management, client-server communication, and more.
{% resources %}
{% Blog "https://angular.io/start", "Official - Getting started with Angular" %}
{% Blog "https://www.youtube.com/watch?v=3qBXWUpoPHo", "Angular for Beginners Course [Full Front End Tutorial with TypeScript]" %}
{% endresources %}

@ -0,0 +1,7 @@
# Pinia
Pinia is a store library for Vue.js, and can be used in Vue 2 and Vue 3, with the same API, except in SSR and its installation. It allows state sharing between pages and components around the application. As the documentation says, it is extensible, intuitive (by organization), has devtools support (in Vue.js devtools), inferred typed state even in javascript and more. In Pinia you can access, mutate, replace, use getters that works like computed, use actions, etc. The library is recommended by the official Vue.js documentation.
{% resources %}
{% Blog "https://pinia.vuejs.org/", "Official Documentation" %}
{% endresources %}

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

Loading…
Cancel
Save