├── .gitignore ├── .prettierrc.json ├── .vscode └── settings.json ├── CONTRIBUTING.md ├── Date └── README.md ├── LICENSE ├── README.md ├── babel └── README.md ├── challenges ├── 25 │ ├── index.html │ └── index.js ├── 26 │ ├── index.html │ └── index.js ├── 27 │ ├── index.html │ └── index.js ├── 28 │ ├── index.html │ └── index.js ├── 29 │ ├── index.html │ └── index.js ├── 30 │ ├── index.html │ └── index.js ├── 31 │ ├── index.html │ └── index.js ├── 32 │ ├── index.html │ └── index.js ├── 33 │ ├── index.html │ ├── index.js │ └── util.js ├── 34 │ ├── index.html │ ├── index.js │ └── util.js ├── 35 │ ├── index.html │ ├── index.js │ └── util.js ├── 36 │ ├── edit.html │ ├── index.html │ ├── notes-app.js │ ├── notes-edit.js │ └── notes-functions.js ├── 37 │ ├── edit.html │ ├── index.html │ ├── notes-app.js │ ├── notes-edit.js │ └── notes-functions.js ├── 38 │ ├── edit.html │ ├── index.html │ ├── notes-app.js │ ├── notes-edit.js │ └── notes-functions.js ├── 39 │ ├── edit.html │ ├── index.html │ ├── notes-app.js │ ├── notes-edit.js │ └── notes-functions.js ├── 41 │ ├── edit.html │ ├── index.html │ ├── notes-app.js │ ├── notes-edit.js │ └── notes-functions.js ├── 43 │ ├── edit.html │ ├── index.html │ ├── notes-app.js │ ├── notes-edit.js │ └── notes-functions.js ├── 44 │ ├── index.html │ ├── todo-app.js │ └── todo-functions.js ├── 46 │ ├── index.html │ ├── todo-app.js │ └── todo-functions.js ├── 50 │ ├── index.html │ └── index.js ├── 51 │ ├── app.js │ ├── index.html │ └── index.js ├── 52 │ ├── app.js │ ├── hangman.js │ └── index.html ├── 53 │ ├── app.js │ ├── hangman.js │ └── index.html ├── 54 │ └── person.js ├── 55 │ ├── app.js │ ├── hangman.js │ └── index.html ├── 60 │ ├── app.js │ ├── hangman.js │ ├── index.html │ └── requests.js ├── 61 │ ├── app.js │ ├── hangman.js │ ├── index.html │ └── requests.js ├── 62 │ ├── app.js │ ├── hangman.js │ ├── index.html │ └── requests.js ├── 63 │ ├── app.js │ ├── hangman.js │ ├── index.html │ └── requests.js ├── 64 │ ├── app.js │ ├── hangman.js │ ├── index.html │ └── requests.js ├── 65 │ ├── app.js │ ├── hangman.js │ ├── index.html │ └── requests.js ├── 66 │ ├── images │ │ └── favicon.png │ ├── index.html │ ├── scripts │ │ ├── app.js │ │ ├── hangman.js │ │ └── requests.js │ └── styles │ │ └── styles.css └── README.md ├── chrome-extensions ├── .gitignore ├── README.md ├── sample_1 │ ├── .gitignore │ ├── icon.png │ ├── index.css │ ├── index.html │ ├── index.js │ ├── manifest.json │ └── options.html ├── sample_2 │ ├── .gitignore │ ├── icon.png │ ├── index.css │ ├── index.html │ ├── index.js │ ├── manifest.json │ ├── options.html │ └── options.js └── sample_3 │ ├── .gitignore │ ├── background.js │ ├── icon.png │ ├── index.css │ ├── index.html │ ├── index.js │ ├── manifest.json │ ├── options.html │ └── options.js ├── electron └── README.md ├── examples ├── example-1 │ └── index.html └── example-2 │ ├── index.html │ └── index.js ├── nodejs ├── README.md └── nvm │ └── README.md ├── npm-packages ├── README.md ├── eslint │ └── README.md ├── husky │ └── README.md ├── lint-staged │ └── README.md └── prettier │ └── README.md ├── package-managers ├── README.md ├── npm │ └── README.md ├── pnpm │ └── README.md └── yarn │ └── README.md ├── react ├── .gitignore ├── README.md ├── auth0 │ └── README.md ├── challenges │ └── README.md ├── create-a-react-application │ ├── README.md │ ├── cdn │ │ └── README.md │ ├── cra │ │ └── README.md │ ├── deno │ │ └── README.md │ ├── npm │ │ └── README.md │ └── vite │ │ └── README.md ├── data-fetching │ ├── README.md │ ├── react_query │ │ └── README.md │ └── swr │ │ └── README.md ├── playwright │ └── README.md ├── projects │ └── tm │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── .yarnrc.yml │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── postinstall.js │ │ ├── public │ │ └── vite.svg │ │ ├── src │ │ ├── ApiKey.tsx │ │ ├── App.css │ │ ├── App.tsx │ │ ├── assets │ │ │ └── react.svg │ │ ├── index.css │ │ ├── main.tsx │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ ├── vite.config.ts │ │ └── yarn.lock ├── re-render │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── pages │ │ │ ├── Parent │ │ │ │ └── index.tsx │ │ │ └── ParentChild │ │ │ │ └── index.tsx │ │ └── setupTests.ts │ ├── tsconfig.json │ └── yarn.lock ├── react-component-libraries │ └── README.md ├── react-error-boundaries │ ├── README.md │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── pages │ │ │ ├── GlobalError.tsx │ │ │ ├── LocalError.tsx │ │ │ └── components │ │ │ │ └── CardData.tsx │ │ ├── react-app-env.d.ts │ │ ├── server.js │ │ └── setupTests.ts │ ├── tsconfig.json │ └── yarn.lock ├── react-hooks │ └── README.md ├── react-lifecycle │ ├── README.md │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ └── setupTests.ts │ ├── tsconfig.json │ └── yarn.lock ├── react-testing-library │ └── README.md ├── snippets │ └── README.md ├── state-managers │ ├── context │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── data-redux │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ └── store.tsx │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── jotai │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ └── store.tsx │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── native-data │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ └── store.tsx │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── react-query │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ └── store.tsx │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── redux │ │ ├── .gitignore │ │ ├── README.md │ │ ├── README.old.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── use │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.js │ │ │ ├── App.test.js │ │ │ ├── index.css │ │ │ ├── index.js │ │ │ ├── logo.svg │ │ │ ├── reportWebVitals.js │ │ │ └── setupTests.js │ │ └── yarn.lock │ ├── usecallback │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── useeffect │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ ├── names.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── usememo │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── usereducer │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── useref │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── usestate │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ └── setupTests.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ ├── valtio │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ │ ├── data.json │ │ │ ├── favicon.ico │ │ │ ├── index.html │ │ │ ├── logo192.png │ │ │ ├── logo512.png │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ ├── src │ │ │ ├── App.css │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── index.tsx │ │ │ ├── logo.svg │ │ │ ├── react-app-env.d.ts │ │ │ ├── reportWebVitals.ts │ │ │ ├── setupTests.ts │ │ │ └── store.tsx │ │ ├── tsconfig.json │ │ └── yarn.lock │ └── zustand │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public │ │ ├── data.json │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ │ ├── src │ │ ├── App.css │ │ ├── App.test.tsx │ │ ├── App.tsx │ │ ├── index.css │ │ ├── index.tsx │ │ ├── logo.svg │ │ ├── react-app-env.d.ts │ │ ├── reportWebVitals.ts │ │ ├── setupTests.ts │ │ └── store.tsx │ │ ├── tsconfig.json │ │ └── yarn.lock └── storybook │ ├── README.md │ ├── sb-automation │ └── README.md │ ├── sb-cra │ ├── .gitignore │ ├── .npmrc │ ├── .storybook │ │ ├── main.js │ │ └── preview.js │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ ├── index.html │ │ ├── logo192.png │ │ ├── logo512.png │ │ ├── manifest.json │ │ └── robots.txt │ └── src │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── logo.svg │ │ ├── reportWebVitals.js │ │ ├── setupTests.js │ │ └── stories │ │ ├── Button.jsx │ │ ├── Button.stories.jsx │ │ ├── Header.jsx │ │ ├── Header.stories.jsx │ │ ├── Introduction.stories.mdx │ │ ├── Page.jsx │ │ ├── Page.stories.jsx │ │ ├── assets │ │ ├── code-brackets.svg │ │ ├── colors.svg │ │ ├── comments.svg │ │ ├── direction.svg │ │ ├── flow.svg │ │ ├── plugin.svg │ │ ├── repo.svg │ │ └── stackalt.svg │ │ ├── button.css │ │ ├── header.css │ │ └── page.css │ ├── sb-rollup-docker │ └── README.md │ └── sb-rollup │ ├── .gitignore │ ├── .npmrc │ ├── .storybook │ ├── main.js │ └── preview.js │ ├── README.md │ ├── components │ └── index.ts │ ├── package-lock.json │ ├── package.json │ ├── stories │ ├── Button.stories.tsx │ ├── Button.tsx │ ├── Header.stories.tsx │ ├── Header.tsx │ ├── Introduction.stories.mdx │ ├── Page.stories.tsx │ ├── Page.tsx │ ├── assets │ │ ├── code-brackets.svg │ │ ├── colors.svg │ │ ├── comments.svg │ │ ├── direction.svg │ │ ├── flow.svg │ │ ├── plugin.svg │ │ ├── repo.svg │ │ └── stackalt.svg │ ├── button.css │ ├── header.css │ └── page.css │ └── tsconfig.json ├── scripts ├── README.md ├── get_jira_issue_names.js └── get_medium_posts.js ├── typescript └── README.md ├── vue ├── README.md └── nuxt │ ├── README.md │ └── tailwind-app │ ├── .gitignore │ ├── .npmrc │ ├── README.md │ ├── app.vue │ ├── assets │ └── css │ │ └── main.css │ ├── nuxt.config.ts │ ├── package-lock.json │ ├── package.json │ ├── postcss.config.js │ ├── public │ └── favicon.ico │ ├── server │ └── tsconfig.json │ ├── tailwind.config.js │ └── tsconfig.json └── webpack └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "useTabs": false, 4 | "bracketSpacing": true, 5 | "semi": true 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.defaultFormatter": "esbenp.prettier-vscode", 3 | "editor.formatOnSave": true, 4 | "files.trimTrailingWhitespace": true, 5 | "editor.codeActionsOnSave": null, 6 | "prettier.useTabs": false 7 | } 8 | -------------------------------------------------------------------------------- /babel/README.md: -------------------------------------------------------------------------------- 1 | # Introduction 2 | 3 | We can use the Babel tool to write code in the most recent JavaScript version. Babel will compile our code to a supported version for wider Browser compatibility. 4 | 5 | ```mermaid 6 | flowchart LR 7 | index.js --> Babel --> bundle.js 8 | ``` 9 | 10 | In 11 | 12 | ```js 13 | // ES2020 nullish coalescing 14 | function greet(input) { 15 | return input ?? "Hello world"; 16 | } 17 | ``` 18 | 19 | Out 20 | 21 | ```js 22 | function greet(input) { 23 | return input != null ? input : "Hello world"; 24 | } 25 | ``` 26 | 27 | [Source](https://github.com/babel/babel) 28 | 29 | 30 | # Intallation 31 | 32 | ```shell 33 | npm install -g babel-cli 34 | babel --version 35 | # 6.26.0 (babel-core 6.26.3) 36 | cd babel 37 | npm init 38 | npm install babel-preset-env 39 | ``` 40 | 41 | # Resources 42 | 43 | 1. [Minimal Babel Setup](https://kheohyeewei.medium.com/minimal-babel-setup-b12b563ee2ca) 44 | -------------------------------------------------------------------------------- /challenges/25/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 |Clean the kitchen
12 |Book flights
13 |Research museum
14 |Walk the dog
15 |Finish this course!
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /challenges/25/index.js: -------------------------------------------------------------------------------- 1 | const ps = document.querySelectorAll("p"); 2 | 3 | ps.forEach((p) => { 4 | if (p.textContent.toLowerCase().includes("the")) { 5 | p.remove(); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /challenges/26/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 |