diff --git a/.astro/settings.json b/.astro/settings.json index ae1e9bec9..3205569d2 100644 --- a/.astro/settings.json +++ b/.astro/settings.json @@ -3,6 +3,6 @@ "enabled": false }, "_variables": { - "lastUpdateCheck": 1718033223263 + "lastUpdateCheck": 1719080230711 } } \ No newline at end of file diff --git a/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md b/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md deleted file mode 100644 index a85d70f26..000000000 --- a/src/data/roadmaps/frontend/content/101-html/103-conventions-and-best-practices.md +++ /dev/null @@ -1,7 +0,0 @@ -# Best Practices - -Learn to follow the best practices for writing maintainable and scalable HTML documents. - -Visit the following resources to learn more: - -- [@opensource@HTML Best Practices](https://github.com/hail2u/html-best-practices) diff --git a/src/data/roadmaps/frontend/content/103-javascript/103-es6-and-modular-javascript.md b/src/data/roadmaps/frontend/content/103-javascript/103-es6-and-modular-javascript.md deleted file mode 100644 index 27e26620e..000000000 --- a/src/data/roadmaps/frontend/content/103-javascript/103-es6-and-modular-javascript.md +++ /dev/null @@ -1,14 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@article@ES6 Tutorial](https://www.javascripttutorial.net/es6/) -- [@article@W3Schools: Javascript ES6](https://www.w3schools.com/js/js_es6.asp) -- [@video@Learn Modern JavaScript in 1 Hour](https://www.youtube.com/watch?v=NCwa_xi0Uuc) -- [@video@JavaScript ES6, ES7, ES8](https://www.youtube.com/watch?v=nZ1DMMsyVyI) -- [@video@Build 15 JavaScript Projects - Vanilla JavaScript](https://www.youtube.com/watch?v=3PHXvlpOkf4) -- [@article@Modern JavaScript ES6, ES7 & ES8](https://codeloop.org/learn-modern-javascript-es6-es7-es8) -- [@article@Easy ES6 Goodies for Busy JavaScript Developers](https://thenewstack.io/fat-arrow-points-way-easy-es6-goodies-busy-js-devs/) -- [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md b/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md deleted file mode 100644 index 4e4705f43..000000000 --- a/src/data/roadmaps/frontend/content/103-javascript/104-concepts.md +++ /dev/null @@ -1,15 +0,0 @@ -# JavaScript Concepts - -Learn and understand the concepts such as Hoisting, Event Bubbling, Scope, Prototype, Shadow DOM and strict. - -Visit the following resources to learn more: - -- [@article@JavaScript Hoisting](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting) -- [@article@Event Bubbling and Capturing](https://javascript.info/bubbling-and-capturing) -- [@article@Scope in JavaScript](https://developer.mozilla.org/en-US/docs/Glossary/Scope) -- [@article@Var, Let and Const — Whats the difference?](https://www.freecodecamp.org/news/var-let-and-const-whats-the-difference/) -- [@article@Inheritance and Prototype Chain](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) -- [@article@JavaScript Strict Mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) -- [@article@JavaScript Visualized (7 Part Series)](https://dev.to/lydiahallie/javascript-visualized-event-loop-3dif) -- [@video@DOM vs Shadow DOM vs Virtual DOM](https://www.youtube.com/watch?v=7Tok22qxPzQ) -- [@article@Demystifying JavaScript Promises](https://blog.greenroots.info/series/javascript-promises) diff --git a/src/data/roadmaps/frontend/content/108-css-architecture/101-oocss.md b/src/data/roadmaps/frontend/content/108-css-architecture/101-oocss.md deleted file mode 100644 index 093d9f866..000000000 --- a/src/data/roadmaps/frontend/content/108-css-architecture/101-oocss.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@official@OOCSS Official Website](http://oocss.org/) -- [@article@Introduction to Object Oriented CSS](https://www.smashingmagazine.com/2011/12/an-introduction-to-object-oriented-css-oocss/) diff --git a/src/data/roadmaps/frontend/content/108-css-architecture/102-smacss.md b/src/data/roadmaps/frontend/content/108-css-architecture/102-smacss.md deleted file mode 100644 index 4ab83d142..000000000 --- a/src/data/roadmaps/frontend/content/108-css-architecture/102-smacss.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@official@SMACSS Official Website](http://smacss.com/) diff --git a/src/data/roadmaps/frontend/content/109-css-preprocessors/102-less.md b/src/data/roadmaps/frontend/content/109-css-preprocessors/102-less.md deleted file mode 100644 index 5afafc1ad..000000000 --- a/src/data/roadmaps/frontend/content/109-css-preprocessors/102-less.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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). - -Visit the following resources to learn more: - -- [@article@Official Website](https://lesscss.org/) -- [@article@Official Documentation](https://lesscss.org/usage/) -- [@video@ Less CSS Pre-Processor Tutorial](https://www.youtube.com/watch?v=YD91G8DdUsw) diff --git a/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md b/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md deleted file mode 100644 index 38579febc..000000000 --- a/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/100-npm-scripts.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@article@Introduction to npm scripts](https://www.geeksforgeeks.org/introduction-to-npm-scripts/) -- [@video@Codevolution: npm scripts](https://www.youtube.com/watch?v=hHt3oVk3XVk) -- [@feed@Explore top posts about NPM](https://app.daily.dev/tags/npm?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/index.md b/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/index.md deleted file mode 100644 index 529755237..000000000 --- a/src/data/roadmaps/frontend/content/110-build-tools/100-task-runners/index.md +++ /dev/null @@ -1,10 +0,0 @@ -# Task Runners - -Task Runners are tools to simplify certain tedious tasks of development, like automating sass/scss compilation, bundling assets, linting source code, and hot reloading local server. Examples of task runners include Webpack, Grunt, Rollup, and Gulp. - -Visit the following resources to learn more: - -- [@article@What is a Javascript task runner](https://www.educative.io/answers/what-is-a-javascript-task-runner) -- [@article@npm script](https://docs.npmjs.com/cli/v8/using-npm/scripts) -- [@article@yarn script](https://classic.yarnpkg.com/lang/en/docs/cli/run/#toc-yarn-run-script) -- [@article@bun script](https://bun.sh/docs/cli/run#run-a-package-json-script) diff --git a/src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/102-standardjs.md b/src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/102-standardjs.md deleted file mode 100644 index 2b41ef423..000000000 --- a/src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/102-standardjs.md +++ /dev/null @@ -1,8 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@official@Official Website](https://standardjs.com/) diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/100-redux.md b/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/100-redux.md deleted file mode 100644 index b31bd5813..000000000 --- a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/100-redux.md +++ /dev/null @@ -1,10 +0,0 @@ -# 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). - -Visit the following resources to learn more: - -- [@article@Official Website](https://redux.js.org/) -- [@article@Official Getting Started to Redux](https://redux.js.org/introduction/getting-started) -- [@article@Official Tutorial to Learn Redux](https://redux.js.org/tutorials/essentials/part-1-overview-concepts) -- [@feed@Explore top posts about Redux](https://app.daily.dev/tags/redux?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/101-mobx.md b/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/101-mobx.md deleted file mode 100644 index e32860974..000000000 --- a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/101-mobx.md +++ /dev/null @@ -1,9 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@article@MobX Official Website](https://mobx.js.org/) -- [@video@Intro to MobX Tutorial](https://www.youtube.com/watch?v=WQQq1QbYlAw) -- [@feed@Explore top posts about React](https://app.daily.dev/tags/react?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/102-recoil.md b/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/102-recoil.md deleted file mode 100644 index 0e4198e15..000000000 --- a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/102-recoil.md +++ /dev/null @@ -1,10 +0,0 @@ -# Recoil - -Recoil is a new state management library built by the Facebook team that simplifies global state management. - -Visit the following resources to learn more: - -- [@article@Recoil Official Website](https://recoiljs.org/) -- [@article@Official Documentation](https://recoiljs.org/docs/introduction/getting-started) -- [@video@Learn the basics of Recoil.js](https://www.youtube.com/watch?v=BchtCWxs7sA) -- [@feed@Explore top posts about React](https://app.daily.dev/tags/react?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/100-rxjs.md b/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/100-rxjs.md deleted file mode 100644 index fa8ec8d6b..000000000 --- a/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/100-rxjs.md +++ /dev/null @@ -1,11 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@official@RxJS Official Website](https://rxjs.dev/guide/overview) -- [@article@RxJS Angular Docs](https://angular.io/guide/rx-library) -- [@video@RxJS Crash Course](https://www.youtube.com/watch?v=PhggNGsSQyg) -- [@video@RxJS Quick Start](https://www.youtube.com/watch?v=2LCo926NFLI) -- [@feed@Explore top posts about RxJS](https://app.daily.dev/tags/rxjs?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/101-ngrx.md b/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/101-ngrx.md deleted file mode 100644 index 910e90b87..000000000 --- a/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/101-ngrx.md +++ /dev/null @@ -1,9 +0,0 @@ -# NgRx - -NgRx is an open source library that provides reactive state management for your Angular applications - -Visit the following resources to learn more: - -- [@official@Official Documentation](https://ngrx.io/docs) -- [@video@Angular NgRx Redux Quick Start Tutorial](https://www.youtube.com/watch?v=2LCo926NFLI) -- [@video@NgRx Course](https://www.youtube.com/watch?v=nuHBHD32iw8) diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/102-vue-js/100-pinia.md b/src/data/roadmaps/frontend/content/111-pick-a-framework/102-vue-js/100-pinia.md deleted file mode 100644 index 429d0feb1..000000000 --- a/src/data/roadmaps/frontend/content/111-pick-a-framework/102-vue-js/100-pinia.md +++ /dev/null @@ -1,7 +0,0 @@ -# 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. - -Visit the following resources to learn more: - -- [@article@Official Documentation](https://pinia.vuejs.org/) diff --git a/src/data/roadmaps/frontend/content/112-modern-css/100-styled-components.md b/src/data/roadmaps/frontend/content/112-modern-css/100-styled-components.md deleted file mode 100644 index 72f54f488..000000000 --- a/src/data/roadmaps/frontend/content/112-modern-css/100-styled-components.md +++ /dev/null @@ -1,10 +0,0 @@ -# Styled components - -Styled-components is a CSS-in-JS library that enables you to write regular CSS and attach it to JavaScript components. With styled-components, you can use the CSS you’re already familiar with instead of having to learn a new styling structure. - -Visit the following resources to learn more: - -- [@article@Official Website](https://styled-components.com/) -- [@article@Official Docs](https://styled-components.com/docs) -- [@video@Styled Components Crash Course & Project](https://www.youtube.com/watch?v=02zO0hZmwnw) -- [@feed@Explore top posts about Styled Components](https://app.daily.dev/tags/styled-components?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md b/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md deleted file mode 100644 index 284917b47..000000000 --- a/src/data/roadmaps/frontend/content/112-modern-css/101-css-modules.md +++ /dev/null @@ -1,10 +0,0 @@ -# CSS Modules - -CSS files in which all class names and animation names are scoped locally by default. - -Visit the following resources to learn more: - -- [@opensource@Project GitHub Repository](https://github.com/css-modules/css-modules) -- [@article@Using CSS Modules In React App](https://medium.com/@ralph1786/using-css-modules-in-react-app-c2079eadbb87) -- [@video@CSS Modules: Why are they great?](https://www.youtube.com/watch?v=pKMWU9OrA2s) -- [@feed@Explore top posts about CSS](https://app.daily.dev/tags/css?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/112-modern-css/102-styled-jsx.md b/src/data/roadmaps/frontend/content/112-modern-css/102-styled-jsx.md deleted file mode 100644 index d4b9ef16a..000000000 --- a/src/data/roadmaps/frontend/content/112-modern-css/102-styled-jsx.md +++ /dev/null @@ -1,9 +0,0 @@ -# Styled JSX - -Styled JSX is a CSS-in-JS library that allows you to write encapsulated and scoped CSS to style your components. The styles you introduce for one component won't affect other components, allowing you to add, change and delete styles without worrying about unintended side effects. - -Visit the following resources to learn more: - -- [@opensource@Getting started](https://github.com/vercel/styled-jsx) -- [@video@Styled JSX in Next.js: Master Next.js](https://www.youtube.com/watch?v=SM5uVbfgfdo) -- [@feed@Explore top posts about JSX](https://app.daily.dev/tags/jsx?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/112-modern-css/103-emotion.md b/src/data/roadmaps/frontend/content/112-modern-css/103-emotion.md deleted file mode 100644 index 2ef92ea70..000000000 --- a/src/data/roadmaps/frontend/content/112-modern-css/103-emotion.md +++ /dev/null @@ -1,8 +0,0 @@ -# Emotion - -Emotion is a library designed for writing css styles with JavaScript. It provides powerful and predictable style composition in addition to a great developer experience with features such as source maps, labels, and testing utilities. Both string and object styles are supported. - -Visit the following resources to learn more: - -- [@official@Official Website and Docs](https://emotion.sh/docs/introduction) -- [@video@Styled components using emotion in React](https://www.youtube.com/watch?v=yO3JU2bMLGA) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/100-bootstrap.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/100-bootstrap.md deleted file mode 100644 index d6d1f43d3..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/100-bootstrap.md +++ /dev/null @@ -1,10 +0,0 @@ -# Bootstrap - -Quickly design and customize responsive mobile-first sites with Bootstrap, the world’s most popular front-end open source toolkit, featuring Sass variables and mixins, responsive grid system, extensive prebuilt components, and powerful JavaScript plugins. - -Visit the following resources to learn more: - -- [@article@Bootstrap Website](https://getbootstrap.com) -- [@article@Bootstrap Official Blog](https://blog.getbootstrap.com/2022/07/19/bootstrap-5-2-0/) -- [@video@Bootstrap CSS Framework - Full Course for Beginners](https://www.youtube.com/watch?v=-qfEOE4vtxE) -- [@feed@Explore top posts about Bootstrap](https://app.daily.dev/tags/bootstrap?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/101-bulma.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/101-bulma.md deleted file mode 100644 index c55134deb..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/101-bulma.md +++ /dev/null @@ -1,11 +0,0 @@ -# Bulma - -Bulma is a free, open source framework that provides ready-to-use frontend components that you can easily combine to build responsive web interfaces. - -Visit the following resources to learn more: - -- [@official@Bulma Website](https://bulma.io/) -- [@course@Learn Bulma CSS](https://scrimba.com/learn/bulma) -- [@article@How To Build A ? Responsive Blog Design With Bulma CSS](https://www.freecodecamp.org/news/how-to-build-a-responsive-blog-design-with-bulma-css-c2257a17c16b) -- [@video@Bulma CSS Tutorial](https://youtube.com/playlist?list=PL4cUxeGkcC9iXItWKbaQxcyDT1u6E7a8a) -- [@feed@Explore top posts about CSS](https://app.daily.dev/tags/css?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md deleted file mode 100644 index bf02a6321..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-css-first/index.md +++ /dev/null @@ -1 +0,0 @@ -# Css first diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/101-chakra-ui.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/101-chakra-ui.md deleted file mode 100644 index bc6ec88f7..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/101-chakra-ui.md +++ /dev/null @@ -1,11 +0,0 @@ -# Chakra UI - -Chakra UI is a simple, modular and accessible component library that gives you the building blocks you need to build your React applications. - -Visit the following resources to learn more: - -- [@article@Chakra UI Website](https://chakra-ui.com/) -- [@article@Chakra UI Official Getting Started](https://chakra-ui.com/docs/getting-started) -- [@article@Why You Should Start Using Chakra UI](https://www.freecodecamp.org/news/why-should-you-start-using-chakraui/) -- [@video@Official Getting Started Video](https://youtu.be/wI2vqXsjsIo) -- [@video@Chakra UI Crash Course](https://youtu.be/s-bIsz-NR3c) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/102-material-ui.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/102-material-ui.md deleted file mode 100644 index 3564eebdc..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/102-material-ui.md +++ /dev/null @@ -1,9 +0,0 @@ -# Material UI - -Material-UI is an open-source framework that features React components that implement Google’s Material Design. - -Visit the following resources to learn more: - -- [@article@Official Website](https://mui.com/material-ui/) -- [@article@Official Documentation](https://mui.com/material-ui/getting-started/) -- [@video@Material UI React Tutorial](https://www.youtube.com/watch?v=o1chMISeTC0) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/103-radix-ui.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/103-radix-ui.md deleted file mode 100644 index bc8b72ad5..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/103-radix-ui.md +++ /dev/null @@ -1,8 +0,0 @@ -# Radix UI - -An open-source UI component library for building high-quality, accessible design systems and web apps. - -Visit the following resources to learn more: - -- [@article@Official Website](https://www.radix-ui.com/) -- [@article@Official Documentation](https://www.radix-ui.com/docs/primitives/overview/introduction) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/103-shadcn-ui.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/103-shadcn-ui.md deleted file mode 100644 index d9a63b865..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/103-shadcn-ui.md +++ /dev/null @@ -1,6 +0,0 @@ -# Shadcn UI - -Shadcn UI are beautifully designed components that you can copy and paste into your apps. Accessible. Customizable. Open Source. They are built with Tailwind CSS and Radix UI. - -- [@official@Official Shadcn UI Website](https://ui.shadcn.com/) -- [@opensource@Official GitHub Repository](https://github.com/shadcn-ui/ui) \ No newline at end of file diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md deleted file mode 100644 index 7066d222c..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/104-mantine.md +++ /dev/null @@ -1,9 +0,0 @@ -# Mantine - -Mantine is a React components library with more than 100 customizable components and 40 hooks to cover you in any situation. - -Visit the following resources to learn more: - -- [@official@Mantine Website](https://mantine.dev/) -- [@official@Usage with Create React App](https://mantine.dev/guides/cra/) -- [@article@5 Mantine Hooks for UI management](https://blog.logrocket.com/5-mantine-hooks-simplifying-ui-management-react/) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md deleted file mode 100644 index a735b32e8..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/105-daisy-ui.md +++ /dev/null @@ -1,8 +0,0 @@ -# Daisy UI - -Component library around Tailwind CSS that comes with several built-in components. - -Visit the following resources to learn more: - -- [@official@DaisyUI Website](https://daisyui.com/) -- [@official@DaisyUI Documentation](https://daisyui.com/docs/install/) diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md b/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md deleted file mode 100644 index 3317066bb..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/index.md +++ /dev/null @@ -1 +0,0 @@ -# Js first diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/index.md b/src/data/roadmaps/frontend/content/114-css-frameworks/index.md deleted file mode 100644 index 1897ea616..000000000 --- a/src/data/roadmaps/frontend/content/114-css-frameworks/index.md +++ /dev/null @@ -1,9 +0,0 @@ -# CSS frameworks - -A CSS framework provides the user with a fully functional CSS stylesheet, allowing them to create a web page by simply coding the HTML with appropriate classes, structure, and IDs. Classes for popular website features like as the footer, slider, navigation bar, hamburger menu, column-based layouts, and so on are already included in the framework. - -Visit the following resources to learn more: - -- [@article@CSS Frameworks Introduction](https://en.wikipedia.org/wiki/CSS_framework) -- [@article@What are the benefits of using a css framework](https://css-tricks.com/what-are-the-benefits-of-using-a-css-framework/) -- [@feed@Explore top posts about CSS](https://app.daily.dev/tags/css?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/101-react-testing-library.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/101-react-testing-library.md deleted file mode 100644 index 5054c0648..000000000 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/101-react-testing-library.md +++ /dev/null @@ -1,8 +0,0 @@ -# React Testing Library - -The React Testing Library is a very lightweight solution for testing React components. It provides light utility functions on top of react-dom and react-dom/test-utils, in a way that encourages better testing practices. Its primary guiding principle is: The more your tests resemble the way your software is used, the more confidence they can give you. - -Visit the following resources to learn more: - -- [@article@React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) -- [@feed@Explore top posts about React](https://app.daily.dev/tags/react?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md deleted file mode 100644 index 0423c3ec2..000000000 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/104-other-options.md +++ /dev/null @@ -1 +0,0 @@ -# Other options diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/105-mocha.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/105-mocha.md deleted file mode 100644 index 4da256184..000000000 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/105-mocha.md +++ /dev/null @@ -1,9 +0,0 @@ -# Mocha - -Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases. - -Visit the following resources to learn more: - -- [@article@Official Website and Docs](https://mochajs.org/) -- [@video@Testing Node.js with Mocha](https://www.youtube.com/watch?v=Bs68k6xfR3E) -- [@feed@Explore top posts about Testing](https://app.daily.dev/tags/testing?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/106-chai.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/106-chai.md deleted file mode 100644 index ba56c43d4..000000000 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/106-chai.md +++ /dev/null @@ -1,9 +0,0 @@ -# Chai - -Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework. - -Visit the following resources to learn more: - -- [@article@Official Website and Docs](https://www.chaijs.com/) -- [@article@Official Docs](https://www.chaijs.com/guide/) -- [@video@Intro To JavaScript Unit Testing With Mocha JS & Chai](https://www.youtube.com/watch?v=MLTRHc5dk6s) diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/107-ava.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/107-ava.md deleted file mode 100644 index 1c7fdf21c..000000000 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/107-ava.md +++ /dev/null @@ -1,9 +0,0 @@ -# Ava - -Ava is a JavaScript test runner. It utilizes the async I/O nature of Node and runs concurrent tests, thereby vastly decreasing your test times. - -Visit the following resources to learn more: - -- [@opensource@Official Repository](https://github.com/avajs/ava) -- [@article@Testing your Node.js applications with Ava.js](https://www.freecodecamp.org/news/testing-your-nodejs-applications-with-ava-js-99e806a226a7/) -- [@video@AVA Tutorial](https://www.youtube.com/watch?v=RxLW6-3dk5A) diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/108-jasmine.md b/src/data/roadmaps/frontend/content/115-testing-your-apps/108-jasmine.md deleted file mode 100644 index 64ea304d4..000000000 --- a/src/data/roadmaps/frontend/content/115-testing-your-apps/108-jasmine.md +++ /dev/null @@ -1,10 +0,0 @@ -# Jasmine - -Jasmine is a behavior-driven development framework for testing JavaScript code. It does not depend on any other JavaScript frameworks. It does not require a DOM. And it has a clean, obvious syntax so that you can easily write tests. It provides utilities that can be used to run automated tests for both synchronous and asynchronous code. - -Visit the following resources to learn more: - -- [@article@Official Website](https://jasmine.github.io/) -- [@article@Official Docs](https://jasmine.github.io/pages/docs_home.html) -- [@opensource@Official Repository](https://github.com/jasmine/jasmine) -- [@video@Javascript Unit Testing with Jasmine](https://www.youtube.com/watch?v=rw4KlxKEENQ) diff --git a/src/data/roadmaps/frontend/content/116-type-checkers/101-flow.md b/src/data/roadmaps/frontend/content/116-type-checkers/101-flow.md deleted file mode 100644 index 28a9b8bf7..000000000 --- a/src/data/roadmaps/frontend/content/116-type-checkers/101-flow.md +++ /dev/null @@ -1,9 +0,0 @@ -# Flow - -Flow is a static type checker, designed to find type errors in JavaScript programs. - -Visit the following resources to learn more: - -- [@official@Official Website](https://flow.org/) -- [@official@Official Documentation](https://flow.org/en/docs/) -- [@video@Flow for Beginners](https://www.youtube.com/watch?v=0HlqX4lQZas) diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/101-after-js.md b/src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/101-after-js.md deleted file mode 100644 index b10e917b1..000000000 --- a/src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/101-after-js.md +++ /dev/null @@ -1,9 +0,0 @@ -# After.js - -After.js is an open-source JavaScript framework for developing SSR (Server Side Rendering) based applications. It is similar to the Next.js framework for server-rendered React apps but uses React Router instead of a folder structure based router like Next.js - -Visit the following resources to learn more: - -- [@opensource@Official GitHub repository](https://github.com/jaredpalmer/after.js) -- [@article@Documentation](https://www.npmjs.com/package/@jaredpalmer/after) -- [@feed@Explore top posts about JavaScript](https://app.daily.dev/tags/javascript?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/101-angular/100-universal.md b/src/data/roadmaps/frontend/content/118-server-side-rendering/101-angular/100-universal.md deleted file mode 100644 index 8e6a103c3..000000000 --- a/src/data/roadmaps/frontend/content/118-server-side-rendering/101-angular/100-universal.md +++ /dev/null @@ -1,7 +0,0 @@ -# Angular Universal - -The Angular Universal project is a community driven project to expand on the core APIs from Angular (platform-server) to enable developers to do the server side rendering of Angular applications. It mainly uses express to render pages on pages on node.js server. - -Visit the following resources to learn more: - -- [@article@Server-side rendering (SSR) with Angular Universal](https://angular.io/guide/universal) diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/101-gatsbyjs.md b/src/data/roadmaps/frontend/content/120-static-site-generators/101-gatsbyjs.md deleted file mode 100644 index a541ddac0..000000000 --- a/src/data/roadmaps/frontend/content/120-static-site-generators/101-gatsbyjs.md +++ /dev/null @@ -1,12 +0,0 @@ -# Gatsby - -Gatsby is a React-based open source framework with performance, scalability and security built-in. - -Visit the following resources to learn more: - -- [@official@Gatsby Website](https://www.gatsbyjs.com/) -- [@official@Gatsby Docs](https://www.gatsbyjs.com/docs) -- [@video@Gatsby Tutorial](https://youtube.com/playlist?list=PL4cUxeGkcC9hw1g77I35ZivVLe8k2nvjB) -- [@article@Getting Started with Gatsby, the Cloud Native Static Site Generator](https://thenewstack.io/getting-started-with-gatsby-the-cloud-native-static-site-generator/) -- [@article@Static Site Revolution: Top Websites Built with Gatsby](https://thenewstack.io/static-site-revolution-top-websites-built-with-gatsby/) -- [@feed@Explore top posts about Gatsby](https://app.daily.dev/tags/gatsby?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/104-jekyll.md b/src/data/roadmaps/frontend/content/120-static-site-generators/104-jekyll.md deleted file mode 100644 index 43e3168be..000000000 --- a/src/data/roadmaps/frontend/content/120-static-site-generators/104-jekyll.md +++ /dev/null @@ -1,9 +0,0 @@ -# Jekyll - -Jekyll is a static site generator. It takes text written in your favorite markup language and uses layouts to create a static website. You can tweak the site’s look and feel, URLs, the data displayed on the page, and more. - -Visit the following resources to learn more: - -- [@article@Jekyll Website](https://jekyllrb.com/) -- [@article@Jekyll Docs](https://jekyllrb.com/docs/) -- [@feed@Explore top posts about Web Development](https://app.daily.dev/tags/webdev?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/105-hugo.md b/src/data/roadmaps/frontend/content/120-static-site-generators/105-hugo.md deleted file mode 100644 index e253db98a..000000000 --- a/src/data/roadmaps/frontend/content/120-static-site-generators/105-hugo.md +++ /dev/null @@ -1,10 +0,0 @@ -# Hugo - -Hugo is the world’s fastest static website engine. It’s written in Go (aka Golang) and developed by bep, spf13 and friends. - -Visit the following resources to learn more: - -- [@article@Official Website](https://gohugo.io/) -- [@article@Official Docs for Getting Started](https://gohugo.io/documentation/) -- [@video@Introduction to Hugo - Static Site Generator ](https://www.youtube.com/watch?v=qtIqKaDlqXo&list=PLLAZ4kZ9dFpOnyRlyS-liKL5ReHDcj4G3) -- [@article@Tutorial: Use Hugo to Generate a Static Website](https://thenewstack.io/tutorial-use-hugo-to-generate-a-static-website/) diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/106-gridsome.md b/src/data/roadmaps/frontend/content/120-static-site-generators/106-gridsome.md deleted file mode 100644 index 95c053e77..000000000 --- a/src/data/roadmaps/frontend/content/120-static-site-generators/106-gridsome.md +++ /dev/null @@ -1,8 +0,0 @@ -# Gridsome - -Gridsome is a Vue.js powered Jamstack framework for building static generated websites & apps that are fast by default. - -Visit the following resources to learn more: - -- [@official@Gridsome Website](https://gridsome.org/) -- [@official@Gridsome Documentation](https://gridsome.org/docs/) diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/108-remix.md b/src/data/roadmaps/frontend/content/120-static-site-generators/108-remix.md deleted file mode 100644 index f563b6833..000000000 --- a/src/data/roadmaps/frontend/content/120-static-site-generators/108-remix.md +++ /dev/null @@ -1,8 +0,0 @@ -# Remix - -Remix is a full stack web framework that lets you focus on the user interface and work back through web standards to deliver a fast, slick, and resilient user experience. People are gonna love using your stuff. - -Visit the following resources to learn more: - -- [@official@Official Website](https://remix.run/) -- [@official@Official Docs for Getting Started](https://remix.run/docs/en/v1#getting-started) diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/101-nativescript.md b/src/data/roadmaps/frontend/content/121-mobile-applications/101-nativescript.md deleted file mode 100644 index c903849c7..000000000 --- a/src/data/roadmaps/frontend/content/121-mobile-applications/101-nativescript.md +++ /dev/null @@ -1,10 +0,0 @@ -# NativeScript - -NativeScript is an open source framework for creating native iOS and Android apps in Angular, TypeScript, or JavaScript. - -Visit the following resources to learn more: - -- [@official@Official Website](https://nativescript.org/) -- [@article@Official Getting Started to NativeScript](https://docs.nativescript.org/) -- [@video@NativeScript Tutorial for Beginners](https://www.youtube.com/watch?v=DcCSq2Y9bow) -- [@feed@Explore top posts about NativeScript](https://app.daily.dev/tags/nativescript?ref=roadmapsh) diff --git a/src/data/roadmaps/frontend/content/122-desktop-applications/101-carlo.md b/src/data/roadmaps/frontend/content/122-desktop-applications/101-carlo.md deleted file mode 100644 index e911f6c82..000000000 --- a/src/data/roadmaps/frontend/content/122-desktop-applications/101-carlo.md +++ /dev/null @@ -1,8 +0,0 @@ -# Carlo - -Carlo is a headful Node app framework for building desktop applications. - -Visit the following resources to learn more: - -- [@opensource@Github Repository](https://github.com/GoogleChromeLabs/carlo) -- [@article@Carlo development on a web server](https://blog.agney.dev/carlo-on-web-server/) diff --git a/src/data/roadmaps/frontend/content/123-bonus-content.md b/src/data/roadmaps/frontend/content/123-bonus-content.md deleted file mode 100644 index 70b0a0ad3..000000000 --- a/src/data/roadmaps/frontend/content/123-bonus-content.md +++ /dev/null @@ -1,18 +0,0 @@ -# Bonus Content - -It is not required to complete the bonus content, it just expands on the topics covered in the roadmap and has the items which were missed in the roadmap. Go through them if you want. - -**UI / UX Knowledge** - Gaining UI/UX knowledge is not a must for a Frontend Developer but having an eye for design and a good understanding of UI/UX will help you in your career. - -**[Design Systems](/design-system)** - Learn how to create and work with design systems. - -- **Visual Programming** — it is entirely possible to be a successful, competent frontend developer without it, but for many frontend developers this path represents a serious chunk of their workload, and represents a very in-demand option for frontend development – especially for developers who have a visual aptitude. - - **For Animations**: [GSAP](https://greensock.com/gsap/), [Lottie](https://airbnb.design/lottie/), [Framer Motion](https://github.com/framer/motion) or [MoJs](https://mojs.github.io/) - - **Web Graphics Library (WebGL)**: [WebGL MDN](https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial), [WebGL Fundamentals](https://webglfundamentals.org/webgl/lessons/webgl-fundamentals.html) - - **2D Graphics**: [Canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API), [PixiJS](https://pixijs.com/), [PhaserJS](https://phaser.io/) - - **3D Graphics**: [ThreeJS](https://threejs.org/), [BabylonJS](https://www.babylonjs.com/) -- Have a look at [Qwik](https://qwik.builder.io/) and **[Partytown](https://partytown.builder.io/)**. -- [@article@Houdini](https://developer.mozilla.org/en-US/docs/Web/Guide/Houdini) — Here is a good [introductory article to houdini](https://www.smashingmagazine.com/2020/03/practical-overview-css-houdini/). -- **[WebRTC](https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API)** - WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose. -- **[IDLs](https://developer.mozilla.org/en-US/docs/Glossary/IDL)** - Not every developer will have a need for understanding [IDLs](https://developer.mozilla.org/en-US/docs/Glossary/IDL) but there's a good argument for having more JavaScript developers aware of their existence and hopefully the ability for making use of them as well. -- **[WebAssembly](https://developer.mozilla.org/en-US/docs/WebAssembly)** - WebAssembly is a comparatively new technology that allows you to run code written in languages other than JavaScript on the web. It's a low-level assembly-like language with a compact binary format that runs with near-native performance and provides languages such as C/C++ and Rust with a compilation target so that they can run on the web. diff --git a/src/data/roadmaps/frontend/content/101-html/104-accessibility.md b/src/data/roadmaps/frontend/content/accessibility@iJIqi7ngpGHWAqtgdjgxB.md similarity index 100% rename from src/data/roadmaps/frontend/content/101-html/104-accessibility.md rename to src/data/roadmaps/frontend/content/accessibility@iJIqi7ngpGHWAqtgdjgxB.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/index.md b/src/data/roadmaps/frontend/content/angular@-bHFIiXnoUQSov64WI9yo.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/101-angular/index.md rename to src/data/roadmaps/frontend/content/angular@-bHFIiXnoUQSov64WI9yo.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/101-angular/index.md b/src/data/roadmaps/frontend/content/angular@k6rp6Ua9qUEW_DA_fOg5u.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/101-angular/index.md rename to src/data/roadmaps/frontend/content/angular@k6rp6Ua9qUEW_DA_fOg5u.md diff --git a/src/data/roadmaps/frontend/content/119-graphql/100-apollo.md b/src/data/roadmaps/frontend/content/apollo@5eUbDdOTOfaOhUlZAmmXW.md similarity index 100% rename from src/data/roadmaps/frontend/content/119-graphql/100-apollo.md rename to src/data/roadmaps/frontend/content/apollo@5eUbDdOTOfaOhUlZAmmXW.md diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/106-astro.md b/src/data/roadmaps/frontend/content/astro@iUxXq7beg55y76dkwhM13.md similarity index 100% rename from src/data/roadmaps/frontend/content/120-static-site-generators/106-astro.md rename to src/data/roadmaps/frontend/content/astro@iUxXq7beg55y76dkwhM13.md diff --git a/src/data/roadmaps/frontend/content/astro@wA2fSYsbBYU02VJXAvUz8.md b/src/data/roadmaps/frontend/content/astro@wA2fSYsbBYU02VJXAvUz8.md new file mode 100644 index 000000000..fc28d4143 --- /dev/null +++ b/src/data/roadmaps/frontend/content/astro@wA2fSYsbBYU02VJXAvUz8.md @@ -0,0 +1,15 @@ +# Astro + +Astro is an all-in-one web framework for building fast, content-focused websites. Astro combines the power of a modern component-based framework with the performance and flexibility of a static site generator. + +- Component Islands: A new web architecture for building faster websites. +- Server-first API design: Move expensive hydration off of your users’ devices. +- Zero JS, by default: No JavaScript runtime overhead to slow you down. +- Edge-ready: Deploy anywhere, even a global edge runtime like Deno or Cloudflare. +- Customizable: Tailwind, MDX, and 100+ other integrations to choose from. +- UI-agnostic: Supports React, Preact, Svelte, Vue, Solid, Lit and more. + +Visit the following resources to learn more: + +- [@official@Official Astro Website](https://astro.build/) +- [@article@Official Astro Docs](https://docs.astro.build/) diff --git a/src/data/roadmaps/frontend/content/116-auth-strategies/index.md b/src/data/roadmaps/frontend/content/authentication-strategies@U5mD5FmVx7VWeKxDpQxB5.md similarity index 100% rename from src/data/roadmaps/frontend/content/116-auth-strategies/index.md rename to src/data/roadmaps/frontend/content/authentication-strategies@U5mD5FmVx7VWeKxDpQxB5.md diff --git a/src/data/roadmaps/frontend/content/108-css-architecture/100-bem.md b/src/data/roadmaps/frontend/content/bem@dRDmS072xeNLX7p_X565w.md similarity index 100% rename from src/data/roadmaps/frontend/content/108-css-architecture/100-bem.md rename to src/data/roadmaps/frontend/content/bem@dRDmS072xeNLX7p_X565w.md diff --git a/src/data/roadmaps/frontend/content/105-repo-hosting-services/102-bitbucket.md b/src/data/roadmaps/frontend/content/bitbucket@DILBiQp7WWgSZ5hhtDW6A.md similarity index 100% rename from src/data/roadmaps/frontend/content/105-repo-hosting-services/102-bitbucket.md rename to src/data/roadmaps/frontend/content/bitbucket@DILBiQp7WWgSZ5hhtDW6A.md diff --git a/src/data/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md b/src/data/roadmaps/frontend/content/browsers-and-how-they-work@P82WFaTPgQEPNp5IIuZ1Y.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/102-browsers-and-how-they-work.md rename to src/data/roadmaps/frontend/content/browsers-and-how-they-work@P82WFaTPgQEPNp5IIuZ1Y.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/index.md b/src/data/roadmaps/frontend/content/build-tools@i9z0stM4uKu27Cz6NIgNX.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/index.md rename to src/data/roadmaps/frontend/content/build-tools@i9z0stM4uKu27Cz6NIgNX.md diff --git a/src/data/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md b/src/data/roadmaps/frontend/content/content-security-policy@rmcm0CZbtNVC9LZ14-H6h.md similarity index 100% rename from src/data/roadmaps/frontend/content/106-web-security-knowledge/101-content-security-policy.md rename to src/data/roadmaps/frontend/content/content-security-policy@rmcm0CZbtNVC9LZ14-H6h.md diff --git a/src/data/roadmaps/frontend/content/106-web-security-knowledge/102-cors.md b/src/data/roadmaps/frontend/content/cors@AfH2zCbqzw0Nisg1yyISS.md similarity index 100% rename from src/data/roadmaps/frontend/content/106-web-security-knowledge/102-cors.md rename to src/data/roadmaps/frontend/content/cors@AfH2zCbqzw0Nisg1yyISS.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/108-credentials.md b/src/data/roadmaps/frontend/content/credentials@opu2bAsmdWHqWqtsCscLC.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/108-credentials.md rename to src/data/roadmaps/frontend/content/credentials@opu2bAsmdWHqWqtsCscLC.md diff --git a/src/data/roadmaps/frontend/content/108-css-architecture/index.md b/src/data/roadmaps/frontend/content/css-architecture@nPg_YWpMJtlhU2t2UD_6B.md similarity index 100% rename from src/data/roadmaps/frontend/content/108-css-architecture/index.md rename to src/data/roadmaps/frontend/content/css-architecture@nPg_YWpMJtlhU2t2UD_6B.md diff --git a/src/data/roadmaps/frontend/content/109-css-preprocessors/index.md b/src/data/roadmaps/frontend/content/css-preprocessors@UTW1pP59dUehuf0zeHXqL.md similarity index 100% rename from src/data/roadmaps/frontend/content/109-css-preprocessors/index.md rename to src/data/roadmaps/frontend/content/css-preprocessors@UTW1pP59dUehuf0zeHXqL.md diff --git a/src/data/roadmaps/frontend/content/102-css/index.md b/src/data/roadmaps/frontend/content/css@ZhJhf1M2OphYbEmduFq-9.md similarity index 100% rename from src/data/roadmaps/frontend/content/102-css/index.md rename to src/data/roadmaps/frontend/content/css@ZhJhf1M2OphYbEmduFq-9.md diff --git a/src/data/roadmaps/frontend/content/113-web-components/101-custom-elements.md b/src/data/roadmaps/frontend/content/custom-elements@VxiQPgcYDFAT6WgSRWpIA.md similarity index 100% rename from src/data/roadmaps/frontend/content/113-web-components/101-custom-elements.md rename to src/data/roadmaps/frontend/content/custom-elements@VxiQPgcYDFAT6WgSRWpIA.md diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/102-cypress.md b/src/data/roadmaps/frontend/content/cypress@DaynCz5RR26gjT6N6gTDL.md similarity index 100% rename from src/data/roadmaps/frontend/content/115-testing-your-apps/102-cypress.md rename to src/data/roadmaps/frontend/content/cypress@DaynCz5RR26gjT6N6gTDL.md diff --git a/src/data/roadmaps/frontend/content/122-desktop-applications/index.md b/src/data/roadmaps/frontend/content/desktop-apps@KMA7NkxFbPoUDtFnGBFnj.md similarity index 100% rename from src/data/roadmaps/frontend/content/122-desktop-applications/index.md rename to src/data/roadmaps/frontend/content/desktop-apps@KMA7NkxFbPoUDtFnGBFnj.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/106-device-orientation.md b/src/data/roadmaps/frontend/content/device-orientation@Fd0hQh1DleM0gMzCpGou4.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/106-device-orientation.md rename to src/data/roadmaps/frontend/content/device-orientation@Fd0hQh1DleM0gMzCpGou4.md diff --git a/src/data/roadmaps/frontend/content/100-internet/103-dns-and-how-it-works.md b/src/data/roadmaps/frontend/content/dns-and-how-it-works@hkxw9jPGYphmjhTjw8766.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/103-dns-and-how-it-works.md rename to src/data/roadmaps/frontend/content/dns-and-how-it-works@hkxw9jPGYphmjhTjw8766.md diff --git a/src/data/roadmaps/frontend/content/122-desktop-applications/100-electron.md b/src/data/roadmaps/frontend/content/electron@mQHpSyMR4Rra4mqAslgiS.md similarity index 100% rename from src/data/roadmaps/frontend/content/122-desktop-applications/100-electron.md rename to src/data/roadmaps/frontend/content/electron@mQHpSyMR4Rra4mqAslgiS.md diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/107-eleventy.md b/src/data/roadmaps/frontend/content/eleventy@io0RHJWIcVxDhcYkV9d38.md similarity index 100% rename from src/data/roadmaps/frontend/content/120-static-site-generators/107-eleventy.md rename to src/data/roadmaps/frontend/content/eleventy@io0RHJWIcVxDhcYkV9d38.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/101-esbuild.md b/src/data/roadmaps/frontend/content/esbuild@4W7UXfdKIUsm1bUrjdTVT.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/101-esbuild.md rename to src/data/roadmaps/frontend/content/esbuild@4W7UXfdKIUsm1bUrjdTVT.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/101-eslint.md b/src/data/roadmaps/frontend/content/eslint@NFjsI712_qP0IOmjuqXar.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/101-eslint.md rename to src/data/roadmaps/frontend/content/eslint@NFjsI712_qP0IOmjuqXar.md diff --git a/src/data/roadmaps/frontend/content/103-javascript/102-learn-fetch-api-ajax-xhr.md b/src/data/roadmaps/frontend/content/fetch-api--ajax-xhr@A4brX0efjZ0FFPTB4r6U0.md similarity index 100% rename from src/data/roadmaps/frontend/content/103-javascript/102-learn-fetch-api-ajax-xhr.md rename to src/data/roadmaps/frontend/content/fetch-api--ajax-xhr@A4brX0efjZ0FFPTB4r6U0.md diff --git a/src/data/roadmaps/frontend/content/122-desktop-applications/102-flutter.md b/src/data/roadmaps/frontend/content/flutter@2MRvAK9G9RGM_auWytcKh.md similarity index 100% rename from src/data/roadmaps/frontend/content/122-desktop-applications/102-flutter.md rename to src/data/roadmaps/frontend/content/flutter@2MRvAK9G9RGM_auWytcKh.md diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/102-flutter.md b/src/data/roadmaps/frontend/content/flutter@dIQXjFEUAJAGxxfAYceHU.md similarity index 100% rename from src/data/roadmaps/frontend/content/121-mobile-applications/102-flutter.md rename to src/data/roadmaps/frontend/content/flutter@dIQXjFEUAJAGxxfAYceHU.md diff --git a/src/data/roadmaps/frontend/content/101-html/102-forms-and-validations.md b/src/data/roadmaps/frontend/content/forms-and-validations@V5zucKEHnIPPjwHqsMPHF.md similarity index 100% rename from src/data/roadmaps/frontend/content/101-html/102-forms-and-validations.md rename to src/data/roadmaps/frontend/content/forms-and-validations@V5zucKEHnIPPjwHqsMPHF.md diff --git a/src/data/roadmaps/frontend/content/104-version-control-systems/100-basic-usage-of-git.md b/src/data/roadmaps/frontend/content/git@R_I4SGYqLk5zze5I1zS_E.md similarity index 100% rename from src/data/roadmaps/frontend/content/104-version-control-systems/100-basic-usage-of-git.md rename to src/data/roadmaps/frontend/content/git@R_I4SGYqLk5zze5I1zS_E.md diff --git a/src/data/roadmaps/frontend/content/105-repo-hosting-services/100-github.md b/src/data/roadmaps/frontend/content/github@qmTVMJDsEhNIkiwE_UTYu.md similarity index 100% rename from src/data/roadmaps/frontend/content/105-repo-hosting-services/100-github.md rename to src/data/roadmaps/frontend/content/github@qmTVMJDsEhNIkiwE_UTYu.md diff --git a/src/data/roadmaps/frontend/content/105-repo-hosting-services/101-gitlab.md b/src/data/roadmaps/frontend/content/gitlab@zIoSJMX3cuzCgDYHjgbEh.md similarity index 100% rename from src/data/roadmaps/frontend/content/105-repo-hosting-services/101-gitlab.md rename to src/data/roadmaps/frontend/content/gitlab@zIoSJMX3cuzCgDYHjgbEh.md diff --git a/src/data/roadmaps/frontend/content/119-graphql/index.md b/src/data/roadmaps/frontend/content/graphql@L7AllJfKvClaam3y-u6DP.md similarity index 100% rename from src/data/roadmaps/frontend/content/119-graphql/index.md rename to src/data/roadmaps/frontend/content/graphql@L7AllJfKvClaam3y-u6DP.md diff --git a/src/data/roadmaps/frontend/content/100-internet/100-how-does-the-internet-work.md b/src/data/roadmaps/frontend/content/how-does-the-internet-work@yCnn-NfSxIybUQ2iTuUGq.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/100-how-does-the-internet-work.md rename to src/data/roadmaps/frontend/content/how-does-the-internet-work@yCnn-NfSxIybUQ2iTuUGq.md diff --git a/src/data/roadmaps/frontend/content/113-web-components/100-html-templates.md b/src/data/roadmaps/frontend/content/html-templates@Hk8AVonOd693_y1sykPqd.md similarity index 100% rename from src/data/roadmaps/frontend/content/113-web-components/100-html-templates.md rename to src/data/roadmaps/frontend/content/html-templates@Hk8AVonOd693_y1sykPqd.md diff --git a/src/data/roadmaps/frontend/content/101-html/index.md b/src/data/roadmaps/frontend/content/html@yWG2VUkaF5IJVVut6AiSy.md similarity index 100% rename from src/data/roadmaps/frontend/content/101-html/index.md rename to src/data/roadmaps/frontend/content/html@yWG2VUkaF5IJVVut6AiSy.md diff --git a/src/data/roadmaps/frontend/content/106-web-security-knowledge/100-https.md b/src/data/roadmaps/frontend/content/https@uum7vOhOUR38vLuGZy8Oa.md similarity index 100% rename from src/data/roadmaps/frontend/content/106-web-security-knowledge/100-https.md rename to src/data/roadmaps/frontend/content/https@uum7vOhOUR38vLuGZy8Oa.md diff --git a/src/data/roadmaps/frontend/content/100-internet/index.md b/src/data/roadmaps/frontend/content/internet@VlNNwIEDWqQXtqkHWJYzC.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/index.md rename to src/data/roadmaps/frontend/content/internet@VlNNwIEDWqQXtqkHWJYzC.md diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/103-ionic.md b/src/data/roadmaps/frontend/content/ionic@xmRv6-L45m5MDpHmdHFCL.md similarity index 100% rename from src/data/roadmaps/frontend/content/121-mobile-applications/103-ionic.md rename to src/data/roadmaps/frontend/content/ionic@xmRv6-L45m5MDpHmdHFCL.md diff --git a/src/data/roadmaps/frontend/content/103-javascript/index.md b/src/data/roadmaps/frontend/content/javascript@ODcfFEorkfJNupoQygM53.md similarity index 100% rename from src/data/roadmaps/frontend/content/103-javascript/index.md rename to src/data/roadmaps/frontend/content/javascript@ODcfFEorkfJNupoQygM53.md diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/100-jest.md b/src/data/roadmaps/frontend/content/jest@g5itUjgRXd9vs9ujHezFl.md similarity index 100% rename from src/data/roadmaps/frontend/content/115-testing-your-apps/100-jest.md rename to src/data/roadmaps/frontend/content/jest@g5itUjgRXd9vs9ujHezFl.md diff --git a/src/data/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md b/src/data/roadmaps/frontend/content/learn-dom-manipulation@0MAogsAID9R04R5TTO2Qa.md similarity index 100% rename from src/data/roadmaps/frontend/content/103-javascript/101-learn-dom-manipulation.md rename to src/data/roadmaps/frontend/content/learn-dom-manipulation@0MAogsAID9R04R5TTO2Qa.md diff --git a/src/data/roadmaps/frontend/content/101-html/100-learn-the-basics.md b/src/data/roadmaps/frontend/content/learn-the-basics@PCirR2QiFYO89Fm-Ev3o1.md similarity index 100% rename from src/data/roadmaps/frontend/content/101-html/100-learn-the-basics.md rename to src/data/roadmaps/frontend/content/learn-the-basics@PCirR2QiFYO89Fm-Ev3o1.md diff --git a/src/data/roadmaps/frontend/content/102-css/100-learn-the-basics.md b/src/data/roadmaps/frontend/content/learn-the-basics@YFjzPKWDwzrgk2HUX952L.md similarity index 100% rename from src/data/roadmaps/frontend/content/102-css/100-learn-the-basics.md rename to src/data/roadmaps/frontend/content/learn-the-basics@YFjzPKWDwzrgk2HUX952L.md diff --git a/src/data/roadmaps/frontend/content/103-javascript/100-syntax-and-basic-constructs.md b/src/data/roadmaps/frontend/content/learn-the-basics@wQSjQqwKHfn5RGPk34BWI.md similarity index 100% rename from src/data/roadmaps/frontend/content/103-javascript/100-syntax-and-basic-constructs.md rename to src/data/roadmaps/frontend/content/learn-the-basics@wQSjQqwKHfn5RGPk34BWI.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/index.md b/src/data/roadmaps/frontend/content/linters-and-formatters@9VcGfDBBD8YcKatj4VcH1.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/index.md rename to src/data/roadmaps/frontend/content/linters-and-formatters@9VcGfDBBD8YcKatj4VcH1.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/104-location.md b/src/data/roadmaps/frontend/content/location@YbGGYoKJEx29PlvopUBiM.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/104-location.md rename to src/data/roadmaps/frontend/content/location@YbGGYoKJEx29PlvopUBiM.md diff --git a/src/data/roadmaps/frontend/content/102-css/101-making-layouts.md b/src/data/roadmaps/frontend/content/making-layouts@dXeYVMXv-3MRQ1ovOUuJW.md similarity index 100% rename from src/data/roadmaps/frontend/content/102-css/101-making-layouts.md rename to src/data/roadmaps/frontend/content/making-layouts@dXeYVMXv-3MRQ1ovOUuJW.md diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/index.md b/src/data/roadmaps/frontend/content/mobile-apps@VOGKiG2EZVfCBAaa7Df0W.md similarity index 100% rename from src/data/roadmaps/frontend/content/121-mobile-applications/index.md rename to src/data/roadmaps/frontend/content/mobile-apps@VOGKiG2EZVfCBAaa7Df0W.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md b/src/data/roadmaps/frontend/content/module-bundlers@hkSc_1x09m7-7BO7WzlDT.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/index.md rename to src/data/roadmaps/frontend/content/module-bundlers@hkSc_1x09m7-7BO7WzlDT.md diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/100-next-js.md b/src/data/roadmaps/frontend/content/nextjs@V70884VcuXkfrfHyLGtUg.md similarity index 100% rename from src/data/roadmaps/frontend/content/120-static-site-generators/100-next-js.md rename to src/data/roadmaps/frontend/content/nextjs@V70884VcuXkfrfHyLGtUg.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/100-next-js.md b/src/data/roadmaps/frontend/content/nextjs@zNFYAJaSq0YZXL5Rpx1NX.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/100-next-js.md rename to src/data/roadmaps/frontend/content/nextjs@zNFYAJaSq0YZXL5Rpx1NX.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/105-notifications.md b/src/data/roadmaps/frontend/content/notifications@6AlcArOiJMhHXguAosDzn.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/105-notifications.md rename to src/data/roadmaps/frontend/content/notifications@6AlcArOiJMhHXguAosDzn.md diff --git a/src/data/roadmaps/frontend/content/107-package-managers/100-npm.md b/src/data/roadmaps/frontend/content/npm@ib_FHinhrw8VuSet-xMF7.md similarity index 100% rename from src/data/roadmaps/frontend/content/107-package-managers/100-npm.md rename to src/data/roadmaps/frontend/content/npm@ib_FHinhrw8VuSet-xMF7.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/102-vue-js/100-nuxt-js.md b/src/data/roadmaps/frontend/content/nuxtjs@BBsXxkbbEG-gnbM1xXKrj.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/102-vue-js/100-nuxt-js.md rename to src/data/roadmaps/frontend/content/nuxtjs@BBsXxkbbEG-gnbM1xXKrj.md diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/102-nuxt-js.md b/src/data/roadmaps/frontend/content/nuxtjs@XWJxV42Dpu2D3xDK10Pn3.md similarity index 100% rename from src/data/roadmaps/frontend/content/120-static-site-generators/102-nuxt-js.md rename to src/data/roadmaps/frontend/content/nuxtjs@XWJxV42Dpu2D3xDK10Pn3.md diff --git a/src/data/roadmaps/frontend/content/106-web-security-knowledge/103-owasp-security-risks.md b/src/data/roadmaps/frontend/content/owasp-security-risks@JanR7I_lNnUCXhCMGLdn-.md similarity index 100% rename from src/data/roadmaps/frontend/content/106-web-security-knowledge/103-owasp-security-risks.md rename to src/data/roadmaps/frontend/content/owasp-security-risks@JanR7I_lNnUCXhCMGLdn-.md diff --git a/src/data/roadmaps/frontend/content/107-package-managers/index.md b/src/data/roadmaps/frontend/content/package-managers@IqvS1V-98cxko3e9sBQgP.md similarity index 100% rename from src/data/roadmaps/frontend/content/107-package-managers/index.md rename to src/data/roadmaps/frontend/content/package-managers@IqvS1V-98cxko3e9sBQgP.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/103-parcel.md b/src/data/roadmaps/frontend/content/parcel@NS-hwaWa5ebSmNNRoxFDp.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/103-parcel.md rename to src/data/roadmaps/frontend/content/parcel@NS-hwaWa5ebSmNNRoxFDp.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/107-payments.md b/src/data/roadmaps/frontend/content/payments@MAM1nuVk-h4AvTUk4nvmj.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/107-payments.md rename to src/data/roadmaps/frontend/content/payments@MAM1nuVk-h4AvTUk4nvmj.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/111-performance-metrics.md b/src/data/roadmaps/frontend/content/performance-metrics@X0Y3-IpPiFUCsNDK4RFxw.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/111-performance-metrics.md rename to src/data/roadmaps/frontend/content/performance-metrics@X0Y3-IpPiFUCsNDK4RFxw.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/index.md b/src/data/roadmaps/frontend/content/pick-a-framework@eXezX7CVNyC1RuyU_I4yP.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/index.md rename to src/data/roadmaps/frontend/content/pick-a-framework@eXezX7CVNyC1RuyU_I4yP.md diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/104-playwright.md b/src/data/roadmaps/frontend/content/playwright@jramLk8FGuaEH4YpHIyZT.md similarity index 100% rename from src/data/roadmaps/frontend/content/115-testing-your-apps/104-playwright.md rename to src/data/roadmaps/frontend/content/playwright@jramLk8FGuaEH4YpHIyZT.md diff --git a/src/data/roadmaps/frontend/content/107-package-managers/102-pnpm.md b/src/data/roadmaps/frontend/content/pnpm@SLxA5qJFp_28TRzr1BjxZ.md similarity index 100% rename from src/data/roadmaps/frontend/content/107-package-managers/102-pnpm.md rename to src/data/roadmaps/frontend/content/pnpm@SLxA5qJFp_28TRzr1BjxZ.md diff --git a/src/data/roadmaps/frontend/content/109-css-preprocessors/101-postcss.md b/src/data/roadmaps/frontend/content/postcss@9WlPENh9g1xOv-zA64Tfg.md similarity index 100% rename from src/data/roadmaps/frontend/content/109-css-preprocessors/101-postcss.md rename to src/data/roadmaps/frontend/content/postcss@9WlPENh9g1xOv-zA64Tfg.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/100-prettier.md b/src/data/roadmaps/frontend/content/prettier@zbkpu_gvQ4mgCiZKzS1xv.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/102-linters-formatters/100-prettier.md rename to src/data/roadmaps/frontend/content/prettier@zbkpu_gvQ4mgCiZKzS1xv.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/109-prpl-pattern.md b/src/data/roadmaps/frontend/content/prpl-pattern@-DsETM9xLgHyGZthptj1Y.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/109-prpl-pattern.md rename to src/data/roadmaps/frontend/content/prpl-pattern@-DsETM9xLgHyGZthptj1Y.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/index.md b/src/data/roadmaps/frontend/content/pwas@PoM77O2OtxPELxfrW1wtl.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/index.md rename to src/data/roadmaps/frontend/content/pwas@PoM77O2OtxPELxfrW1wtl.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/104-qwik.md b/src/data/roadmaps/frontend/content/qwik@N5DCb6bDfgUnSdHPLYY4g.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/104-qwik.md rename to src/data/roadmaps/frontend/content/qwik@N5DCb6bDfgUnSdHPLYY4g.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/110-rail-model.md b/src/data/roadmaps/frontend/content/rail-model@xD5WfEP7Ez0oi3890UgmH.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/110-rail-model.md rename to src/data/roadmaps/frontend/content/rail-model@xD5WfEP7Ez0oi3890UgmH.md diff --git a/src/data/roadmaps/frontend/content/121-mobile-applications/100-react-native.md b/src/data/roadmaps/frontend/content/react-native@dsTegXTyupjS8iU6I7Xiv.md similarity index 100% rename from src/data/roadmaps/frontend/content/121-mobile-applications/100-react-native.md rename to src/data/roadmaps/frontend/content/react-native@dsTegXTyupjS8iU6I7Xiv.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/101-remix.md b/src/data/roadmaps/frontend/content/react-router@KJRkrFZIihCUBrOf579EU.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/101-remix.md rename to src/data/roadmaps/frontend/content/react-router@KJRkrFZIihCUBrOf579EU.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/index.md b/src/data/roadmaps/frontend/content/react@SGDf_rbfmFSHlxI-Czzlz.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/100-react-js/index.md rename to src/data/roadmaps/frontend/content/react@SGDf_rbfmFSHlxI-Czzlz.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/index.md b/src/data/roadmaps/frontend/content/react@tG5v3O4lNIFc2uCnacPak.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/100-react-js/index.md rename to src/data/roadmaps/frontend/content/react@tG5v3O4lNIFc2uCnacPak.md diff --git a/src/data/roadmaps/frontend/content/119-graphql/101-relay-modern.md b/src/data/roadmaps/frontend/content/relay-modern@0moPO23ol33WsjVXSpTGf.md similarity index 100% rename from src/data/roadmaps/frontend/content/119-graphql/101-relay-modern.md rename to src/data/roadmaps/frontend/content/relay-modern@0moPO23ol33WsjVXSpTGf.md diff --git a/src/data/roadmaps/frontend/content/102-css/102-responsive-design-and-media-queries.md b/src/data/roadmaps/frontend/content/responsive-design@TKtWmArHn7elXRJdG6lDQ.md similarity index 100% rename from src/data/roadmaps/frontend/content/102-css/102-responsive-design-and-media-queries.md rename to src/data/roadmaps/frontend/content/responsive-design@TKtWmArHn7elXRJdG6lDQ.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/102-rollup.md b/src/data/roadmaps/frontend/content/rollup@sCjErk7rfWAUvhl8Kfm3n.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/102-rollup.md rename to src/data/roadmaps/frontend/content/rollup@sCjErk7rfWAUvhl8Kfm3n.md diff --git a/src/data/roadmaps/frontend/content/109-css-preprocessors/100-sass.md b/src/data/roadmaps/frontend/content/sass@kukEE5rMSPa4NeNjx21kt.md similarity index 100% rename from src/data/roadmaps/frontend/content/109-css-preprocessors/100-sass.md rename to src/data/roadmaps/frontend/content/sass@kukEE5rMSPa4NeNjx21kt.md diff --git a/src/data/roadmaps/frontend/content/101-html/105-seo-basics.md b/src/data/roadmaps/frontend/content/seo-basics@mH_qff8R7R6eLQ1tPHLgG.md similarity index 100% rename from src/data/roadmaps/frontend/content/101-html/105-seo-basics.md rename to src/data/roadmaps/frontend/content/seo-basics@mH_qff8R7R6eLQ1tPHLgG.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/102-server-sent-events.md b/src/data/roadmaps/frontend/content/server-sent-events@doPe92aUpo-8KWhi45lWK.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/102-server-sent-events.md rename to src/data/roadmaps/frontend/content/server-sent-events@doPe92aUpo-8KWhi45lWK.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/103-service-workers.md b/src/data/roadmaps/frontend/content/service-workers@TldWoXiqKxM4X3JONKAR7.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/103-service-workers.md rename to src/data/roadmaps/frontend/content/service-workers@TldWoXiqKxM4X3JONKAR7.md diff --git a/src/data/roadmaps/frontend/content/113-web-components/102-shadow-dom.md b/src/data/roadmaps/frontend/content/shadow-dom@-SpsNeOZBkQfDA-rwzgPg.md similarity index 100% rename from src/data/roadmaps/frontend/content/113-web-components/102-shadow-dom.md rename to src/data/roadmaps/frontend/content/shadow-dom@-SpsNeOZBkQfDA-rwzgPg.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/104-solid-js.md b/src/data/roadmaps/frontend/content/solid-js@DxOSKnqAjZOPP-dq_U7oP.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/104-solid-js.md rename to src/data/roadmaps/frontend/content/solid-js@DxOSKnqAjZOPP-dq_U7oP.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/index.md b/src/data/roadmaps/frontend/content/ssr@Cxspmb14_0i1tfw-ZLxEu.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/index.md rename to src/data/roadmaps/frontend/content/ssr@Cxspmb14_0i1tfw-ZLxEu.md diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/index.md b/src/data/roadmaps/frontend/content/static-site-generators@n0q32YhWEIAUwbGXexoqV.md similarity index 100% rename from src/data/roadmaps/frontend/content/120-static-site-generators/index.md rename to src/data/roadmaps/frontend/content/static-site-generators@n0q32YhWEIAUwbGXexoqV.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/100-storage.md b/src/data/roadmaps/frontend/content/storage@raoa-75p_DyBAycvy3yVv.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/100-storage.md rename to src/data/roadmaps/frontend/content/storage@raoa-75p_DyBAycvy3yVv.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/103-svelte/100-svelte-kit.md b/src/data/roadmaps/frontend/content/svelte-kit@P4st_telfCwKLSAU2WsQP.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/103-svelte/100-svelte-kit.md rename to src/data/roadmaps/frontend/content/svelte-kit@P4st_telfCwKLSAU2WsQP.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/103-svelte.md b/src/data/roadmaps/frontend/content/svelte@OL8I6nOZ8hGGWmtxg_Mv8.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/103-svelte.md rename to src/data/roadmaps/frontend/content/svelte@OL8I6nOZ8hGGWmtxg_Mv8.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/103-svelte/index.md b/src/data/roadmaps/frontend/content/svelte@ZR-qZ2Lcbu3FtqaMd3wM4.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/103-svelte/index.md rename to src/data/roadmaps/frontend/content/svelte@ZR-qZ2Lcbu3FtqaMd3wM4.md diff --git a/src/data/roadmaps/frontend/content/swc@h26uS3muFCabe6ekElZcI.md b/src/data/roadmaps/frontend/content/swc@h26uS3muFCabe6ekElZcI.md new file mode 100644 index 000000000..c001fd1be --- /dev/null +++ b/src/data/roadmaps/frontend/content/swc@h26uS3muFCabe6ekElZcI.md @@ -0,0 +1 @@ +# SWC \ No newline at end of file diff --git a/src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/100-tailwind-css.md b/src/data/roadmaps/frontend/content/tailwind@eghnfG4p7i-EDWfp3CQXC.md similarity index 100% rename from src/data/roadmaps/frontend/content/114-css-frameworks/114-js-first/100-tailwind-css.md rename to src/data/roadmaps/frontend/content/tailwind@eghnfG4p7i-EDWfp3CQXC.md diff --git a/src/data/roadmaps/frontend/content/122-desktop-applications/101-tauri.md b/src/data/roadmaps/frontend/content/tauri@GJctl0tVXe4B70s35RkLT.md similarity index 100% rename from src/data/roadmaps/frontend/content/122-desktop-applications/101-tauri.md rename to src/data/roadmaps/frontend/content/tauri@GJctl0tVXe4B70s35RkLT.md diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/index.md b/src/data/roadmaps/frontend/content/testing@igg4_hb3XE3vuvY8ufV-4.md similarity index 100% rename from src/data/roadmaps/frontend/content/115-testing-your-apps/index.md rename to src/data/roadmaps/frontend/content/testing@igg4_hb3XE3vuvY8ufV-4.md diff --git a/src/data/roadmaps/frontend/content/topic-node@RYIEsxd9k-9jenyEyavGE.md b/src/data/roadmaps/frontend/content/topic-node@RYIEsxd9k-9jenyEyavGE.md new file mode 100644 index 000000000..59f1a30d4 --- /dev/null +++ b/src/data/roadmaps/frontend/content/topic-node@RYIEsxd9k-9jenyEyavGE.md @@ -0,0 +1 @@ +# topic node \ No newline at end of file diff --git a/src/data/roadmaps/frontend/content/116-type-checkers/index.md b/src/data/roadmaps/frontend/content/type-checkers@hwPOGT0-duy3KfI8QaEwF.md similarity index 100% rename from src/data/roadmaps/frontend/content/116-type-checkers/index.md rename to src/data/roadmaps/frontend/content/type-checkers@hwPOGT0-duy3KfI8QaEwF.md diff --git a/src/data/roadmaps/frontend/content/116-type-checkers/100-typescript.md b/src/data/roadmaps/frontend/content/typescript@0asdhvwBH3gn-ercktV7A.md similarity index 100% rename from src/data/roadmaps/frontend/content/116-type-checkers/100-typescript.md rename to src/data/roadmaps/frontend/content/typescript@0asdhvwBH3gn-ercktV7A.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/113-browser-devtools.md b/src/data/roadmaps/frontend/content/using-devtools@3_sJHKTogkDoCjR518-OL.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/113-browser-devtools.md rename to src/data/roadmaps/frontend/content/using-devtools@3_sJHKTogkDoCjR518-OL.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/112-lighthouse.md b/src/data/roadmaps/frontend/content/using-lighthouse@RIhHMHLsLLPhNl05Q9aBf.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/112-lighthouse.md rename to src/data/roadmaps/frontend/content/using-lighthouse@RIhHMHLsLLPhNl05Q9aBf.md diff --git a/src/data/roadmaps/frontend/content/105-repo-hosting-services/index.md b/src/data/roadmaps/frontend/content/vcs-hosting@MXnFhZlNB1zTsBFDyni9H.md similarity index 100% rename from src/data/roadmaps/frontend/content/105-repo-hosting-services/index.md rename to src/data/roadmaps/frontend/content/vcs-hosting@MXnFhZlNB1zTsBFDyni9H.md diff --git a/src/data/roadmaps/frontend/content/104-version-control-systems/index.md b/src/data/roadmaps/frontend/content/version-control-systems@NIY7c4TQEEHx0hATu-k5C.md similarity index 100% rename from src/data/roadmaps/frontend/content/104-version-control-systems/index.md rename to src/data/roadmaps/frontend/content/version-control-systems@NIY7c4TQEEHx0hATu-k5C.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/104-vite.md b/src/data/roadmaps/frontend/content/vite@0Awx3zEI5_gYEIrD7IVX6.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/104-vite.md rename to src/data/roadmaps/frontend/content/vite@0Awx3zEI5_gYEIrD7IVX6.md diff --git a/src/data/roadmaps/frontend/content/115-testing-your-apps/109-vitest.md b/src/data/roadmaps/frontend/content/vitest@hVQ89f6G0LXEgHIOKHDYq.md similarity index 100% rename from src/data/roadmaps/frontend/content/115-testing-your-apps/109-vitest.md rename to src/data/roadmaps/frontend/content/vitest@hVQ89f6G0LXEgHIOKHDYq.md diff --git a/src/data/roadmaps/frontend/content/118-server-side-rendering/102-vue-js/index.md b/src/data/roadmaps/frontend/content/vuejs@3TE_iYvbklXK0be-5f2M7.md similarity index 100% rename from src/data/roadmaps/frontend/content/118-server-side-rendering/102-vue-js/index.md rename to src/data/roadmaps/frontend/content/vuejs@3TE_iYvbklXK0be-5f2M7.md diff --git a/src/data/roadmaps/frontend/content/111-pick-a-framework/102-vue-js/index.md b/src/data/roadmaps/frontend/content/vuejs@ERAdwL1G9M1bnx-fOm5ZA.md similarity index 100% rename from src/data/roadmaps/frontend/content/111-pick-a-framework/102-vue-js/index.md rename to src/data/roadmaps/frontend/content/vuejs@ERAdwL1G9M1bnx-fOm5ZA.md diff --git a/src/data/roadmaps/frontend/content/120-static-site-generators/103-vuepress.md b/src/data/roadmaps/frontend/content/vuepress@CMrss8E2W0eA6DVEqtPjT.md similarity index 100% rename from src/data/roadmaps/frontend/content/120-static-site-generators/103-vuepress.md rename to src/data/roadmaps/frontend/content/vuepress@CMrss8E2W0eA6DVEqtPjT.md diff --git a/src/data/roadmaps/frontend/content/113-web-components/index.md b/src/data/roadmaps/frontend/content/web-components@ruoFa3M4bUE3Dg6GXSiUI.md similarity index 100% rename from src/data/roadmaps/frontend/content/113-web-components/index.md rename to src/data/roadmaps/frontend/content/web-components@ruoFa3M4bUE3Dg6GXSiUI.md diff --git a/src/data/roadmaps/frontend/content/106-web-security-knowledge/index.md b/src/data/roadmaps/frontend/content/web-security-basics@RDWbG3Iui6IPgp0shvXtg.md similarity index 100% rename from src/data/roadmaps/frontend/content/106-web-security-knowledge/index.md rename to src/data/roadmaps/frontend/content/web-security-basics@RDWbG3Iui6IPgp0shvXtg.md diff --git a/src/data/roadmaps/frontend/content/117-progressive-web-apps/101-web-sockets.md b/src/data/roadmaps/frontend/content/web-sockets@NDJR8UCoa31v45TBFP7we.md similarity index 100% rename from src/data/roadmaps/frontend/content/117-progressive-web-apps/101-web-sockets.md rename to src/data/roadmaps/frontend/content/web-sockets@NDJR8UCoa31v45TBFP7we.md diff --git a/src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/100-webpack.md b/src/data/roadmaps/frontend/content/webpack@twufEtHgxcRUWAUQ9bXus.md similarity index 100% rename from src/data/roadmaps/frontend/content/110-build-tools/101-module-bundlers/100-webpack.md rename to src/data/roadmaps/frontend/content/webpack@twufEtHgxcRUWAUQ9bXus.md diff --git a/src/data/roadmaps/frontend/content/100-internet/104-what-is-domain-name.md b/src/data/roadmaps/frontend/content/what-is-domain-name@ZhSuu2VArnzPDp6dPQQSC.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/104-what-is-domain-name.md rename to src/data/roadmaps/frontend/content/what-is-domain-name@ZhSuu2VArnzPDp6dPQQSC.md diff --git a/src/data/roadmaps/frontend/content/100-internet/105-what-is-hosting.md b/src/data/roadmaps/frontend/content/what-is-hosting@aqMaEY8gkKMikiqleV5EP.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/105-what-is-hosting.md rename to src/data/roadmaps/frontend/content/what-is-hosting@aqMaEY8gkKMikiqleV5EP.md diff --git a/src/data/roadmaps/frontend/content/100-internet/101-what-is-http.md b/src/data/roadmaps/frontend/content/what-is-http@R12sArWVpbIs_PHxBqVaR.md similarity index 100% rename from src/data/roadmaps/frontend/content/100-internet/101-what-is-http.md rename to src/data/roadmaps/frontend/content/what-is-http@R12sArWVpbIs_PHxBqVaR.md diff --git a/src/data/roadmaps/frontend/content/112-modern-css/index.md b/src/data/roadmaps/frontend/content/writing-css@XDTD8el6OwuQ55wC-X4iV.md similarity index 100% rename from src/data/roadmaps/frontend/content/112-modern-css/index.md rename to src/data/roadmaps/frontend/content/writing-css@XDTD8el6OwuQ55wC-X4iV.md diff --git a/src/data/roadmaps/frontend/content/101-html/101-writing-semantic-html.md b/src/data/roadmaps/frontend/content/writing-semantic-html@z8-556o-PaHXjlytrawaF.md similarity index 100% rename from src/data/roadmaps/frontend/content/101-html/101-writing-semantic-html.md rename to src/data/roadmaps/frontend/content/writing-semantic-html@z8-556o-PaHXjlytrawaF.md diff --git a/src/data/roadmaps/frontend/content/107-package-managers/101-yarn.md b/src/data/roadmaps/frontend/content/yarn@yrq3nOwFREzl-9EKnpU-e.md similarity index 100% rename from src/data/roadmaps/frontend/content/107-package-managers/101-yarn.md rename to src/data/roadmaps/frontend/content/yarn@yrq3nOwFREzl-9EKnpU-e.md diff --git a/src/data/roadmaps/frontend/frontend.json b/src/data/roadmaps/frontend/frontend.json index 43ba6c001..93b03811b 100644 --- a/src/data/roadmaps/frontend/frontend.json +++ b/src/data/roadmaps/frontend/frontend.json @@ -1,37 +1,38 @@ { "nodes": [ { - "width": 20, - "height": 102, - "id": "0Q-brRt6RZ7dJu62PvwnC", - "type": "vertical", + "width": 220, + "height": 490, + "id": "0-AijuwIdYdGuiNnne4Yg", + "type": "paragraph", "position": { - "x": 160.24458345301082, - "y": 1884.1531615740655 + "x": -638.3075746114723, + "y": 2244.029159876233 }, "selected": false, "data": { - "label": "vertical node", + "label": "", "style": { - "strokeDasharray": "0.8 8", - "strokeLinecap": "round", - "strokeWidth": 3.5, - "stroke": "#0A33FF" + "fontSize": 17, + "justifyContent": "flex-end", + "textAlign": "center", + "borderColor": "#000000", + "backgroundColor": "WHITe" }, - "oldId": "LEijbLyxg4RyutKEM2Y5g" + "oldId": "Tqv7Lj8TklDTrZH5_fmUf" }, "zIndex": 999, - "positionAbsolute": { - "x": 160.24458345301082, - "y": 1884.1531615740655 + "style": { + "width": 220, + "height": 490 }, + "resizing": false, "dragging": false, - "focusable": true, - "style": { - "width": 20, - "height": 102 + "positionAbsolute": { + "x": -638.3075746114723, + "y": 2244.029159876233 }, - "resizing": false + "focusable": true }, { "width": 20, @@ -166,13 +167,13 @@ "resizing": false }, { - "width": 461, - "height": 123, + "width": 409, + "height": 119, "id": "0vLaVNJaJSHZ_bHli6Qzs", "type": "paragraph", "position": { - "x": -349.3588438928505, - "y": 2978.163242675726 + "x": -264.6944045771742, + "y": 2625.163242675726 }, "selected": false, "data": { @@ -188,29 +189,29 @@ }, "zIndex": 999, "positionAbsolute": { - "x": -349.3588438928505, - "y": 2978.163242675726 + "x": -264.6944045771742, + "y": 2625.163242675726 }, "dragging": false, "style": { - "width": 461, - "height": 123 + "width": 409, + "height": 119 }, "resizing": false, "focusable": true }, { - "width": 260, - "height": 327, + "width": 228, + "height": 290, "id": "Tqv7Lj8TklDTrZH5_fmUf", "type": "paragraph", "position": { - "x": -344.71877670581523, - "y": 2187.382968916314 + "x": -643.4418542150819, + "y": 1886.382968916314 }, "selected": false, "data": { - "label": "Calculating Measuring and improving performance", + "label": "", "style": { "fontSize": 17, "justifyContent": "flex-end", @@ -221,14 +222,14 @@ }, "zIndex": 999, "style": { - "width": 260, - "height": 327 + "width": 228, + "height": 290 }, "resizing": false, "dragging": false, "positionAbsolute": { - "x": -344.71877670581523, - "y": 2187.382968916314 + "x": -643.4418542150819, + "y": 1886.382968916314 }, "focusable": true }, @@ -311,7 +312,7 @@ "oldId": "idLHBxhvcIqZTqmh_E8Az", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "right-center" } @@ -349,7 +350,7 @@ "oldId": "os3Pa6W9SSNEzgmlBbglQ", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "right-center" } @@ -387,7 +388,7 @@ "oldId": "3oInpqvTSSC5_K6i7j8N7", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "right-center" } @@ -425,7 +426,7 @@ "oldId": "gRjFXRwpOwoyd15PHVpdB", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "right-center" } @@ -463,7 +464,7 @@ "oldId": "YKhuRbcUFzo0hTvuTq-Yl", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "right-center" } @@ -501,7 +502,7 @@ "oldId": "CPRpuk76c9-wuIffEfu87", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "right-center" } @@ -571,7 +572,7 @@ "oldId": "JdTNyawEIHeBgq5p2ELwy", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "left-center" } @@ -608,7 +609,7 @@ "oldId": "08aXk7pJXz4gkrXyrmGky", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "left-center" } @@ -646,7 +647,7 @@ "oldId": "yxcsIStIXMiZslCu1DPV5", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "left-center" } @@ -683,7 +684,7 @@ "oldId": "jZcqyxmIvdqnxGDhbHqxk", "legend": { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion", "position": "left-center" } @@ -786,7 +787,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "zdnKDruFT-mwYhyItM5px" + "oldId": "zdnKDruFT-mwYhyItM5px", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -818,7 +825,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "lmnqgHgt45-mXqKnW4Y_M" + "oldId": "lmnqgHgt45-mXqKnW4Y_M", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -850,7 +863,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "T04FRCIzpGmFMji5LiDQ5" + "oldId": "T04FRCIzpGmFMji5LiDQ5", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -1074,7 +1093,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "mi9YYg2qoXHHZm4LMZZMi" + "oldId": "mi9YYg2qoXHHZm4LMZZMi", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -1138,7 +1163,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "YFe7BDbyGA_iiDUkx6oqq" + "oldId": "YFe7BDbyGA_iiDUkx6oqq", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -1170,7 +1201,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "bxr3QfV0O9CTeAePaV-vc" + "oldId": "bxr3QfV0O9CTeAePaV-vc", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -1202,7 +1239,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "Uz1bEMwz1z_Bnm7IpZtUt" + "oldId": "Uz1bEMwz1z_Bnm7IpZtUt", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -1234,7 +1277,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "aHMTzaoKeju0JmnKcL5Zf" + "oldId": "aHMTzaoKeju0JmnKcL5Zf", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1266,7 +1315,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "I8DtxaKfOiZV7z7cIjBp1" + "oldId": "I8DtxaKfOiZV7z7cIjBp1", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1298,7 +1353,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "ci4QooZfv4b4V_dbHdBVy" + "oldId": "ci4QooZfv4b4V_dbHdBVy", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1352,7 +1413,7 @@ "type": "subtopic", "position": { "x": 271.6924253885277, - "y": 762.7248298360628 + "y": 792.7248298360628 }, "selected": false, "data": { @@ -1362,13 +1423,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "_mAZxK-bYwb0YSGi3_TYf" + "oldId": "_mAZxK-bYwb0YSGi3_TYf", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 271.6924253885277, - "y": 762.7248298360628 + "y": 792.7248298360628 }, "style": { "width": 124, @@ -1384,7 +1451,7 @@ "type": "subtopic", "position": { "x": 271.6924253885277, - "y": 708.7248298360628 + "y": 738.7248298360628 }, "selected": false, "data": { @@ -1394,13 +1461,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "wULFs38svyl-2rFOZU_6O" + "oldId": "wULFs38svyl-2rFOZU_6O", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 271.6924253885277, - "y": 708.7248298360628 + "y": 738.7248298360628 }, "style": { "width": 124, @@ -1416,7 +1489,7 @@ "type": "subtopic", "position": { "x": 271.6924253885277, - "y": 654.7248298360628 + "y": 684.7248298360628 }, "selected": false, "data": { @@ -1426,13 +1499,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "uIal-YNBZj87IUQkpesPY" + "oldId": "uIal-YNBZj87IUQkpesPY", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 271.6924253885277, - "y": 654.7248298360628 + "y": 684.7248298360628 }, "style": { "width": 124, @@ -1448,7 +1527,7 @@ "type": "subtopic", "position": { "x": 271.6924253885277, - "y": 816.7248298360628 + "y": 846.7248298360628 }, "selected": false, "data": { @@ -1458,13 +1537,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "a99SLXPb90SKSYlKnLZ2V" + "oldId": "a99SLXPb90SKSYlKnLZ2V", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 271.6924253885277, - "y": 816.7248298360628 + "y": 846.7248298360628 }, "style": { "width": 124, @@ -1480,7 +1565,7 @@ "type": "subtopic", "position": { "x": 271.6924253885277, - "y": 870.7248298360628 + "y": 900.7248298360628 }, "selected": false, "data": { @@ -1490,13 +1575,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "76_HsxbNz3Hx_ceupTc7d" + "oldId": "76_HsxbNz3Hx_ceupTc7d", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 271.6924253885277, - "y": 870.7248298360628 + "y": 900.7248298360628 }, "style": { "width": 124, @@ -1512,7 +1603,7 @@ "type": "subtopic", "position": { "x": 271.6924253885277, - "y": 924.7248298360628 + "y": 954.7248298360628 }, "selected": false, "data": { @@ -1522,13 +1613,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "plpeLEvJgqN8v_koc8zMf" + "oldId": "plpeLEvJgqN8v_koc8zMf", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 271.6924253885277, - "y": 924.7248298360628 + "y": 954.7248298360628 }, "style": { "width": 124, @@ -1586,7 +1683,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "URZEGnsvxsqA6di6RPE-9" + "oldId": "URZEGnsvxsqA6di6RPE-9", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1715,7 +1818,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "tFTf8ShyBFo8WqHmRKGf3" + "oldId": "tFTf8ShyBFo8WqHmRKGf3", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1747,7 +1856,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "bzo4iJ2GaxRX1g7COIrsO" + "oldId": "bzo4iJ2GaxRX1g7COIrsO", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1779,7 +1894,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "FuupAErYJB5_9EYcs8Ltg" + "oldId": "FuupAErYJB5_9EYcs8Ltg", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -1801,7 +1922,7 @@ "type": "topic", "position": { "x": 241.39428364498542, - "y": 1238.9097604780045 + "y": 1208.9097604780045 }, "selected": false, "data": { @@ -1822,7 +1943,7 @@ "resizing": false, "positionAbsolute": { "x": 241.39428364498542, - "y": 1238.9097604780045 + "y": 1208.9097604780045 }, "focusable": true }, @@ -1907,7 +2028,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "Fd8mOgQYENGkAU8W0LSkw" + "oldId": "Fd8mOgQYENGkAU8W0LSkw", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1939,7 +2066,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "gyF7FgAkwZ88w61m22Rjf" + "oldId": "gyF7FgAkwZ88w61m22Rjf", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -1971,7 +2104,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "3xtpc7w31zyKpNs8LTr6F" + "oldId": "3xtpc7w31zyKpNs8LTr6F", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -2003,7 +2142,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "t_hNHvx8q5HdzSoWmAEGo" + "oldId": "t_hNHvx8q5HdzSoWmAEGo", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -2035,7 +2180,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "K4VjGtyD8zVFUMDMywTYM" + "oldId": "K4VjGtyD8zVFUMDMywTYM", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -2067,7 +2218,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "_TRZgdEjj_B-DQe2Vxrrm" + "oldId": "_TRZgdEjj_B-DQe2Vxrrm", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -2099,7 +2256,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "8SvBv3DDaXg2G8m9Hf7-g" + "oldId": "8SvBv3DDaXg2G8m9Hf7-g", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -2121,7 +2284,7 @@ "type": "topic", "position": { "x": 241.39428364498542, - "y": 1415.707960645082 + "y": 1395.707960645082 }, "selected": false, "data": { @@ -2142,7 +2305,7 @@ "resizing": false, "positionAbsolute": { "x": 241.39428364498542, - "y": 1415.707960645082 + "y": 1395.707960645082 }, "focusable": true }, @@ -2153,7 +2316,7 @@ "type": "subtopic", "position": { "x": -67.36820371502154, - "y": 1354.100267415748 + "y": 1344.100267415748 }, "selected": false, "data": { @@ -2163,13 +2326,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "-mSYXMk_uhUAoQAwBhxgp" + "oldId": "-mSYXMk_uhUAoQAwBhxgp", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": -67.36820371502154, - "y": 1354.100267415748 + "y": 1344.100267415748 }, "style": { "width": 100, @@ -2185,9 +2354,9 @@ "type": "subtopic", "position": { "x": 37.63179628497846, - "y": 1354.100267415748 + "y": 1344.100267415748 }, - "selected": false, + "selected": true, "data": { "label": "Jest", "style": { @@ -2195,13 +2364,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "3JyKZE1jB43Hq3GlG1hvn" + "oldId": "3JyKZE1jB43Hq3GlG1hvn", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 37.63179628497846, - "y": 1354.100267415748 + "y": 1344.100267415748 }, "style": { "width": 100, @@ -2217,7 +2392,7 @@ "type": "subtopic", "position": { "x": 241.39428364498542, - "y": 1514.2939858099264 + "y": 1474.2939858099264 }, "selected": false, "data": { @@ -2227,13 +2402,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "matNxmkGq8gg-UQ_cSNPd" + "oldId": "matNxmkGq8gg-UQ_cSNPd", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 241.39428364498542, - "y": 1514.2939858099264 + "y": 1474.2939858099264 }, "style": { "width": 160, @@ -2249,7 +2430,7 @@ "type": "subtopic", "position": { "x": 241.39428364498542, - "y": 1568.2939858099264 + "y": 1528.2939858099264 }, "selected": false, "data": { @@ -2259,13 +2440,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "2MeMVJVJchEHBt2R3lyzw" + "oldId": "2MeMVJVJchEHBt2R3lyzw", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": 241.39428364498542, - "y": 1568.2939858099264 + "y": 1528.2939858099264 }, "style": { "width": 160, @@ -2355,7 +2542,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "AiFQoD09X9K36nmgsH1Aj" + "oldId": "AiFQoD09X9K36nmgsH1Aj", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -2387,7 +2580,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "smz9DaF6gwWdob_lyMYzt" + "oldId": "smz9DaF6gwWdob_lyMYzt", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -2419,7 +2618,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "xAu1DT2aO5IzvaDrjYB0M" + "oldId": "xAu1DT2aO5IzvaDrjYB0M", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -2451,7 +2656,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "kUy5HzWZoQm4YEDM6SYnL" + "oldId": "kUy5HzWZoQm4YEDM6SYnL", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -2504,7 +2715,7 @@ "id": "hwPOGT0-duy3KfI8QaEwF", "type": "topic", "position": { - "x": -276.3110352511957, + "x": -296.3110352511957, "y": 1628.657291456067 }, "selected": false, @@ -2525,7 +2736,7 @@ }, "resizing": false, "positionAbsolute": { - "x": -276.3110352511957, + "x": -296.3110352511957, "y": 1628.657291456067 }, "focusable": true @@ -2537,7 +2748,7 @@ "type": "subtopic", "position": { "x": -643.4418542150819, - "y": 1779.6524214737567 + "y": 1769.6524214737567 }, "selected": false, "data": { @@ -2547,13 +2758,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "9bxoRhitbZNn5b0IoJYBg" + "oldId": "9bxoRhitbZNn5b0IoJYBg", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": -643.4418542150819, - "y": 1779.6524214737567 + "y": 1769.6524214737567 }, "style": { "width": 226, @@ -2569,7 +2786,7 @@ "type": "subtopic", "position": { "x": -643.4418542150819, - "y": 1725.6524214737567 + "y": 1715.6524214737567 }, "selected": false, "data": { @@ -2579,13 +2796,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "fexS9SQR_oUMMyvCFfQHx" + "oldId": "fexS9SQR_oUMMyvCFfQHx", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": -643.4418542150819, - "y": 1725.6524214737567 + "y": 1715.6524214737567 }, "style": { "width": 226, @@ -2601,7 +2824,7 @@ "type": "subtopic", "position": { "x": -643.4418542150819, - "y": 1833.6524214737567 + "y": 1823.6524214737567 }, "selected": false, "data": { @@ -2611,13 +2834,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "9uwJS2bEPM1-b5w-clIgW" + "oldId": "9uwJS2bEPM1-b5w-clIgW", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { "x": -643.4418542150819, - "y": 1833.6524214737567 + "y": 1823.6524214737567 }, "style": { "width": 226, @@ -2632,8 +2861,8 @@ "id": "0asdhvwBH3gn-ercktV7A", "type": "subtopic", "position": { - "x": -276.3110352511957, - "y": 1715.5579525586788 + "x": -296.3110352511957, + "y": 1705.5579525586788 }, "selected": false, "data": { @@ -2643,13 +2872,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "zNxwUyEsGPseh4i7l052C" + "oldId": "zNxwUyEsGPseh4i7l052C", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -276.3110352511957, - "y": 1715.5579525586788 + "x": -296.3110352511957, + "y": 1705.5579525586788 }, "style": { "width": 168, @@ -2659,17 +2894,17 @@ "focusable": true }, { - "width": 283, + "width": 108, "height": 49, "id": "Cxspmb14_0i1tfw-ZLxEu", "type": "topic", "position": { - "x": 122.34973095743374, - "y": 1955.2381074587565 + "x": -74.5, + "y": 1778.6524214737567 }, "selected": false, "data": { - "label": "Server Side Rendering (SSR)", + "label": "SSR", "style": { "fontSize": 17, "justifyContent": "flex-start", @@ -2680,13 +2915,13 @@ "zIndex": 999, "dragging": false, "style": { - "width": 283, + "width": 108, "height": 49 }, "resizing": false, "positionAbsolute": { - "x": 122.34973095743374, - "y": 1955.2381074587565 + "x": -74.5, + "y": 1778.6524214737567 }, "focusable": true }, @@ -2696,8 +2931,8 @@ "id": "OL8I6nOZ8hGGWmtxg_Mv8", "type": "subtopic", "position": { - "x": 117.74458345301082, - "y": 1873.369602551074 + "x": 119.74458345301082, + "y": 1830.6524214737567 }, "selected": false, "data": { @@ -2707,13 +2942,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "E2W0AJDq7IWWEyTJeixyG" + "oldId": "E2W0AJDq7IWWEyTJeixyG", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 117.74458345301082, - "y": 1873.369602551074 + "x": 119.74458345301082, + "y": 1830.6524214737567 }, "style": { "width": 105, @@ -2728,8 +2969,8 @@ "id": "3TE_iYvbklXK0be-5f2M7", "type": "subtopic", "position": { - "x": 117.74458345301082, - "y": 1819.369602551074 + "x": 119.74458345301082, + "y": 1776.6524214737567 }, "selected": false, "data": { @@ -2739,13 +2980,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "5iKf8ERxF8x8-DjoxqpLz" + "oldId": "5iKf8ERxF8x8-DjoxqpLz", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 117.74458345301082, - "y": 1819.369602551074 + "x": 119.74458345301082, + "y": 1776.6524214737567 }, "style": { "width": 105, @@ -2760,8 +3007,8 @@ "id": "k6rp6Ua9qUEW_DA_fOg5u", "type": "subtopic", "position": { - "x": 117.74458345301082, - "y": 1765.369602551074 + "x": 119.74458345301082, + "y": 1722.6524214737567 }, "selected": false, "data": { @@ -2771,13 +3018,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "5EmJofW_K7cJuv71au2TV" + "oldId": "5EmJofW_K7cJuv71au2TV", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 117.74458345301082, - "y": 1765.369602551074 + "x": 119.74458345301082, + "y": 1722.6524214737567 }, "style": { "width": 105, @@ -2787,13 +3040,13 @@ "focusable": true }, { - "width": 105, + "width": 100, "height": 49, "id": "SGDf_rbfmFSHlxI-Czzlz", "type": "subtopic", "position": { - "x": 115.8253071940922, - "y": 1711.369602551074 + "x": 119.74458345301082, + "y": 1667.0301235678273 }, "selected": false, "data": { @@ -2803,61 +3056,73 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "9GxkJoUjCQxG6gx8_3SGV" + "oldId": "9GxkJoUjCQxG6gx8_3SGV", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 115.8253071940922, - "y": 1711.369602551074 + "x": 119.74458345301082, + "y": 1667.0301235678273 }, "style": { - "width": 105, + "width": 100, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 118, + "width": 139, "height": 49, "id": "KJRkrFZIihCUBrOf579EU", "type": "subtopic", "position": { - "x": 286.122755911093, - "y": 1712.0301235678273 + "x": 264.99486256192824, + "y": 1722.6524214737567 }, "selected": false, "data": { - "label": "Remix", + "label": "react-router", "style": { "fontSize": 17, "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "Bd2XFblDYF5a58H8rT-xD" + "oldId": "Bd2XFblDYF5a58H8rT-xD", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 286.122755911093, - "y": 1712.0301235678273 + "x": 264.99486256192824, + "y": 1722.6524214737567 }, "style": { - "width": 118, + "width": 139, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 118, + "width": 140, "height": 49, "id": "zNFYAJaSq0YZXL5Rpx1NX", "type": "subtopic", "position": { - "x": 286.122755911093, - "y": 1658.0301235678273 + "x": 264.99486256192824, + "y": 1614.0301235678273 }, "selected": false, "data": { @@ -2867,125 +3132,111 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "XEBjJw31qtoP0giNeTIOb" + "oldId": "XEBjJw31qtoP0giNeTIOb", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 286.122755911093, - "y": 1658.0301235678273 + "x": 264.99486256192824, + "y": 1614.0301235678273 }, "style": { - "width": 118, + "width": 140, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 118, + "width": 140, "height": 49, - "id": "-Nsq3Jg3gq02mKcm4u41_", + "id": "BBsXxkbbEG-gnbM1xXKrj", "type": "subtopic", "position": { - "x": 286.122755911093, - "y": 1766.0301235678273 + "x": 264.99486256192824, + "y": 1776.6524214737567 }, "selected": false, "data": { - "label": "Universal", + "label": "Nuxt.js", "style": { "fontSize": 17, "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "FWYq1kSAfiN6CjjICK3x5" + "oldId": "bzDexz0i_3O-0CZxeVz__", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 286.122755911093, - "y": 1766.0301235678273 + "x": 264.99486256192824, + "y": 1776.6524214737567 }, "style": { - "width": 118, + "width": 140, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 118, + "width": 140, "height": 49, - "id": "BBsXxkbbEG-gnbM1xXKrj", + "id": "P4st_telfCwKLSAU2WsQP", "type": "subtopic", "position": { - "x": 286.122755911093, - "y": 1820.0301235678273 + "x": 264.99486256192824, + "y": 1830.6524214737567 }, "selected": false, "data": { - "label": "Nuxt.js", + "label": "Svelte Kit", "style": { "fontSize": 17, "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "bzDexz0i_3O-0CZxeVz__" + "oldId": "eLRQ4TTquWmk5ElFO8bUs", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 286.122755911093, - "y": 1820.0301235678273 + "x": 264.99486256192824, + "y": 1830.6524214737567 }, "style": { - "width": 118, + "width": 140, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 118, - "height": 49, - "id": "P4st_telfCwKLSAU2WsQP", - "type": "subtopic", - "position": { - "x": 286.122755911093, - "y": 1874.0301235678273 - }, - "selected": false, - "data": { - "label": "Svelte Kit", - "style": { - "fontSize": 17, - "justifyContent": "flex-start", - "textAlign": "center" - }, - "oldId": "eLRQ4TTquWmk5ElFO8bUs" - }, - "zIndex": 999, - "dragging": false, - "positionAbsolute": { - "x": 286.122755911093, - "y": 1874.0301235678273 - }, - "style": { - "width": 118, - "height": 49 - }, - "resizing": false, - "focusable": true - }, - { - "width": 158, + "width": 158, "height": 49, "id": "L7AllJfKvClaam3y-u6DP", "type": "topic", "position": { - "x": -268.25762800793046, - "y": 1955.2381074587565 + "x": -299.7582952055722, + "y": 1936.2381074587565 }, "selected": false, "data": { @@ -2995,7 +3246,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "pbcrQq92xWLdgHQjcv1B-" + "oldId": "pbcrQq92xWLdgHQjcv1B-", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-top" + } }, "zIndex": 999, "dragging": false, @@ -3005,8 +3262,8 @@ }, "resizing": false, "positionAbsolute": { - "x": -268.25762800793046, - "y": 1955.2381074587565 + "x": -299.7582952055722, + "y": 1936.2381074587565 }, "focusable": true }, @@ -3016,8 +3273,8 @@ "id": "5eUbDdOTOfaOhUlZAmmXW", "type": "subtopic", "position": { - "x": -268.25762800793046, - "y": 1810.3739101553622 + "x": -299.7582952055722, + "y": 1804.3739101553622 }, "selected": false, "data": { @@ -3027,13 +3284,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "T8XBkJc3CQ0OeNbir3aIB" + "oldId": "T8XBkJc3CQ0OeNbir3aIB", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -268.25762800793046, - "y": 1810.3739101553622 + "x": -299.7582952055722, + "y": 1804.3739101553622 }, "style": { "width": 158, @@ -3048,8 +3311,8 @@ "id": "0moPO23ol33WsjVXSpTGf", "type": "subtopic", "position": { - "x": -268.25762800793046, - "y": 1864.3739101553622 + "x": -299.7582952055722, + "y": 1858.3739101553622 }, "selected": false, "data": { @@ -3059,13 +3322,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "ao2xbMKjWdjJuYzmxWewu" + "oldId": "ao2xbMKjWdjJuYzmxWewu", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -268.25762800793046, - "y": 1864.3739101553622 + "x": -299.7582952055722, + "y": 1858.3739101553622 }, "style": { "width": 158, @@ -3075,13 +3344,13 @@ "focusable": true }, { - "width": 232, + "width": 214, "height": 49, "id": "n0q32YhWEIAUwbGXexoqV", "type": "topic", "position": { - "x": -29.8255385145157, - "y": 2301.833490040384 + "x": -48.8854599140368, + "y": 2147.3894186454863 }, "selected": false, "data": { @@ -3096,24 +3365,24 @@ "zIndex": 999, "dragging": false, "style": { - "width": 232, + "width": 214, "height": 49 }, "resizing": false, "positionAbsolute": { - "x": -29.8255385145157, - "y": 2301.833490040384 + "x": -48.8854599140368, + "y": 2147.3894186454863 }, "focusable": true }, { - "width": 114, + "width": 205, "height": 49, "id": "CMrss8E2W0eA6DVEqtPjT", "type": "subtopic", "position": { - "x": -29.34942862879211, - "y": 2415.6987607173705 + "x": -44.3854599140368, + "y": 2004.382968916314 }, "selected": false, "data": { @@ -3123,93 +3392,35 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "SUBnFEyi6Us6fXRh6D6TE" - }, - "zIndex": 999, - "dragging": false, - "positionAbsolute": { - "x": -29.34942862879211, - "y": 2415.6987607173705 - }, - "style": { - "width": 114, - "height": 49 - }, - "resizing": false, - "focusable": true - }, - { - "width": 114, - "height": 49, - "id": "kFQazhINkkiuGEAbHv1nE", - "type": "subtopic", - "position": { - "x": -29.34942862879211, - "y": 2469.6987607173705 - }, - "selected": false, - "data": { - "label": "Jekyll", - "style": { - "fontSize": 17, - "justifyContent": "flex-start", - "textAlign": "center" - }, - "oldId": "hAYlDH7-mqnY_b5ksFYqU" - }, - "zIndex": 999, - "dragging": false, - "positionAbsolute": { - "x": -29.34942862879211, - "y": 2469.6987607173705 - }, - "style": { - "width": 114, - "height": 49 - }, - "resizing": false, - "focusable": true - }, - { - "width": 114, - "height": 49, - "id": "sb63ENIkvQnC1cPYnI1ll", - "type": "subtopic", - "position": { - "x": -29.34942862879211, - "y": 2523.6987607173705 - }, - "selected": false, - "data": { - "label": "Hugo", - "style": { - "fontSize": 17, - "justifyContent": "flex-start", - "textAlign": "center" - }, - "oldId": "gLp2xXRfGGnKNRws4_cQ4" + "oldId": "SUBnFEyi6Us6fXRh6D6TE", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -29.34942862879211, - "y": 2523.6987607173705 + "x": -44.3854599140368, + "y": 2004.382968916314 }, "style": { - "width": 114, + "width": 205, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 114, + "width": 208, "height": 49, "id": "XWJxV42Dpu2D3xDK10Pn3", "type": "subtopic", "position": { - "x": -29.34942862879211, - "y": 2577.6987607173705 + "x": -45.8854599140368, + "y": 2247.01 }, "selected": false, "data": { @@ -3219,29 +3430,35 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "vKK8jvUcXrJF_VNJtrZ9F" + "oldId": "vKK8jvUcXrJF_VNJtrZ9F", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -29.34942862879211, - "y": 2577.6987607173705 + "x": -45.8854599140368, + "y": 2247.01 }, "style": { - "width": 114, + "width": 208, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 109, + "width": 100, "height": 49, "id": "iUxXq7beg55y76dkwhM13", "type": "subtopic", "position": { - "x": 95.2199168463942, - "y": 2415.822111508183 + "x": 62.50864383591812, + "y": 1948.8221115081828 }, "selected": false, "data": { @@ -3251,29 +3468,35 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "rRf68iRg_Jtn_jGBayLxQ" + "oldId": "rRf68iRg_Jtn_jGBayLxQ", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 95.2199168463942, - "y": 2415.822111508183 + "x": 62.50864383591812, + "y": 1948.8221115081828 }, "style": { - "width": 109, + "width": 100, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 109, + "width": 205, "height": 49, "id": "io0RHJWIcVxDhcYkV9d38", "type": "subtopic", "position": { - "x": 95.2199168463942, - "y": 2469.822111508183 + "x": -44.3854599140368, + "y": 2058.382968916314 }, "selected": false, "data": { @@ -3283,29 +3506,35 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "hWWOyclt4hWJmbMvPBt5i" + "oldId": "hWWOyclt4hWJmbMvPBt5i", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 95.2199168463942, - "y": 2469.822111508183 + "x": -44.3854599140368, + "y": 2058.382968916314 }, "style": { - "width": 109, + "width": 205, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 109, + "width": 100, "height": 49, "id": "V70884VcuXkfrfHyLGtUg", "type": "subtopic", "position": { - "x": 95.2199168463942, - "y": 2523.822111508183 + "x": -43.3854599140368, + "y": 1948.8221115081828 }, "selected": false, "data": { @@ -3315,82 +3544,62 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "2d9PRh48NLgCKvMRUP9Mp" + "oldId": "2d9PRh48NLgCKvMRUP9Mp", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 95.2199168463942, - "y": 2523.822111508183 + "x": -43.3854599140368, + "y": 1948.8221115081828 }, "style": { - "width": 109, + "width": 100, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 109, + "width": 158, "height": 49, - "id": "yj-LnWb41Q7TX6WRB-ge2", - "type": "subtopic", - "position": { - "x": 94.65057137120789, - "y": 2577.6987607173705 - }, - "selected": false, - "data": { - "label": "Remix", - "style": { - "fontSize": 17, - "justifyContent": "flex-start", - "textAlign": "center" - }, - "oldId": "9-OdMPLFSzXyxp1oOe1cl" - }, - "zIndex": 999, - "dragging": false, - "positionAbsolute": { - "x": 94.65057137120789, - "y": 2577.6987607173705 - }, - "style": { - "width": 109, - "height": 49 - }, - "resizing": false, - "focusable": true - }, - { - "width": 262, - "height": 50, "id": "PoM77O2OtxPELxfrW1wtl", "type": "topic", "position": { - "x": -491.5, - "y": 2048.5874140279066 + "x": -299.7582952055722, + "y": 2147.3894186454863 }, "selected": false, "data": { - "label": "Progressive Web Apps", + "label": "PWAs", "style": { "fontSize": 17, "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "z2-TJ71VFM7LKPXaCKe2T" + "oldId": "z2-TJ71VFM7LKPXaCKe2T", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "right-top" + } }, "zIndex": 999, "dragging": false, "style": { - "width": 262, - "height": 50 + "width": 158, + "height": 49 }, "resizing": false, "positionAbsolute": { - "x": -491.5, - "y": 2048.5874140279066 + "x": -299.7582952055722, + "y": 2147.3894186454863 }, "focusable": true }, @@ -3400,8 +3609,8 @@ "id": "VOGKiG2EZVfCBAaa7Df0W", "type": "topic", "position": { - "x": 256.92382104841215, - "y": 2301.833490040384 + "x": 251.92382104841215, + "y": 2147.833490040384 }, "selected": false, "data": { @@ -3411,7 +3620,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "1Cr9EEM5MLBlE8pquMlbZ" + "oldId": "1Cr9EEM5MLBlE8pquMlbZ", + "legend": { + "id": "R9WLhURhPdVNXP7AUTDvR", + "label": "Order not strict / Learn anytime", + "color": "#929292", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, @@ -3421,8 +3636,8 @@ }, "resizing": false, "positionAbsolute": { - "x": 256.92382104841215, - "y": 2301.833490040384 + "x": 251.92382104841215, + "y": 2147.833490040384 }, "focusable": true }, @@ -3432,8 +3647,8 @@ "id": "dsTegXTyupjS8iU6I7Xiv", "type": "subtopic", "position": { - "x": 253.92382104841215, - "y": 2045.3894186454863 + "x": 247.92382104841215, + "y": 1947.3894186454863 }, "selected": false, "data": { @@ -3443,13 +3658,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "kkmRxX5txOVNalze5qbFt" + "oldId": "kkmRxX5txOVNalze5qbFt", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 253.92382104841215, - "y": 2045.3894186454863 + "x": 247.92382104841215, + "y": 1947.3894186454863 }, "style": { "width": 150, @@ -3464,8 +3685,8 @@ "id": "dIQXjFEUAJAGxxfAYceHU", "type": "subtopic", "position": { - "x": 253.92382104841215, - "y": 2099.3894186454863 + "x": 247.92382104841215, + "y": 2000.3894186454863 }, "selected": false, "data": { @@ -3475,13 +3696,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "E6CO-PPeanNHM3VmHlOj_" + "oldId": "E6CO-PPeanNHM3VmHlOj_", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 253.92382104841215, - "y": 2099.3894186454863 + "x": 247.92382104841215, + "y": 2000.3894186454863 }, "style": { "width": 150, @@ -3496,8 +3723,8 @@ "id": "xmRv6-L45m5MDpHmdHFCL", "type": "subtopic", "position": { - "x": 253.92382104841215, - "y": 2153.3894186454863 + "x": 247.92382104841215, + "y": 2053.3894186454863 }, "selected": false, "data": { @@ -3507,45 +3734,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "Lwn9ABE_c54DSVxC_Xqqd" - }, - "zIndex": 999, - "dragging": false, - "positionAbsolute": { - "x": 253.92382104841215, - "y": 2153.3894186454863 - }, - "style": { - "width": 150, - "height": 49 - }, - "resizing": false, - "focusable": true - }, - { - "width": 150, - "height": 49, - "id": "2wLKhD8OhVsTR-Q7WPwbj", - "type": "subtopic", - "position": { - "x": 253.92382104841215, - "y": 2207.266067854674 - }, - "selected": false, - "data": { - "label": "NativeScript", - "style": { - "fontSize": 17, - "justifyContent": "flex-start", - "textAlign": "center" - }, - "oldId": "A7OE8aij_Nw4pe1ujRfni" + "oldId": "Lwn9ABE_c54DSVxC_Xqqd", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "right-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 253.92382104841215, - "y": 2207.266067854674 + "x": 247.92382104841215, + "y": 2053.3894186454863 }, "style": { "width": 150, @@ -3560,8 +3761,8 @@ "id": "KMA7NkxFbPoUDtFnGBFnj", "type": "topic", "position": { - "x": 251.34973095743374, - "y": 2715.755580716903 + "x": -135.65026904256626, + "y": 2453.755580716903 }, "selected": false, "data": { @@ -3581,77 +3782,78 @@ }, "resizing": false, "positionAbsolute": { - "x": 251.34973095743374, - "y": 2715.755580716903 + "x": -135.65026904256626, + "y": 2453.755580716903 }, "focusable": true }, { - "width": 213, + "width": 132, "height": 49, "id": "OIcmPSbdsuWapb6HZ4BEi", "type": "button", "position": { - "x": -335.3450414085644, - "y": 3032.3089001088356 + "x": -250.68060209288814, + "y": 2679.3089001088356 }, "selected": false, "data": { - "label": "TypeScript Roamdap", - "href": "", - "color": "#000000", - "backgroundColor": "#ffe59a", + "label": "TypeScript", + "href": "https://roadmap.sh/typescript", + "color": "#FFf", + "backgroundColor": "#4136D6", "style": { "fontSize": 17 }, - "borderColor": "#000000", + "borderColor": "#4136D6", "oldId": "cmSSwPPiiHwYh9ct14N6A" }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -335.3450414085644, - "y": 3032.3089001088356 + "x": -250.68060209288814, + "y": 2679.3089001088356 }, "style": { - "width": 213, + "width": 132, "height": 49 }, "focusable": true, "resizing": false }, { - "width": 213, + "width": 119, "height": 49, "id": "qXKNK_IsGS8-JgLK-Q9oU", "type": "button", "position": { - "x": -113.79082616152044, - "y": 3032.3089001088356 + "x": -114.12638684584417, + "y": 2679.3089001088356 }, "selected": false, "data": { - "label": "Nodejs Roamdap", - "href": "", - "color": "#000000", - "backgroundColor": "#ffe59a", + "label": "Nodejs", + "href": "https://roadmap.sh/nodejs", + "color": "#FFFFFf", + "backgroundColor": "#4136D6", "style": { "fontSize": 17 }, - "borderColor": "#000000", + "borderColor": "#4136D6", "oldId": "U309TNZ3yUYyAmP33dOt1" }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -113.79082616152044, - "y": 3032.3089001088356 + "x": -114.12638684584417, + "y": 2679.3089001088356 }, "style": { - "width": 213, + "width": 119, "height": 49 }, - "focusable": true + "focusable": true, + "resizing": false }, { "width": 20, @@ -3659,8 +3861,8 @@ "id": "RLtk1C3gofHnLJ17x3o5b", "type": "vertical", "position": { - "x": -124.75829520557221, - "y": 3101.163242675726 + "x": -71.75829520557221, + "y": 2748.163242675726 }, "selected": false, "data": { @@ -3675,8 +3877,8 @@ }, "zIndex": 999, "positionAbsolute": { - "x": -124.75829520557221, - "y": 3101.163242675726 + "x": -71.75829520557221, + "y": 2748.163242675726 }, "dragging": false, "focusable": true, @@ -3692,8 +3894,8 @@ "id": "mQHpSyMR4Rra4mqAslgiS", "type": "subtopic", "position": { - "x": 69.46343000583516, - "y": 2659.529159876233 + "x": -317.53656999416484, + "y": 2397.529159876233 }, "selected": false, "data": { @@ -3703,13 +3905,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "oT8ChWye8YxdMuD0Ju9cb" + "oldId": "oT8ChWye8YxdMuD0Ju9cb", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 69.46343000583516, - "y": 2659.529159876233 + "x": -317.53656999416484, + "y": 2397.529159876233 }, "style": { "width": 102, @@ -3724,8 +3932,8 @@ "id": "GJctl0tVXe4B70s35RkLT", "type": "subtopic", "position": { - "x": 70.46343000583516, - "y": 2713.529159876233 + "x": -316.53656999416484, + "y": 2451.529159876233 }, "selected": false, "data": { @@ -3735,13 +3943,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "Wkhxb3Ax0Qlt61QpuwVXH" + "oldId": "Wkhxb3Ax0Qlt61QpuwVXH", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 70.46343000583516, - "y": 2713.529159876233 + "x": -316.53656999416484, + "y": 2451.529159876233 }, "style": { "width": 100, @@ -3756,8 +3970,8 @@ "id": "2MRvAK9G9RGM_auWytcKh", "type": "subtopic", "position": { - "x": 70.46343000583516, - "y": 2767.529159876233 + "x": -316.53656999416484, + "y": 2505.529159876233 }, "selected": false, "data": { @@ -3767,13 +3981,19 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "vicOyCmPv4Nj_QQnP6_Y4" + "oldId": "vicOyCmPv4Nj_QQnP6_Y4", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": 70.46343000583516, - "y": 2767.529159876233 + "x": -316.53656999416484, + "y": 2505.529159876233 }, "style": { "width": 100, @@ -3783,13 +4003,13 @@ "focusable": true }, { - "width": 220, - "height": 40, + "width": 210, + "height": 49, "id": "-DsETM9xLgHyGZthptj1Y", - "type": "topic", + "type": "subtopic", "position": { - "x": -324.7582952055722, - "y": 2209.106258964535 + "x": -634.5537077765232, + "y": 1897.0487446425846 }, "selected": false, "data": { @@ -3804,23 +4024,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -324.7582952055722, - "y": 2209.106258964535 + "x": -634.5537077765232, + "y": 1897.0487446425846 }, "style": { - "width": 220, - "height": 40 + "width": 210, + "height": 49 }, - "focusable": true + "focusable": true, + "resizing": false }, { - "width": 220, - "height": 40, + "width": 210, + "height": 49, "id": "xD5WfEP7Ez0oi3890UgmH", - "type": "topic", + "type": "subtopic", "position": { - "x": -324.7582952055722, - "y": 2253.106258964535 + "x": -634.5537077765232, + "y": 1950.0487446425846 }, "selected": false, "data": { @@ -3834,24 +4055,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -324.7582952055722, - "y": 2253.106258964535 + "x": -634.5537077765232, + "y": 1950.0487446425846 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 210, + "height": 49 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 210, + "height": 49, "id": "X0Y3-IpPiFUCsNDK4RFxw", - "type": "topic", + "type": "subtopic", "position": { - "x": -324.7582952055722, - "y": 2297.106258964535 + "x": -634.5537077765232, + "y": 2003.0487446425846 }, "selected": false, "data": { @@ -3866,24 +4087,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -324.7582952055722, - "y": 2297.106258964535 + "x": -634.5537077765232, + "y": 2003.0487446425846 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 210, + "height": 49 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 210, + "height": 49, "id": "RIhHMHLsLLPhNl05Q9aBf", - "type": "topic", + "type": "subtopic", "position": { - "x": -324.7582952055722, - "y": 2341.106258964535 + "x": -634.5537077765232, + "y": 2056.0487446425846 }, "selected": false, "data": { @@ -3898,24 +4119,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -324.7582952055722, - "y": 2341.106258964535 + "x": -634.5537077765232, + "y": 2056.0487446425846 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 210, + "height": 49 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 210, + "height": 49, "id": "3_sJHKTogkDoCjR518-OL", - "type": "topic", + "type": "subtopic", "position": { - "x": -324.7582952055722, - "y": 2385.106258964535 + "x": -634.5537077765232, + "y": 2109.0487446425846 }, "selected": false, "data": { @@ -3930,24 +4151,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -324.7582952055722, - "y": 2385.106258964535 + "x": -634.5537077765232, + "y": 2109.0487446425846 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 210, + "height": 49 }, "focusable": true }, { - "width": 263, + "width": 269, "height": 49, "id": "mB3hZvAfRr6kCEbF6t-yz", "type": "button", "position": { - "x": -347.71877670581523, - "y": 2519.382968916314 + "x": -355.2582952055722, + "y": 2252.833490040384 }, "selected": false, "data": { @@ -3962,58 +4183,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -347.71877670581523, - "y": 2519.382968916314 + "x": -355.2582952055722, + "y": 2252.833490040384 }, "style": { - "width": 263, + "width": 269, "height": 49 }, "resizing": false, "focusable": true }, { - "width": 260, - "height": 505, - "id": "0-AijuwIdYdGuiNnne4Yg", - "type": "paragraph", - "position": { - "x": -628.2291608378234, - "y": 2187.78288629059 - }, - "selected": false, - "data": { - "label": "Calculating Measuring and improving performance", - "style": { - "fontSize": 17, - "justifyContent": "flex-end", - "textAlign": "center", - "borderColor": "#000000", - "backgroundColor": "WHITe" - }, - "oldId": "Tqv7Lj8TklDTrZH5_fmUf" - }, - "zIndex": 999, - "style": { - "width": 260, - "height": 505 - }, - "resizing": false, - "dragging": false, - "positionAbsolute": { - "x": -628.2291608378234, - "y": 2187.78288629059 - }, - "focusable": true - }, - { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "raoa-75p_DyBAycvy3yVv", - "type": "topic", + "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2209.5061763388107 + "x": -626.8075746114723, + "y": 2255.1757757262712 }, "selected": false, "data": { @@ -4028,23 +4215,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2209.5061763388107 + "x": -626.8075746114723, + "y": 2255.1757757262712 }, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, - "focusable": true + "focusable": true, + "resizing": false }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "NDJR8UCoa31v45TBFP7we", - "type": "topic", + "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2253.5061763388107 + "x": -626.8075746114723, + "y": 2307.1757757262712 }, "selected": false, "data": { @@ -4059,24 +4247,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2253.5061763388107 + "x": -626.8075746114723, + "y": 2307.1757757262712 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "doPe92aUpo-8KWhi45lWK", - "type": "topic", + "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2297.5061763388107 + "x": -626.8075746114723, + "y": 2359.1757757262712 }, "selected": false, "data": { @@ -4091,24 +4279,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2297.5061763388107 + "x": -626.8075746114723, + "y": 2359.1757757262712 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "TldWoXiqKxM4X3JONKAR7", - "type": "topic", + "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2341.5061763388107 + "x": -626.8075746114723, + "y": 2411.1757757262712 }, "selected": false, "data": { @@ -4123,24 +4311,24 @@ "zIndex": 999, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2341.5061763388107 + "x": -626.8075746114723, + "y": 2411.1757757262712 }, "resizing": false, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "YbGGYoKJEx29PlvopUBiM", "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2385.5061763388107 + "x": -626.8075746114723, + "y": 2463.1757757262712 }, "selected": false, "data": { @@ -4153,24 +4341,24 @@ }, "zIndex": 999, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "dragging": false, "focusable": true, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2385.5061763388107 + "x": -626.8075746114723, + "y": 2463.1757757262712 } }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "6AlcArOiJMhHXguAosDzn", "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2429.5061763388107 + "x": -626.8075746114723, + "y": 2515.1757757262712 }, "selected": false, "data": { @@ -4184,24 +4372,24 @@ }, "zIndex": 999, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2429.5061763388107 + "x": -626.8075746114723, + "y": 2515.1757757262712 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "Fd0hQh1DleM0gMzCpGou4", "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2473.5061763388107 + "x": -626.8075746114723, + "y": 2567.1757757262712 }, "selected": false, "data": { @@ -4215,24 +4403,24 @@ }, "zIndex": 999, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2473.5061763388107 + "x": -626.8075746114723, + "y": 2567.1757757262712 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "MAM1nuVk-h4AvTUk4nvmj", "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2517.5061763388107 + "x": -626.8075746114723, + "y": 2619.1757757262712 }, "selected": false, "data": { @@ -4246,24 +4434,24 @@ }, "zIndex": 999, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2517.5061763388107 + "x": -626.8075746114723, + "y": 2619.1757757262712 }, "focusable": true }, { - "width": 220, - "height": 40, + "width": 200, + "height": 49, "id": "opu2bAsmdWHqWqtsCscLC", "type": "subtopic", "position": { - "x": -608.2686793375804, - "y": 2561.5061763388107 + "x": -626.8075746114723, + "y": 2671.1757757262712 }, "selected": false, "data": { @@ -4277,13 +4465,13 @@ }, "zIndex": 999, "style": { - "width": 220, - "height": 40 + "width": 200, + "height": 49 }, "dragging": false, "positionAbsolute": { - "x": -608.2686793375804, - "y": 2561.5061763388107 + "x": -626.8075746114723, + "y": 2671.1757757262712 }, "focusable": true }, @@ -4337,7 +4525,13 @@ "justifyContent": "flex-start", "textAlign": "center" }, - "oldId": "4W7UXfdKIUsm1bUrjdTVT" + "oldId": "4W7UXfdKIUsm1bUrjdTVT", + "legend": { + "id": "DMx7rAjVBWMbzjSde-tvp", + "label": "Alternative Option / Pick this or purple", + "color": "#4f7a28", + "position": "left-center" + } }, "zIndex": 999, "dragging": false, @@ -4391,7 +4585,7 @@ "legends": [ { "id": "NJhQIvMyMD1Cu-JA1UCmJ", - "color": "#2b78e4", + "color": "#874efe", "label": "Personal Recommendation / Opinion" }, { @@ -4462,7 +4656,7 @@ "label": "roadmap.sh", "href": "https://roadmap.sh", "color": "#ffffff", - "backgroundColor": "#2a79e4", + "backgroundColor": "#4136D6", "style": { "fontSize": 17 } @@ -4482,6 +4676,132 @@ }, "selectable": true, "focusable": true + }, + { + "width": 140, + "height": 49, + "id": "wA2fSYsbBYU02VJXAvUz8", + "type": "subtopic", + "position": { + "x": 264.99486256192824, + "y": 1667.0301235678273 + }, + "selected": false, + "data": { + "label": "Astro", + "style": { + "fontSize": 17, + "justifyContent": "flex-start", + "textAlign": "center" + }, + "oldId": "zNFYAJaSq0YZXL5Rpx1NX", + "legend": { + "id": "NJhQIvMyMD1Cu-JA1UCmJ", + "color": "#874efe", + "label": "Personal Recommendation / Opinion", + "position": "right-center" + } + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 264.99486256192824, + "y": 1667.0301235678273 + }, + "style": { + "width": 140, + "height": 49 + }, + "resizing": false, + "focusable": true + }, + { + "id": "_A1szF2RfITS21ZkihdVU", + "type": "label", + "position": { + "x": -589.4418542150819, + "y": 2748.163242675726 + }, + "selected": false, + "data": { + "label": "Browser APIs", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + }, + "oldId": "dnVfC9N76qvTGKO9B-AW7" + }, + "zIndex": 999, + "width": 118, + "height": 36, + "positionAbsolute": { + "x": -589.4418542150819, + "y": 2748.163242675726 + }, + "dragging": false, + "focusable": true + }, + { + "id": "tJHq39GljlEahhhur11NE", + "type": "label", + "position": { + "x": -633.0537077765232, + "y": 2181.382968916314 + }, + "selected": false, + "data": { + "label": "Measure & Improve Perf.", + "href": "", + "color": "#000000", + "style": { + "fontSize": 17 + }, + "oldId": "_A1szF2RfITS21ZkihdVU" + }, + "zIndex": 999, + "width": 207, + "height": 36, + "positionAbsolute": { + "x": -633.0537077765232, + "y": 2181.382968916314 + }, + "dragging": false, + "focusable": true + }, + { + "width": 119, + "height": 49, + "id": "-sFboM4eFUMVq1tlPl-fV", + "type": "button", + "position": { + "x": 11.058722960661697, + "y": 2679.3089001088356 + }, + "selected": false, + "data": { + "label": "Fullstack", + "href": "https://roadmap.sh/nodejs", + "color": "#FFFFFf", + "backgroundColor": "#4136D6", + "style": { + "fontSize": 17 + }, + "borderColor": "#4136D6", + "oldId": "qXKNK_IsGS8-JgLK-Q9oU" + }, + "zIndex": 999, + "dragging": false, + "positionAbsolute": { + "x": 11.058722960661697, + "y": 2679.3089001088356 + }, + "style": { + "width": 119, + "height": 49 + }, + "focusable": true, + "resizing": false } ], "edges": [ @@ -4645,42 +4965,6 @@ "selected": false, "focusable": true }, - { - "style": { - "strokeDasharray": "0.8 8", - "strokeLinecap": "round", - "strokeWidth": 3.5, - "stroke": "#2b78e4" - }, - "source": "n0q32YhWEIAUwbGXexoqV", - "sourceHandle": "x2", - "target": "CMrss8E2W0eA6DVEqtPjT", - "targetHandle": "w1", - "data": { - "edgeStyle": "dashed" - }, - "id": "rsHJP6q6Jk9PyUqUb-eZ8", - "selected": false, - "focusable": true - }, - { - "style": { - "strokeDasharray": "0.8 8", - "strokeLinecap": "round", - "strokeWidth": 3.5, - "stroke": "#2b78e4" - }, - "source": "n0q32YhWEIAUwbGXexoqV", - "sourceHandle": "x2", - "target": "iUxXq7beg55y76dkwhM13", - "targetHandle": "w1", - "data": { - "edgeStyle": "dashed" - }, - "id": "2oeH1EkVVnO2c_4uwk8No", - "selected": false, - "focusable": true - }, { "style": { "strokeDasharray": "0.8 8", @@ -5616,20 +5900,20 @@ }, { "style": { - "strokeDasharray": "0", + "strokeDasharray": "0.8 8", "strokeLinecap": "round", "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "hwPOGT0-duy3KfI8QaEwF", + "source": "3TE_iYvbklXK0be-5f2M7", "sourceHandle": "z2", - "target": "Cxspmb14_0i1tfw-ZLxEu", + "target": "BBsXxkbbEG-gnbM1xXKrj", "targetHandle": "y1", "data": { - "edgeStyle": "solid" + "edgeStyle": "dashed" }, + "id": "reactflow__edge-3TE_iYvbklXK0be-5f2M7z2-BBsXxkbbEG-gnbM1xXKrjy1", "selected": false, - "id": "reactflow__edge-hwPOGT0-duy3KfI8QaEwFz2-Cxspmb14_0i1tfw-ZLxEuy1", "focusable": true }, { @@ -5639,14 +5923,14 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "SGDf_rbfmFSHlxI-Czzlz", + "source": "OL8I6nOZ8hGGWmtxg_Mv8", "sourceHandle": "z2", - "target": "zNFYAJaSq0YZXL5Rpx1NX", + "target": "P4st_telfCwKLSAU2WsQP", "targetHandle": "y1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-SGDf_rbfmFSHlxI-Czzlzz2-zNFYAJaSq0YZXL5Rpx1NXy1", + "id": "reactflow__edge-OL8I6nOZ8hGGWmtxg_Mv8z2-P4st_telfCwKLSAU2WsQPy1", "selected": false, "focusable": true }, @@ -5657,33 +5941,33 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "SGDf_rbfmFSHlxI-Czzlz", - "sourceHandle": "z2", - "target": "KJRkrFZIihCUBrOf579EU", - "targetHandle": "y2", + "source": "L7AllJfKvClaam3y-u6DP", + "sourceHandle": "w2", + "target": "0moPO23ol33WsjVXSpTGf", + "targetHandle": "x2", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-SGDf_rbfmFSHlxI-Czzlzz2-KJRkrFZIihCUBrOf579EUy2", + "id": "reactflow__edge-L7AllJfKvClaam3y-u6DPw2-0moPO23ol33WsjVXSpTGfx2", "selected": false, "focusable": true }, { "style": { - "strokeDasharray": "0.8 8", + "strokeDasharray": "0", "strokeLinecap": "round", "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "k6rp6Ua9qUEW_DA_fOg5u", + "source": "n0q32YhWEIAUwbGXexoqV", "sourceHandle": "z2", - "target": "-Nsq3Jg3gq02mKcm4u41_", + "target": "VOGKiG2EZVfCBAaa7Df0W", "targetHandle": "y2", "data": { - "edgeStyle": "dashed" + "edgeStyle": "solid" }, - "id": "reactflow__edge-k6rp6Ua9qUEW_DA_fOg5uz2--Nsq3Jg3gq02mKcm4u41_y2", "selected": false, + "id": "reactflow__edge-n0q32YhWEIAUwbGXexoqVz2-VOGKiG2EZVfCBAaa7Df0Wy2", "focusable": true }, { @@ -5693,14 +5977,14 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "3TE_iYvbklXK0be-5f2M7", - "sourceHandle": "z2", - "target": "BBsXxkbbEG-gnbM1xXKrj", - "targetHandle": "y1", + "source": "KMA7NkxFbPoUDtFnGBFnj", + "sourceHandle": "y2", + "target": "mQHpSyMR4Rra4mqAslgiS", + "targetHandle": "z2", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-3TE_iYvbklXK0be-5f2M7z2-BBsXxkbbEG-gnbM1xXKrjy1", + "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjy2-mQHpSyMR4Rra4mqAslgiSz2", "selected": false, "focusable": true }, @@ -5711,51 +5995,52 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "OL8I6nOZ8hGGWmtxg_Mv8", - "sourceHandle": "z2", - "target": "P4st_telfCwKLSAU2WsQP", - "targetHandle": "y1", + "source": "KMA7NkxFbPoUDtFnGBFnj", + "sourceHandle": "y2", + "target": "GJctl0tVXe4B70s35RkLT", + "targetHandle": "z1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-OL8I6nOZ8hGGWmtxg_Mv8z2-P4st_telfCwKLSAU2WsQPy1", + "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjy2-GJctl0tVXe4B70s35RkLTz1", "selected": false, "focusable": true }, { "style": { - "strokeDasharray": "0", + "strokeDasharray": "0.8 8", "strokeLinecap": "round", "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "Cxspmb14_0i1tfw-ZLxEu", + "source": "KMA7NkxFbPoUDtFnGBFnj", "sourceHandle": "y2", - "target": "L7AllJfKvClaam3y-u6DP", + "target": "2MRvAK9G9RGM_auWytcKh", "targetHandle": "z1", "data": { - "edgeStyle": "solid" + "edgeStyle": "dashed" }, - "id": "reactflow__edge-Cxspmb14_0i1tfw-ZLxEuy2-L7AllJfKvClaam3y-u6DPz1", + "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjy2-2MRvAK9G9RGM_auWytcKhz1", "selected": false, "focusable": true }, { "style": { - "strokeDasharray": "0.8 8", + "strokeDasharray": "0", "strokeLinecap": "round", "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "L7AllJfKvClaam3y-u6DP", - "sourceHandle": "w2", - "target": "0moPO23ol33WsjVXSpTGf", - "targetHandle": "x2", + "source": "KMA7NkxFbPoUDtFnGBFnj", + "sourceHandle": "x2", + "target": "0vLaVNJaJSHZ_bHli6Qzs", + "targetHandle": "w1", "data": { - "edgeStyle": "dashed" + "edgeStyle": "solid" }, - "id": "reactflow__edge-L7AllJfKvClaam3y-u6DPw2-0moPO23ol33WsjVXSpTGfx2", + "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjx2-0vLaVNJaJSHZ_bHli6Qzsw1", "selected": false, + "type": "simplebezier", "focusable": true }, { @@ -5765,16 +6050,15 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "Tqv7Lj8TklDTrZH5_fmUf", - "sourceHandle": "z2", - "target": "Tqv7Lj8TklDTrZH5_fmUf", - "targetHandle": "z1", + "source": "Cxspmb14_0i1tfw-ZLxEu", + "sourceHandle": "x2", + "target": "L7AllJfKvClaam3y-u6DP", + "targetHandle": "z2", "data": { "edgeStyle": "solid" }, - "selected": false, - "focusable": true, - "id": "reactflow__edge-Tqv7Lj8TklDTrZH5_fmUfz2-Tqv7Lj8TklDTrZH5_fmUfz1" + "id": "reactflow__edge-Cxspmb14_0i1tfw-ZLxEux2-L7AllJfKvClaam3y-u6DPz2", + "selected": false }, { "style": { @@ -5783,17 +6067,16 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "ruoFa3M4bUE3Dg6GXSiUI", + "source": "hwPOGT0-duy3KfI8QaEwF", "sourceHandle": "z2", - "target": "PoM77O2OtxPELxfrW1wtl", + "target": "Cxspmb14_0i1tfw-ZLxEu", "targetHandle": "w1", "data": { "edgeStyle": "solid" }, "selected": false, - "type": "step", - "id": "reactflow__edge-ruoFa3M4bUE3Dg6GXSiUIz2-PoM77O2OtxPELxfrW1wtlw1", - "focusable": true + "focusable": true, + "id": "reactflow__edge-hwPOGT0-duy3KfI8QaEwFz2-Cxspmb14_0i1tfw-ZLxEuw1" }, { "style": { @@ -5802,16 +6085,15 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "PoM77O2OtxPELxfrW1wtl", - "sourceHandle": "x2", - "target": "0-AijuwIdYdGuiNnne4Yg", - "targetHandle": "w1", + "source": "Cxspmb14_0i1tfw-ZLxEu", + "sourceHandle": "z2", + "target": "SGDf_rbfmFSHlxI-Czzlz", + "targetHandle": "y1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtlx2-0-AijuwIdYdGuiNnne4Ygw1", - "selected": false, - "focusable": true + "id": "reactflow__edge-Cxspmb14_0i1tfw-ZLxEuz2-SGDf_rbfmFSHlxI-Czzlzy1", + "selected": false }, { "style": { @@ -5820,52 +6102,49 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "PoM77O2OtxPELxfrW1wtl", - "sourceHandle": "x2", - "target": "Tqv7Lj8TklDTrZH5_fmUf", - "targetHandle": "w1", + "source": "Cxspmb14_0i1tfw-ZLxEu", + "sourceHandle": "z2", + "target": "k6rp6Ua9qUEW_DA_fOg5u", + "targetHandle": "y1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtlx2-Tqv7Lj8TklDTrZH5_fmUfw1", - "selected": false, - "focusable": true + "id": "reactflow__edge-Cxspmb14_0i1tfw-ZLxEuz2-k6rp6Ua9qUEW_DA_fOg5uy1", + "selected": false }, { "style": { - "strokeDasharray": "0", + "strokeDasharray": "0.8 8", "strokeLinecap": "round", "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "PoM77O2OtxPELxfrW1wtl", + "source": "Cxspmb14_0i1tfw-ZLxEu", "sourceHandle": "z2", - "target": "n0q32YhWEIAUwbGXexoqV", - "targetHandle": "w2", + "target": "3TE_iYvbklXK0be-5f2M7", + "targetHandle": "y1", "data": { - "edgeStyle": "solid" + "edgeStyle": "dashed" }, - "selected": false, - "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtlz2-n0q32YhWEIAUwbGXexoqVw2", - "focusable": true + "id": "reactflow__edge-Cxspmb14_0i1tfw-ZLxEuz2-3TE_iYvbklXK0be-5f2M7y1", + "selected": false }, { "style": { - "strokeDasharray": "0", + "strokeDasharray": "0.8 8", "strokeLinecap": "round", "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "n0q32YhWEIAUwbGXexoqV", + "source": "Cxspmb14_0i1tfw-ZLxEu", "sourceHandle": "z2", - "target": "VOGKiG2EZVfCBAaa7Df0W", - "targetHandle": "y2", + "target": "OL8I6nOZ8hGGWmtxg_Mv8", + "targetHandle": "y1", "data": { - "edgeStyle": "solid" + "edgeStyle": "dashed" }, - "selected": false, - "id": "reactflow__edge-n0q32YhWEIAUwbGXexoqVz2-VOGKiG2EZVfCBAaa7Df0Wy2", - "focusable": true + "id": "reactflow__edge-Cxspmb14_0i1tfw-ZLxEuz2-OL8I6nOZ8hGGWmtxg_Mv8y1", + "selected": false }, { "style": { @@ -5874,16 +6153,33 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "VOGKiG2EZVfCBAaa7Df0W", - "sourceHandle": "w2", - "target": "2wLKhD8OhVsTR-Q7WPwbj", - "targetHandle": "x2", + "source": "SGDf_rbfmFSHlxI-Czzlz", + "sourceHandle": "z2", + "target": "wA2fSYsbBYU02VJXAvUz8", + "targetHandle": "y1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-SGDf_rbfmFSHlxI-Czzlzz2-wA2fSYsbBYU02VJXAvUz8y1", + "selected": false + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "SGDf_rbfmFSHlxI-Czzlz", + "sourceHandle": "z2", + "target": "KJRkrFZIihCUBrOf579EU", + "targetHandle": "y1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-VOGKiG2EZVfCBAaa7Df0Ww2-2wLKhD8OhVsTR-Q7WPwbjx2", + "id": "reactflow__edge-SGDf_rbfmFSHlxI-Czzlzz2-KJRkrFZIihCUBrOf579EUy1", "selected": false, - "focusable": true + "type": "straight" }, { "style": { @@ -5892,16 +6188,15 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "VOGKiG2EZVfCBAaa7Df0W", + "source": "L7AllJfKvClaam3y-u6DP", "sourceHandle": "x2", - "target": "KMA7NkxFbPoUDtFnGBFnj", - "targetHandle": "w1", + "target": "PoM77O2OtxPELxfrW1wtl", + "targetHandle": "w2", "data": { "edgeStyle": "solid" }, - "id": "reactflow__edge-VOGKiG2EZVfCBAaa7Df0Wx2-KMA7NkxFbPoUDtFnGBFnjw1", - "selected": false, - "focusable": true + "id": "reactflow__edge-L7AllJfKvClaam3y-u6DPx2-PoM77O2OtxPELxfrW1wtlw2", + "selected": false }, { "style": { @@ -5910,16 +6205,15 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "KMA7NkxFbPoUDtFnGBFnj", - "sourceHandle": "y2", - "target": "mQHpSyMR4Rra4mqAslgiS", - "targetHandle": "z2", + "source": "PoM77O2OtxPELxfrW1wtl", + "sourceHandle": "x2", + "target": "mB3hZvAfRr6kCEbF6t-yz", + "targetHandle": "w1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjy2-mQHpSyMR4Rra4mqAslgiSz2", - "selected": false, - "focusable": true + "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtlx2-mB3hZvAfRr6kCEbF6t-yzw1", + "selected": false }, { "style": { @@ -5928,16 +6222,33 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "KMA7NkxFbPoUDtFnGBFnj", + "source": "PoM77O2OtxPELxfrW1wtl", "sourceHandle": "y2", - "target": "GJctl0tVXe4B70s35RkLT", + "target": "3_sJHKTogkDoCjR518-OL", "targetHandle": "z1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjy2-GJctl0tVXe4B70s35RkLTz1", "selected": false, - "focusable": true + "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtly2-3_sJHKTogkDoCjR518-OLz1" + }, + { + "style": { + "strokeDasharray": "0", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PoM77O2OtxPELxfrW1wtl", + "sourceHandle": "z2", + "target": "n0q32YhWEIAUwbGXexoqV", + "targetHandle": "y1", + "data": { + "edgeStyle": "solid" + }, + "selected": false, + "focusable": true, + "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtlz2-n0q32YhWEIAUwbGXexoqVy1" }, { "style": { @@ -5946,16 +6257,67 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "KMA7NkxFbPoUDtFnGBFnj", - "sourceHandle": "y2", - "target": "2MRvAK9G9RGM_auWytcKh", - "targetHandle": "z1", + "source": "SGDf_rbfmFSHlxI-Czzlz", + "sourceHandle": "z2", + "target": "zNFYAJaSq0YZXL5Rpx1NX", + "targetHandle": "y1", "data": { "edgeStyle": "dashed" }, - "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjy2-2MRvAK9G9RGM_auWytcKhz1", + "id": "reactflow__edge-SGDf_rbfmFSHlxI-Czzlzz2-zNFYAJaSq0YZXL5Rpx1NXy1", "selected": false, - "focusable": true + "type": "straight" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "n0q32YhWEIAUwbGXexoqV", + "sourceHandle": "w2", + "target": "io0RHJWIcVxDhcYkV9d38", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-n0q32YhWEIAUwbGXexoqVw2-io0RHJWIcVxDhcYkV9d38x1", + "selected": false + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "n0q32YhWEIAUwbGXexoqV", + "sourceHandle": "x2", + "target": "XWJxV42Dpu2D3xDK10Pn3", + "targetHandle": "w2", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-n0q32YhWEIAUwbGXexoqVx2-XWJxV42Dpu2D3xDK10Pn3w2", + "selected": false + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "VOGKiG2EZVfCBAaa7Df0W", + "sourceHandle": "w2", + "target": "xmRv6-L45m5MDpHmdHFCL", + "targetHandle": "x1", + "data": { + "edgeStyle": "dashed" + }, + "id": "reactflow__edge-VOGKiG2EZVfCBAaa7Df0Ww2-xmRv6-L45m5MDpHmdHFCLx1", + "selected": false }, { "style": { @@ -5964,17 +6326,34 @@ "strokeWidth": 3.5, "stroke": "#2b78e4" }, - "source": "KMA7NkxFbPoUDtFnGBFnj", + "source": "VOGKiG2EZVfCBAaa7Df0W", "sourceHandle": "x2", - "target": "0vLaVNJaJSHZ_bHli6Qzs", - "targetHandle": "w1", + "target": "KMA7NkxFbPoUDtFnGBFnj", + "targetHandle": "z1", "data": { "edgeStyle": "solid" }, - "id": "reactflow__edge-KMA7NkxFbPoUDtFnGBFnjx2-0vLaVNJaJSHZ_bHli6Qzsw1", "selected": false, - "type": "step", - "focusable": true + "focusable": true, + "id": "reactflow__edge-VOGKiG2EZVfCBAaa7Df0Wx2-KMA7NkxFbPoUDtFnGBFnjz1", + "type": "step" + }, + { + "style": { + "strokeDasharray": "0.8 8", + "strokeLinecap": "round", + "strokeWidth": 3.5, + "stroke": "#2b78e4" + }, + "source": "PoM77O2OtxPELxfrW1wtl", + "sourceHandle": "y2", + "target": "raoa-75p_DyBAycvy3yVv", + "targetHandle": "z1", + "data": { + "edgeStyle": "dashed" + }, + "selected": false, + "id": "reactflow__edge-PoM77O2OtxPELxfrW1wtly2-raoa-75p_DyBAycvy3yVvz1" } ] } \ No newline at end of file diff --git a/src/data/roadmaps/frontend/frontend.md b/src/data/roadmaps/frontend/frontend.md index c610b7872..1a5bb51f5 100644 --- a/src/data/roadmaps/frontend/frontend.md +++ b/src/data/roadmaps/frontend/frontend.md @@ -8,7 +8,6 @@ briefDescription: 'Step by step guide to becoming a frontend developer in 2024' title: 'Frontend Developer' description: 'Step by step guide to becoming a modern frontend developer in 2024' hasTopics: true -isForkable: true tnsBannerLink: 'https://thenewstack.io?utm_source=roadmap.sh&utm_medium=Referral&utm_campaign=Alert' question: title: 'What is Frontend Development?' @@ -19,7 +18,7 @@ question: As a front-end developer, you'll be responsible for creating the user interface of a website, to ensure it looks good and is easy to use, with great focus on design principles and user experience. You'll be working closely with designers, back-end developers, and project managers to make sure the final product meets the client's needs and provides the best possible experience for the end-users. dimensions: width: 968 - height: 3100 + height: 2775 schema: headline: 'Frontend Developer Roadmap: What is Frontend Development?' description: 'Learn what Frontend Development is, what frontend developers do and how to become a modern frontend developer using our community-driven roadmap.' diff --git a/src/data/roadmaps/frontend/migration-mapping.json b/src/data/roadmaps/frontend/migration-mapping.json new file mode 100644 index 000000000..57595e208 --- /dev/null +++ b/src/data/roadmaps/frontend/migration-mapping.json @@ -0,0 +1,115 @@ +{ + "internet": "VlNNwIEDWqQXtqkHWJYzC", + "internet:how-does-the-internet-work": "yCnn-NfSxIybUQ2iTuUGq", + "internet:what-is-http": "R12sArWVpbIs_PHxBqVaR", + "internet:what-is-domain-name": "ZhSuu2VArnzPDp6dPQQSC", + "internet:what-is-hosting": "aqMaEY8gkKMikiqleV5EP", + "internet:dns-and-how-it-works": "hkxw9jPGYphmjhTjw8766", + "internet:browsers-and-how-they-work": "P82WFaTPgQEPNp5IIuZ1Y", + "html": "yWG2VUkaF5IJVVut6AiSy", + "html:learn-the-basics": "PCirR2QiFYO89Fm-Ev3o1", + "html:writing-semantic-html": "z8-556o-PaHXjlytrawaF", + "html:forms-and-validations": "V5zucKEHnIPPjwHqsMPHF", + "html:accessibility": "iJIqi7ngpGHWAqtgdjgxB", + "html:seo-basics": "mH_qff8R7R6eLQ1tPHLgG", + "css": "ZhJhf1M2OphYbEmduFq-9", + "css:learn-the-basics": "YFjzPKWDwzrgk2HUX952L", + "css:making-layouts": "dXeYVMXv-3MRQ1ovOUuJW", + "css:responsive-design-and-media-queries": "TKtWmArHn7elXRJdG6lDQ", + "javascript": "ODcfFEorkfJNupoQygM53", + "javascript:syntax-and-basic-constructs": "wQSjQqwKHfn5RGPk34BWI", + "javascript:learn-dom-manipulation": "0MAogsAID9R04R5TTO2Qa", + "javascript:learn-fetch-api-ajax-xhr": "A4brX0efjZ0FFPTB4r6U0", + "version-control-systems": "NIY7c4TQEEHx0hATu-k5C", + "version-control-systems:basic-usage-of-git": "R_I4SGYqLk5zze5I1zS_E", + "repo-hosting-services": "MXnFhZlNB1zTsBFDyni9H", + "repo-hosting-services:github": "qmTVMJDsEhNIkiwE_UTYu", + "repo-hosting-services:gitlab": "zIoSJMX3cuzCgDYHjgbEh", + "repo-hosting-services:bitbucket": "DILBiQp7WWgSZ5hhtDW6A", + "pick-a-framework:react-js": "tG5v3O4lNIFc2uCnacPak", + "pick-a-framework:vue-js": "ERAdwL1G9M1bnx-fOm5ZA", + "pick-a-framework:angular": "-bHFIiXnoUQSov64WI9yo", + "pick-a-framework:svelte": "ZR-qZ2Lcbu3FtqaMd3wM4", + "pick-a-framework:solid-js": "DxOSKnqAjZOPP-dq_U7oP", + "pick-a-framework:qwik": "N5DCb6bDfgUnSdHPLYY4g", + "pick-a-framework": "eXezX7CVNyC1RuyU_I4yP", + "package-managers": "IqvS1V-98cxko3e9sBQgP", + "package-managers:npm": "ib_FHinhrw8VuSet-xMF7", + "package-managers:pnpm": "SLxA5qJFp_28TRzr1BjxZ", + "package-managers:yarn": "yrq3nOwFREzl-9EKnpU-e", + "modern-css": "XDTD8el6OwuQ55wC-X4iV", + "css-frameworks:js-first:tailwind-css": "eghnfG4p7i-EDWfp3CQXC", + "css-architecture": "nPg_YWpMJtlhU2t2UD_6B", + "css-architecture:bem": "dRDmS072xeNLX7p_X565w", + "css-preprocessors": "UTW1pP59dUehuf0zeHXqL", + "css-preprocessors:sass": "kukEE5rMSPa4NeNjx21kt", + "css-preprocessors:postcss": "9WlPENh9g1xOv-zA64Tfg", + "build-tools": "i9z0stM4uKu27Cz6NIgNX", + "build-tools:module-bundlers": "hkSc_1x09m7-7BO7WzlDT", + "build-tools:linters-formatters": "9VcGfDBBD8YcKatj4VcH1", + "build-tools:linters-formatters:prettier": "zbkpu_gvQ4mgCiZKzS1xv", + "build-tools:linters-formatters:eslint": "NFjsI712_qP0IOmjuqXar", + "build-tools:module-bundlers:vite": "0Awx3zEI5_gYEIrD7IVX6", + "build-tools:module-bundlers:esbuild": "4W7UXfdKIUsm1bUrjdTVT", + "build-tools:module-bundlers:webpack": "twufEtHgxcRUWAUQ9bXus", + "build-tools:module-bundlers:rollup": "sCjErk7rfWAUvhl8Kfm3n", + "build-tools:module-bundlers:parcel": "NS-hwaWa5ebSmNNRoxFDp", + "testing-your-apps": "igg4_hb3XE3vuvY8ufV-4", + "testing-your-apps:vitest": "hVQ89f6G0LXEgHIOKHDYq", + "testing-your-apps:jest": "g5itUjgRXd9vs9ujHezFl", + "testing-your-apps:playwright": "jramLk8FGuaEH4YpHIyZT", + "testing-your-apps:cypress": "DaynCz5RR26gjT6N6gTDL", + "auth-strategies": "U5mD5FmVx7VWeKxDpQxB5", + "web-security-knowledge": "RDWbG3Iui6IPgp0shvXtg", + "web-security-knowledge:cors": "AfH2zCbqzw0Nisg1yyISS", + "web-security-knowledge:https": "uum7vOhOUR38vLuGZy8Oa", + "web-security-knowledge:content-security-policy": "rmcm0CZbtNVC9LZ14-H6h", + "web-security-knowledge:owasp-security-risks": "JanR7I_lNnUCXhCMGLdn-", + "web-components": "ruoFa3M4bUE3Dg6GXSiUI", + "web-components:html-templates": "Hk8AVonOd693_y1sykPqd", + "web-components:custom-elements": "VxiQPgcYDFAT6WgSRWpIA", + "web-components:shadow-dom": "-SpsNeOZBkQfDA-rwzgPg", + "server-side-rendering": "Cxspmb14_0i1tfw-ZLxEu", + "type-checkers": "hwPOGT0-duy3KfI8QaEwF", + "type-checkers:typescript": "0asdhvwBH3gn-ercktV7A", + "server-side-rendering:react-js": "SGDf_rbfmFSHlxI-Czzlz", + "server-side-rendering:angular": "k6rp6Ua9qUEW_DA_fOg5u", + "server-side-rendering:vue-js": "3TE_iYvbklXK0be-5f2M7", + "server-side-rendering:svelte": "OL8I6nOZ8hGGWmtxg_Mv8", + "server-side-rendering:react-js:next-js": "zNFYAJaSq0YZXL5Rpx1NX", + "server-side-rendering:react-js:remix": "KJRkrFZIihCUBrOf579EU", + "server-side-rendering:vue-js:nuxt-js": "BBsXxkbbEG-gnbM1xXKrj", + "server-side-rendering:svelte:svelte-kit": "P4st_telfCwKLSAU2WsQP", + "graphql": "L7AllJfKvClaam3y-u6DP", + "graphql:apollo": "5eUbDdOTOfaOhUlZAmmXW", + "graphql:relay-modern": "0moPO23ol33WsjVXSpTGf", + "static-site-generators": "n0q32YhWEIAUwbGXexoqV", + "progressive-web-apps": "PoM77O2OtxPELxfrW1wtl", + "static-site-generators:vuepress": "CMrss8E2W0eA6DVEqtPjT", + "static-site-generators:astro": "iUxXq7beg55y76dkwhM13", + "static-site-generators:next-js": "V70884VcuXkfrfHyLGtUg", + "static-site-generators:eleventy": "io0RHJWIcVxDhcYkV9d38", + "static-site-generators:nuxt-js": "XWJxV42Dpu2D3xDK10Pn3", + "progressive-web-apps:prpl-pattern": "-DsETM9xLgHyGZthptj1Y", + "progressive-web-apps:rail-model": "xD5WfEP7Ez0oi3890UgmH", + "progressive-web-apps:performance-metrics": "X0Y3-IpPiFUCsNDK4RFxw", + "progressive-web-apps:lighthouse": "RIhHMHLsLLPhNl05Q9aBf", + "progressive-web-apps:browser-devtools": "3_sJHKTogkDoCjR518-OL", + "progressive-web-apps:storage": "raoa-75p_DyBAycvy3yVv", + "progressive-web-apps:web-sockets": "NDJR8UCoa31v45TBFP7we", + "progressive-web-apps:server-sent-events": "doPe92aUpo-8KWhi45lWK", + "progressive-web-apps:service-workers": "TldWoXiqKxM4X3JONKAR7", + "progressive-web-apps:location": "YbGGYoKJEx29PlvopUBiM", + "progressive-web-apps:notifications": "6AlcArOiJMhHXguAosDzn", + "progressive-web-apps:device-orientation": "Fd0hQh1DleM0gMzCpGou4", + "progressive-web-apps:payments": "MAM1nuVk-h4AvTUk4nvmj", + "progressive-web-apps:credentials": "opu2bAsmdWHqWqtsCscLC", + "desktop-applications:electron": "mQHpSyMR4Rra4mqAslgiS", + "desktop-applications:tauri": "GJctl0tVXe4B70s35RkLT", + "desktop-applications:flutter": "2MRvAK9G9RGM_auWytcKh", + "desktop-applications": "KMA7NkxFbPoUDtFnGBFnj", + "mobile-applications": "VOGKiG2EZVfCBAaa7Df0W", + "mobile-applications:react-native": "dsTegXTyupjS8iU6I7Xiv", + "mobile-applications:flutter": "dIQXjFEUAJAGxxfAYceHU", + "mobile-applications:ionic": "xmRv6-L45m5MDpHmdHFCL" +} \ No newline at end of file