diff --git a/bin/content-migrator.cjs b/bin/content-migrator.cjs
deleted file mode 100644
index 51b048ea8..000000000
--- a/bin/content-migrator.cjs
+++ /dev/null
@@ -1,120 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-
-// 1 - Renames each readme.md to index.md
-// e.g.
-// before => roadmaps/frontend/content/internet/readme.md
-// after => roadmaps/frontend/content/internet/index.md
-//
-// 2 - Replaces the resource tags with short codes
-// e.g.
-// Free Content
-// W3Schools — Learn CSS
-//
-// {% resources %}
-// {% Blog "https://www.w3schools.com/css/", "W3Schools — Learn CSS" %}
-// {% endresources %}
-//
-// 3 - Removes the index.md file from within the content dir i.e. to avoid `/frontend` permalink for `/frontend/index.md`
-// Because we have the `/frontend` permalink serving the actual roadmap and not any content
-const roadmapsDir = path.join(__dirname, '../src/roadmaps');
-const roadmapDirs = fs.readdirSync(roadmapsDir);
-
-roadmapDirs.forEach((roadmapDirName) => {
- const roadmapDirPath = path.join(roadmapsDir, roadmapDirName);
- const contentDirPath = path.join(roadmapDirPath, 'content');
-
- console.log(`[Start] == Migrating ${roadmapDirName}`);
-
- if (!fs.existsSync(contentDirPath)) {
- console.log(`Content dir not found ${roadmapDirName}/content`);
- return;
- }
-
- function handleContentDir(parentDirPath) {
- const dirChildrenNames = fs.readdirSync(parentDirPath);
-
- dirChildrenNames.forEach((dirChildName) => {
- let dirChildPath = path.join(parentDirPath, dirChildName);
-
- // If directory, handle the children for it
- if (fs.lstatSync(dirChildPath).isDirectory()) {
- handleContentDir(dirChildPath);
- }
-
- //////////////////////////////////////////////////////////
- // 1 - Rename directories to remove the numbers
- //////////////////////////////////////////////////////////
- // let newDirChildPath = path.join(
- // path.dirname(dirChildPath),
- // path.basename(dirChildPath).replace(/^\d+-/, '')
- // );
- // fs.renameSync(dirChildPath, dirChildPath);
-
- //////////////////////////////////////////////////////////
- // 1 - Rename readme.md to index.md
- //////////////////////////////////////////////////////////
- if (dirChildPath.endsWith('readme.md')) {
- const newFilePath = path.join(path.dirname(dirChildPath), `index.md`);
-
- fs.renameSync(dirChildPath, newFilePath);
- dirChildPath = newFilePath;
- }
-
- //////////////////////////////////////////////////////////
- // 2 - Replace the resource tags with short codes
- //////////////////////////////////////////////////////////
- if (fs.lstatSync(dirChildPath).isFile()) {
- const fileContent = fs.readFileSync(dirChildPath, 'utf-8');
-
- let resourceLinks = [...fileContent.matchAll(//g)].map(([fullMatch]) => {
- // const resourceType = fullMatch.match(/badgeText=["'](.+?)["']/)[1];
- const link = fullMatch.match(/href=["'](.+?)["']/)[1];
- const text = fullMatch.match(/>([^<]+)<\/BadgeLink>$/)[1];
-
- return `- [${text.replaceAll(/['"]/g, '')}](${link})`;
- });
-
- //////////////////////////////////////////////////////////////////////
- // Replace the dedicated roadmap tag with the short code
- //////////////////////////////////////////////////////////////////////
- // prettier-ignore
- const dedicatedRegex = //;
- const dedicatedMatches = fileContent.match(dedicatedRegex);
-
- if (dedicatedMatches) {
- const [, href, title] = dedicatedMatches;
-
- resourceLinks = [`- [Visit Dedicated ${title}](${href})`, ...resourceLinks];
- }
-
- resourceLinks = ['Visit the following resources to learn more:\n', ...resourceLinks];
- resourceLinks = resourceLinks.join('\n');
-
- let newFileContent = fileContent.replace(
- /([^<\/BadgeLink>]|\S|\s)+<\/BadgeLink>/,
- resourceLinks
- );
-
- // In case if the resources were not wrapped in
- newFileContent = newFileContent.replace(
- /]|\S|\s)+<\/BadgeLink>/,
- resourceLinks
- );
-
- fs.writeFileSync(dirChildPath, newFileContent);
- }
- });
- }
-
- handleContentDir(contentDirPath);
-
- // 3 - Removes the index.md file from within the content dir i.e. to avoid `/frontend` permalink for `/frontend/index.md`
- // Because we have the `/frontend` permalink serving the actual roadmap and not any content
- const contentRootFile = path.join(contentDirPath, '/index.md');
- if (fs.existsSync(contentRootFile)) {
- fs.rmSync(contentRootFile);
- }
-
- console.log(` == Migrated ${roadmapDirName}`);
-});
diff --git a/bin/guide-migrator.cjs b/bin/guide-migrator.cjs
deleted file mode 100644
index 32b2d913e..000000000
--- a/bin/guide-migrator.cjs
+++ /dev/null
@@ -1,83 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const yaml = require('json-to-pretty-yaml');
-
-const contentDirPath = path.join(__dirname, './developer-roadmap/content');
-const guides = require('./developer-roadmap/content/guides.json');
-const authors = require('./developer-roadmap/content/authors.json');
-
-const guideImagesDirPath = path.join(__dirname, './developer-roadmap/public/guides');
-const newGuideImagesDirPath = path.join(__dirname, '../public/guides');
-
-// Remove the guide images directory
-if (fs.existsSync(newGuideImagesDirPath)) {
- fs.rmSync(newGuideImagesDirPath, { recursive: true });
-}
-
-fs.cpSync(guideImagesDirPath, newGuideImagesDirPath, { recursive: true });
-
-// Remove the old guides directory
-const newGuidesDirPath = path.join(__dirname, '../src/guides');
-if (fs.existsSync(newGuidesDirPath)) {
- fs.rmSync(newGuidesDirPath, { recursive: true });
-}
-
-fs.mkdirSync(newGuidesDirPath);
-
-guides.forEach((guide) => {
- const { id: guideId } = guide;
-
- const originalGuidePath = path.join(contentDirPath, 'guides', `${guideId}.md`);
- const newGuidePath = path.join(__dirname, `../src/guides/${guideId}.md`);
-
- const guideWithoutFrontmatter = fs.readFileSync(originalGuidePath, 'utf8');
- fs.copyFileSync(originalGuidePath, newGuidePath);
-
- const guideAuthor = authors.find((author) => author.username === guide.authorUsername);
-
- const guideFrontMatter = yaml
- .stringify({
- title: guide.title,
- description: guide.description,
- author: {
- name: guideAuthor.name,
- url: `https://twitter.com/${guideAuthor.twitter}`,
- imageUrl: `${guideAuthor.picture}`,
- },
- seo: {
- title: `${guide.title} - roadmap.sh`,
- description: guide.description,
- },
- isNew: guide.isNew,
- type: guide.type,
- date: guide.createdAt.replace(/T.*/, ''),
- sitemap: {
- priority: 0.7,
- changefreq: 'weekly',
- },
- tags: ['guide', `${guide.type}-guide`, `guide-sitemap`],
- })
- .replace(/date: "(.+?)"/, 'date: $1');
-
- const guideWithUpdatedUrls = guideWithoutFrontmatter
- .replace(/\[\!\[\]\((.+?\.png)\)\]\((.+?\.png)\)/g, '[![]($1)]($2)')
- .replace(/\[\!\[\]\((.+?\.svg)\)\]\((.+?\.svg)\)/g, '[![]($1)]($2)')
- .replace(/\/http/g, 'http')
- .replace(/]\(\/guides\/(.+?)\.png\)/g, '](/guides/$1.png)')
- .replace(//g, '');
-
- const guideWithFrontmatter = `---\n${guideFrontMatter}---\n\n${guideWithUpdatedUrls}`;
-
- console.log(`Writing guide ${guideId} to disk`);
- fs.writeFileSync(newGuidePath, guideWithFrontmatter);
-});
-
-const oldAuthorAssetsPath = path.join(__dirname, 'developer-roadmap/public/authors');
-const newAuthorAssetsPath = path.join(__dirname, '../public/authors');
-
-if (fs.existsSync(newAuthorAssetsPath)) {
- fs.rmSync(newAuthorAssetsPath, { recursive: true });
-}
-
-fs.cpSync(oldAuthorAssetsPath, newAuthorAssetsPath, { recursive: true });
diff --git a/bin/roadmap-metas.cjs b/bin/roadmap-metas.cjs
deleted file mode 100644
index cc4be9f4a..000000000
--- a/bin/roadmap-metas.cjs
+++ /dev/null
@@ -1,116 +0,0 @@
-module.exports = {
- angular: {
- dimensions: {
- width: 968,
- height: 2277.8,
- },
- },
- 'aspnet-core': {
- dimensions: {
- width: 968,
- height: 2773.45,
- },
- },
- backend: {
- dimensions: {
- width: 968,
- height: 2840.4,
- },
- },
- blockchain: {
- dimensions: {
- width: 968,
- height: 2173.87,
- },
- },
- 'computer-science': {
- dimensions: {
- width: 968,
- height: 3009.05,
- },
- },
- 'design-system': {
- dimensions: {
- width: 968,
- height: 2309.7,
- },
- },
- devops: {
- dimensions: {
- width: 968,
- height: 2527.46,
- },
- },
- flutter: {
- dimensions: {
- width: 968,
- height: 2042.2,
- },
- },
- frontend: {
- dimensions: {
- width: 968,
- height: 2734.48,
- },
- },
- golang: {
- dimensions: {
- width: 968,
- height: 1495.21,
- },
- },
- java: {
- dimensions: {
- width: 968,
- height: 1167.29,
- },
- },
- javascript: {
- dimensions: {
- width: 968,
- height: 2438.9,
- },
- },
- nodejs: {
- dimensions: {
- width: 968,
- height: 2474.06,
- },
- },
- python: {
- dimensions: {
- width: 992,
- height: 1259.03,
- },
- },
- qa: {
- dimensions: {
- width: 968,
- height: 2107.75,
- },
- },
- react: {
- dimensions: {
- width: 968,
- height: 1570.26,
- },
- },
- 'software-architect': {
- dimensions: {
- width: 968,
- height: 1882.18,
- },
- },
- 'software-design-architecture': {
- dimensions: {
- width: 968,
- height: 1764.66,
- },
- },
- vue: {
- dimensions: {
- width: 968,
- height: 1657.07,
- },
- },
-};
diff --git a/bin/roadmap-migrator.cjs b/bin/roadmap-migrator.cjs
deleted file mode 100644
index feaef8cc9..000000000
--- a/bin/roadmap-migrator.cjs
+++ /dev/null
@@ -1,132 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const yaml = require('json-to-pretty-yaml');
-const roadmapMetas = require('./roadmap-metas.cjs');
-
-const oldAssetsPath = path.join(__dirname, 'developer-roadmap/public');
-const newAssetsPath = path.join(__dirname, '../public/');
-
-// Create JSONs dir
-const newJsonsPath = path.join(newAssetsPath, 'jsons');
-if (fs.existsSync(newJsonsPath)) {
- fs.rmSync(newJsonsPath, { recursive: true });
-}
-
-fs.mkdirSync(newJsonsPath);
-
-// Create PDFs dir
-const newPdfsPath = path.join(newAssetsPath, 'pdfs');
-if (fs.existsSync(newPdfsPath)) {
- fs.rmSync(newPdfsPath, { recursive: true });
-}
-
-fs.mkdirSync(newPdfsPath);
-
-const oldRoadmapsDirPath = path.join(__dirname, 'developer-roadmap/content/roadmaps');
-const newRoadmapsDirPath = path.join(__dirname, '../src/roadmaps');
-
-if (fs.existsSync(newRoadmapsDirPath)) {
- fs.rmSync(newRoadmapsDirPath, { recursive: true });
-}
-
-fs.mkdirSync(newRoadmapsDirPath);
-
-const oldRoadmaps = fs
- .readdirSync(oldRoadmapsDirPath)
- .map((roadmapDirName) => path.join(oldRoadmapsDirPath, roadmapDirName));
-
-const orderInfo = {};
-const typeCounter = {
- role: 1,
- tool: 1,
-};
-
-// Calculate the sorting information for the roadmaps
-oldRoadmaps.forEach((oldRoadmapPath) => {
- const roadmapId = path.basename(oldRoadmapPath).replace(/\d+-/g, '').toLowerCase();
- const oldRoadmapMeta = require(path.join(oldRoadmapPath, 'meta.json'));
-
- orderInfo[roadmapId] = typeCounter[oldRoadmapMeta.type];
- typeCounter[oldRoadmapMeta.type] += 1;
-});
-
-// Iterate and create new roadmaps
-oldRoadmaps.forEach((oldRoadmapPath) => {
- const roadmapId = path.basename(oldRoadmapPath).replace(/\d+-/g, '').toLowerCase();
-
- const metaToMerge = roadmapMetas[roadmapId] ?? {};
- const oldRoadmapMeta = require(path.join(oldRoadmapPath, 'meta.json'));
- const isTextual = oldRoadmapMeta?.landingPath?.endsWith('.md');
-
- const hasContentDir = fs.existsSync(path.join(oldRoadmapPath, 'content'));
-
- const roadmapFileContent = isTextual
- ? fs.readFileSync(path.join(oldRoadmapPath, oldRoadmapMeta.landingPath), 'utf8')
- : '';
-
- const roadmapFileContentWithUpdatedUrls = roadmapFileContent
- .replace(/\[\!\[\]\((.+?\.png)\)\]\((.+?\.png)\)/g, '[![](/assets$1)](/assets$2)')
- .replace(/\[\!\[\]\((.+?\.svg)\)\]\((.+?\.svg)\)/g, '[![](/assets$1)](/assets$2)')
- .replace(/\[\!\[\]\((.+?\.svg)\)\]\((.+?\.png)\)/g, '[![](/assets$1)](/assets$2)')
- .replace(/assetshttp\//g, 'http')
- .replace(/assetshttps:\/\//g, 'https://')
- .replace(/\/http/g, 'http')
- .replace(/]\(\/roadmaps\/(.+?)\.png\)/g, '](/assets/roadmaps/$1.png)')
- .replace(/]\(\/roadmaps\/(.+?)\.svg\)/g, '](/assets/roadmaps/$1.svg)')
- .replace(//g, '');
-
- const hasJson = fs.existsSync(path.join(oldAssetsPath, `/project/${roadmapId}.json`));
-
- const newRoadmapMeta = {
- ...( hasJson ? { jsonUrl: `/jsons/${roadmapId}.json`} : {}),
- pdfUrl: `/pdfs/${roadmapId}.pdf`,
- order: orderInfo[roadmapId],
- featuredTitle:
- oldRoadmapMeta.featuredTitle === 'Software Design and Architecture'
- ? 'Software Design'
- : oldRoadmapMeta.featuredTitle,
- featuredDescription: oldRoadmapMeta.featuredDescription,
- title: oldRoadmapMeta.title,
- description: oldRoadmapMeta.description,
- isNew: oldRoadmapMeta.isNew,
- hasTopics: hasContentDir,
- ...metaToMerge,
- seo: oldRoadmapMeta.seo,
- relatedRoadmaps: oldRoadmapMeta.relatedRoadmaps,
- sitemap: {
- priority: 1,
- changefreq: 'monthly',
- },
- tags: ['roadmap', 'main-sitemap', `${oldRoadmapMeta.type === 'tool' ? 'skill' : oldRoadmapMeta.type}-roadmap`],
- };
-
- const frontmatter = yaml.stringify(newRoadmapMeta);
- const newRoadmapDirPath = path.join(newRoadmapsDirPath, roadmapId);
- const newRoadmapFilePath = path.join(newRoadmapDirPath, `/${roadmapId}.md`);
-
- fs.mkdirSync(newRoadmapDirPath);
- fs.writeFileSync(newRoadmapFilePath, `---\n${frontmatter}---\n\n${roadmapFileContentWithUpdatedUrls}`);
-
- const jsonFile = path.join(oldAssetsPath, oldRoadmapMeta.jsonUrl || '/unknown');
- const pdfFile = path.join(oldAssetsPath, oldRoadmapMeta.pdfUrl || '/unknown');
-
- if (fs.existsSync(jsonFile)) {
- fs.copyFileSync(jsonFile, path.join(newJsonsPath, `${roadmapId}.json`));
- }
-
- if (fs.existsSync(pdfFile)) {
- fs.copyFileSync(pdfFile, path.join(newPdfsPath, `${roadmapId}.pdf`));
- }
-
- // Copy the content directory
- const oldRoadmapContentDir = path.join(oldRoadmapPath, 'content');
- if (fs.existsSync(oldRoadmapContentDir)) {
- fs.cpSync(oldRoadmapContentDir, path.join(newRoadmapDirPath, 'content'), { recursive: true });
- }
-});
-
-const roadmapAssets = path.join(oldAssetsPath, 'roadmaps');
-if (fs.existsSync(roadmapAssets)) {
- fs.cpSync(roadmapAssets, path.join(newAssetsPath, 'roadmaps'), { recursive: true });
-}
diff --git a/bin/sync-content.sh b/bin/sync-content.sh
deleted file mode 100755
index 94e411017..000000000
--- a/bin/sync-content.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-# Change working directory to the directory of this script
-cd "$(dirname "$0")"
-
-if [ ! -d "./developer-roadmap" ]; then
- git clone --depth 1 -b master git@github.com:kamranahmedse/developer-roadmap.git
-fi
-
-echo "Removing old directories"
-rm -rf ../src/videos
-rm -rf ../src/guides
-rm -rf ../src/roadmaps
-
-rm -rf ../public/jsons
-rm -rf ../public/pdfs
-
-echo "=== Migrating Roadmaps ==="
-node roadmap-migrator.cjs
-
-echo "=== Migrating Content ==="
-node content-migrator.cjs
-
-echo "=== Migrating Guides ==="
-node guide-migrator.cjs
-
-echo "=== Migrating Videos ==="
-node video-migrator.cjs
diff --git a/bin/video-migrator.cjs b/bin/video-migrator.cjs
deleted file mode 100644
index 3b4acf034..000000000
--- a/bin/video-migrator.cjs
+++ /dev/null
@@ -1,58 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-const yaml = require('json-to-pretty-yaml');
-
-const contentDirPath = path.join(__dirname, './developer-roadmap/content');
-const videos = require('./developer-roadmap/content/videos.json');
-
-// Remove the old videos directory
-const newVideosDirPath = path.join(__dirname, '../src/videos');
-if (fs.existsSync(newVideosDirPath)) {
- fs.rmSync(newVideosDirPath, { recursive: true });
-}
-
-fs.mkdirSync(newVideosDirPath);
-
-videos.forEach((video) => {
- const { id: videoId } = video;
-
- const originalVideoPath = path.join(
- contentDirPath,
- 'videos',
- `${videoId}.md`
- );
-
- const newVideoPath = path.join(__dirname, `../src/videos/${videoId}.md`);
-
- const videoWithoutFrontmatter = fs.readFileSync(originalVideoPath, 'utf8');
- fs.copyFileSync(originalVideoPath, newVideoPath);
-
- const videoFrontMatter = yaml
- .stringify({
- title: video.title,
- description: video.description,
- duration: video.duration,
- isNew: video.isNew,
- date: video.createdAt.replace(/T.*/, ''),
- author: {
- name: 'Kamran Ahmed',
- url: `https://twitter.com/kamranahmedse`,
- imageUrl: `/authors/kamranahmedse.jpeg`,
- },
- sitemap: {
- priority: 0.7,
- changefreq: 'weekly',
- },
- tags: ['video', `video-sitemap`],
- })
- .replace(/date: "(.+?)"/, 'date: $1');
-
- const videoWithIframeClass = videoWithoutFrontmatter
- .replace(//g, '');
-
- const videoWithFrontmatter = `---\n${videoFrontMatter}---\n\n${videoWithIframeClass}`;
-
- console.log(`Writing video ${videoId} to disk`);
- fs.writeFileSync(newVideoPath, videoWithFrontmatter);
-});
diff --git a/package.json b/package.json
index bc3476203..c30c0f0f1 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,6 @@
"preview": "astro preview",
"astro": "astro",
"deploy": "NODE_DEBUG=gh-pages gh-pages -d dist -t",
- "sync-content": "sh ./bin/sync-content.sh",
"compress:jsons": "node bin/compress-jsons.cjs",
"upgrade": "ncu -u",
"roadmap-links": "node bin/roadmap-links.cjs"
diff --git a/public/jsons/spring-boot.json b/public/jsons/spring-boot.json
index 98660e09d..02c21dbd6 100644
--- a/public/jsons/spring-boot.json
+++ b/public/jsons/spring-boot.json
@@ -1 +1 @@
-{"mockup":{"controls":{"control":[{"ID":"14109","typeID":"Arrow","zOrder":"34","w":"173","h":"268","measuredW":"150","measuredH":"100","x":"727","y":"158","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":172.6216144658764,"y":0.236415956616014},"p1":{"x":0.5789624059056846,"y":0.2176906025812808},"p2":{"x":0.14440715214993816,"y":268.6144146474609}}},{"ID":"14110","typeID":"Label","zOrder":"35","measuredW":"149","measuredH":"36","x":"823","y":"106","properties":{"size":"28","text":"Spring Boot"}},{"ID":"14162","typeID":"Canvas","zOrder":"36","w":"350","h":"141","measuredW":"100","measuredH":"70","x":"1150","y":"40"},{"ID":"14163","typeID":"Label","zOrder":"37","measuredW":"314","measuredH":"25","x":"1164","y":"57","properties":{"size":"17","text":"Find the detailed version of this roadmap"}},{"ID":"14164","typeID":"Label","zOrder":"38","measuredW":"319","measuredH":"25","x":"1164","y":"85","properties":{"size":"17","text":"along with resources and other roadmaps"}},{"ID":"14165","typeID":"__group__","zOrder":"39","measuredW":"320","measuredH":"45","w":"320","h":"45","x":"1165","y":"121","properties":{"controlName":"ext_link:roadmap.sh"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"45","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"borderColor":"4273622","color":"4273622"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"28","x":"141","y":"8","properties":{"color":"16777215","size":"20","text":"roadmap.sh"}},{"ID":"2","typeID":"Label","zOrder":"2","measuredW":"45","measuredH":"28","x":"66","y":"8","properties":{"color":"16777215","size":"20","text":"https"}},{"ID":"3","typeID":"Label","zOrder":"3","measuredW":"5","measuredH":"28","x":"113","y":"8","properties":{"color":"16777215","size":"20","text":":"}},{"ID":"4","typeID":"Label","zOrder":"4","measuredW":"10","measuredH":"28","x":"120","y":"9","properties":{"color":"16777215","size":"20","text":"/"}},{"ID":"5","typeID":"Label","zOrder":"5","measuredW":"10","measuredH":"28","x":"128","y":"9","properties":{"color":"16777215","size":"20","text":"/"}}]}}},{"ID":"14232","typeID":"__group__","zOrder":"40","measuredW":"391","measuredH":"55","w":"391","h":"55","x":"690","y":"219","properties":{"controlName":"ext_link:roadmap.sh/java"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"391","h":"55","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"4273622","borderColor":"4273622"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"296","measuredH":"28","x":"48","y":"14","properties":{"size":"20","color":"16777215","text":"Learn Java / Visit Java Roadmap"}}]}}},{"ID":"14233","typeID":"Arrow","zOrder":"41","w":"1","h":"64","measuredW":"150","measuredH":"100","x":"897","y":"30","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":-0.3586399639038973,"y":0},"p1":{"x":0.32941176470588224,"y":0},"p2":{"x":-0.3586399639038973,"y":64},"stroke":"dotted"}},{"ID":"14237","typeID":"Canvas","zOrder":"42","w":"408","h":"202","measuredW":"100","measuredH":"70","x":"215","y":"40"},{"ID":"14238","typeID":"__group__","zOrder":"43","measuredW":"155","measuredH":"27","w":"155","h":"27","x":"250","y":"115","properties":{"controlName":"ext_link:roadmap.sh/java"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"122","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"Java Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"14239","typeID":"__group__","zOrder":"44","measuredW":"189","measuredH":"27","w":"189","h":"27","x":"250","y":"151","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"156","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"Backend Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"14240","typeID":"__group__","zOrder":"45","measuredW":"183","measuredH":"27","w":"183","h":"27","x":"250","y":"187","properties":{"controlName":"ext_link:roadmap.sh/devops"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"150","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"DevOps Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"14243","typeID":"Label","zOrder":"46","measuredW":"209","measuredH":"32","x":"250","y":"67","properties":{"size":"24","text":"Related Roadmaps"}},{"ID":"14249","typeID":"TextArea","zOrder":"47","w":"238","h":"50","measuredW":"200","measuredH":"140","x":"518","y":"405","properties":{"color":"16776960"}},{"ID":"14250","typeID":"Label","zOrder":"48","measuredW":"98","measuredH":"26","x":"588","y":"417","properties":{"size":"18","text":"Spring Core"}},{"ID":"14257","typeID":"TextArea","zOrder":"49","w":"180","h":"215","measuredW":"200","measuredH":"140","x":"577","y":"502"},{"ID":"14258","typeID":"Label","zOrder":"50","measuredW":"98","measuredH":"26","x":"618","y":"517","properties":{"size":"18","text":"Introduction"}},{"ID":"14259","typeID":"TextArea","zOrder":"51","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"548","y":"553","properties":{"color":"16770457"}},{"ID":"14260","typeID":"Label","zOrder":"52","measuredW":"99","measuredH":"26","x":"617","y":"564","properties":{"size":"18","text":"Terminology"}},{"ID":"14261","typeID":"TextArea","zOrder":"53","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"548","y":"605","properties":{"color":"16770457"}},{"ID":"14262","typeID":"Label","zOrder":"54","measuredW":"99","measuredH":"26","x":"617","y":"616","properties":{"size":"18","text":"Architecture"}},{"ID":"14263","typeID":"TextArea","zOrder":"55","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"548","y":"656","properties":{"color":"16770457"}},{"ID":"14264","typeID":"Label","zOrder":"56","measuredW":"99","measuredH":"26","x":"617","y":"667","properties":{"size":"18","text":"Why Spring?"}},{"ID":"14265","typeID":"Arrow","zOrder":"33","w":"146","h":"2","measuredW":"150","measuredH":"100","x":"411","y":"426","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":146.01679645265642,"y":2.0707373480713613},"p1":{"x":0.4642857142857146,"y":-0.003992113361953187},"p2":{"x":0.24143192912043787,"y":-0.11897394490631541}}},{"ID":"14280","typeID":"Arrow","zOrder":"32","w":"1","h":"112","measuredW":"150","measuredH":"100","x":"666","y":"431","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.24143192912038103,"y":111.61050470611792},"p1":{"x":0.46428571428571463,"y":-0.003992113361953184},"p2":{"x":0.24143192912043787,"y":-0.11897394490631541}}},{"ID":"14301","typeID":"Arrow","zOrder":"31","w":"177","h":"214","measuredW":"150","measuredH":"100","x":"440","y":"435","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":177.4682317265881,"y":0.25033397230828314},"p1":{"x":0.46461829054937476,"y":-0.1088245057213903},"p2":{"x":0.022661364670909734,"y":214.50946531263833}}},{"ID":"14302","typeID":"Arrow","zOrder":"30","w":"149","h":"109","measuredW":"150","measuredH":"100","x":"441","y":"314","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":148.8332898870765,"y":109.16004691752192},"p1":{"x":0.6360127761511841,"y":0.09156241682193235},"p2":{"x":0.2954774997014624,"y":0.347463424444868}}},{"ID":"14303","typeID":"Arrow","zOrder":"29","w":"116","h":"57","measuredW":"150","measuredH":"100","x":"434","y":"364","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":116.10806099277852,"y":57.43286305255248},"p1":{"x":0.5967446581465075,"y":0.06448697652928094},"p2":{"x":0.3867420398235595,"y":0.43579550855969273}}},{"ID":"14304","typeID":"Arrow","zOrder":"28","w":"119","h":"41","measuredW":"150","measuredH":"100","x":"434","y":"439","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":118.69883679023269,"y":-0.2952982977527654},"p1":{"x":0.4935153583617746,"y":-0.09488054607508538},"p2":{"x":-0.3404418251459447,"y":40.06584992139261}}},{"ID":"14305","typeID":"Arrow","zOrder":"27","w":"128","h":"93","measuredW":"150","measuredH":"100","x":"434","y":"439","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":127.33475611508015,"y":-0.2952982977527654},"p1":{"x":0.49351535836177457,"y":-0.09488054607508535},"p2":{"x":-0.476849892661221,"y":92.97263041059898}}},{"ID":"14306","typeID":"Arrow","zOrder":"26","w":"138","h":"145","measuredW":"150","measuredH":"100","x":"435","y":"442","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":138.4250431698665,"y":0.15906943218618608},"p1":{"x":0.49351535836177424,"y":-0.09488054607508524},"p2":{"x":0.25033397230828314,"y":145.24251408962232}}},{"ID":"14307","typeID":"Arrow","zOrder":"25","w":"281","h":"1","measuredW":"150","measuredH":"100","x":"739","y":"437","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":281.3020743683919,"y":0.8810260550936846},"p1":{"x":0.4642857142857147,"y":-0.003992113361953183},"p2":{"x":0.48803395698428176,"y":0.8810260550936846}}},{"ID":"14311","typeID":"TextArea","zOrder":"71","w":"238","h":"50","measuredW":"200","measuredH":"140","x":"882","y":"408","properties":{"color":"16776960"}},{"ID":"14312","typeID":"Label","zOrder":"72","measuredW":"123","measuredH":"26","x":"939","y":"420","properties":{"size":"18","text":"Spring Security"}},{"ID":"14314","typeID":"TextArea","zOrder":"73","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"255","properties":{"color":"16770457"}},{"ID":"14315","typeID":"Label","zOrder":"74","measuredW":"117","measuredH":"26","x":"1272","y":"266","properties":{"size":"18","text":"Authentication"}},{"ID":"14316","typeID":"TextArea","zOrder":"75","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"306","properties":{"color":"16770457"}},{"ID":"14317","typeID":"Label","zOrder":"76","measuredW":"106","measuredH":"26","x":"1278","y":"317","properties":{"size":"18","text":"Authorization"}},{"ID":"14318","typeID":"TextArea","zOrder":"77","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"357","properties":{"color":"16770457"}},{"ID":"14319","typeID":"Label","zOrder":"78","measuredW":"61","measuredH":"26","x":"1300","y":"368","properties":{"size":"18","text":"OAuth2"}},{"ID":"14320","typeID":"TextArea","zOrder":"79","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"409","properties":{"color":"16770457"}},{"ID":"14321","typeID":"Label","zOrder":"80","measuredW":"159","measuredH":"26","x":"1251","y":"420","properties":{"size":"18","text":"JWT Authentication"}},{"ID":"14322","typeID":"Arrow","zOrder":"24","w":"148","h":"3","measuredW":"150","measuredH":"100","x":"1099","y":"434","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":148.01679645265642,"y":0.07073734807136134},"p1":{"x":0.46428571428571463,"y":-0.003992113361953189},"p2":{"x":-0.42272979529752774,"y":2.9775178372777873}}},{"ID":"14323","typeID":"Arrow","zOrder":"23","w":"138","h":"50","measuredW":"150","measuredH":"100","x":"1088","y":"375","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":138.38887621244385,"y":-0.201101301623396},"p1":{"x":0.4863185723727692,"y":0.052478519497686664},"p2":{"x":0.214167014885561,"y":49.88723078249143}}},{"ID":"14324","typeID":"Arrow","zOrder":"22","w":"161","measuredW":"150","measuredH":"100","x":"1061","y":"320","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":160.20732461753528,"y":-0.4709849806466764},"p1":{"x":0.5161401966326554,"y":0.0868716679471183},"p2":{"x":-0.42077482462605076,"y":99.70567918758297}}},{"ID":"14325","typeID":"Arrow","zOrder":"21","w":"164","h":"147","measuredW":"150","measuredH":"100","x":"1055","y":"271","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":164.48014075256583,"y":0.1678668002079462},"p1":{"x":0.5161401966326553,"y":0.08687166794711838},"p2":{"x":0.39767358046537993,"y":146.97849532261353}}},{"ID":"14327","typeID":"TextArea","zOrder":"20","w":"238","h":"55","measuredW":"200","measuredH":"140","x":"883","y":"503","properties":{"borderColor":"16777215"}},{"ID":"14328","typeID":"Label","zOrder":"81","measuredW":"107","measuredH":"28","x":"948","y":"517","properties":{"size":"20","text":"Spring Boot"}},{"ID":"14329","typeID":"Arrow","zOrder":"19","w":"1","h":"179","measuredW":"150","measuredH":"100","x":"1000","y":"431","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":178.58144672562196},"p1":{"x":0.4642857142857148,"y":-0.003992113361953182},"p2":{"x":0.48803395698428176,"y":-0.11897394490631541}}},{"ID":"14331","typeID":"TextArea","zOrder":"82","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"584","properties":{"color":"16776960"}},{"ID":"14332","typeID":"Label","zOrder":"83","measuredW":"165","measuredH":"26","x":"1248","y":"595","properties":{"size":"18","text":"Spring Boot Starters"}},{"ID":"14333","typeID":"TextArea","zOrder":"84","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"635","properties":{"color":"16776960"}},{"ID":"14334","typeID":"Label","zOrder":"85","measuredW":"142","measuredH":"26","x":"1260","y":"646","properties":{"size":"18","text":"Autoconfiguration"}},{"ID":"14335","typeID":"TextArea","zOrder":"86","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"686","properties":{"color":"16776960"}},{"ID":"14336","typeID":"Label","zOrder":"87","measuredW":"77","measuredH":"26","x":"1292","y":"697","properties":{"size":"18","text":"Actuators"}},{"ID":"14337","typeID":"TextArea","zOrder":"88","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"738","properties":{"color":"16776960"}},{"ID":"14338","typeID":"Label","zOrder":"89","measuredW":"148","measuredH":"26","x":"1257","y":"749","properties":{"size":"18","text":"Embedded Server"}},{"ID":"14339","typeID":"Arrow","zOrder":"18","w":"537","h":"2","measuredW":"150","measuredH":"100","x":"786","y":"945","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":536.5558496625544,"y":1.8810260550936846},"p1":{"x":0.4642857142857152,"y":-0.0039921133619531856},"p2":{"x":-0.2750123853365949,"y":1.8810260550936846}}},{"ID":"14342","typeID":"TextArea","zOrder":"90","w":"240","h":"47","measuredW":"200","measuredH":"140","x":"1212","y":"790","properties":{"color":"16776960"}},{"ID":"14343","typeID":"Label","zOrder":"91","measuredW":"82","measuredH":"26","x":"1291","y":"801","properties":{"size":"18","text":"Hibernate"}},{"ID":"14344","typeID":"TextArea","zOrder":"92","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"919","y":"692","properties":{"color":"16770457"}},{"ID":"14345","typeID":"Label","zOrder":"93","measuredW":"105","measuredH":"26","x":"965","y":"703","properties":{"size":"18","text":"Transactions"}},{"ID":"14346","typeID":"TextArea","zOrder":"94","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"919","y":"744","properties":{"color":"16770457"}},{"ID":"14347","typeID":"Label","zOrder":"95","measuredW":"111","measuredH":"26","x":"962","y":"755","properties":{"size":"18","text":"Relationships"}},{"ID":"14348","typeID":"TextArea","zOrder":"96","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"919","y":"796","properties":{"color":"16770457"}},{"ID":"14349","typeID":"Label","zOrder":"97","measuredW":"121","measuredH":"26","x":"957","y":"807","properties":{"size":"18","text":"Entity Lifecycle"}},{"ID":"14350","typeID":"Arrow","zOrder":"15","w":"146","h":"1","measuredW":"150","measuredH":"100","x":"1086","y":"828","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":146.7141818215698,"y":0.8543135727297795},"p1":{"x":0.46428571428571463,"y":-0.0039921133619531856},"p2":{"x":0.3878607219769492,"y":1.1528447227344714}}},{"ID":"14351","typeID":"Arrow","zOrder":"16","w":"119","h":"49","measuredW":"150","measuredH":"100","x":"1105","y":"767","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":119.2068375715935,"y":48.85431357272978},"p1":{"x":0.5272614687537527,"y":0.09288510762768885},"p2":{"x":0.10401807192488377,"y":-0.4882830771329054}}},{"ID":"14352","typeID":"Arrow","zOrder":"17","w":"124","h":"99","measuredW":"150","measuredH":"100","x":"1103","y":"712","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":124.60977527158389,"y":98.74990702274397},"p1":{"x":0.5272614687537526,"y":0.09288510762768905},"p2":{"x":0.40254922192957565,"y":0.06471372301859901}}},{"ID":"14353","typeID":"TextArea","zOrder":"98","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"578","y":"932","properties":{"color":"16776960"}},{"ID":"14354","typeID":"Label","zOrder":"99","measuredW":"97","measuredH":"26","x":"648","y":"943","properties":{"size":"18","text":"Spring Data"}},{"ID":"14355","typeID":"Arrow","zOrder":"14","w":"1","h":"131","measuredW":"150","measuredH":"100","x":"1324","y":"817","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":-0.2457271352116095,"y":131.1045059699236},"p1":{"x":0.4642857142857149,"y":-0.003992113361953185},"p2":{"x":-0.2457271352116095,"y":-0.11897394490631541}}},{"ID":"14356","typeID":"Arrow","zOrder":"13","w":"224","h":"1","measuredW":"150","measuredH":"100","x":"1001","y":"609","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":223.55584966255435,"y":0.8810260550936846},"p1":{"x":0.4642857142857149,"y":-0.003992113361953184},"p2":{"x":-0.2457271352116095,"y":0.8810260550936846}}},{"ID":"14357","typeID":"TextArea","zOrder":"100","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"577","y":"1023","properties":{"color":"16770457"}},{"ID":"14358","typeID":"Label","zOrder":"101","measuredW":"131","measuredH":"26","x":"630","y":"1034","properties":{"size":"18","text":"Spring Data JPA"}},{"ID":"14359","typeID":"TextArea","zOrder":"102","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"577","y":"1075","properties":{"color":"16770457"}},{"ID":"14360","typeID":"Label","zOrder":"103","measuredW":"183","measuredH":"26","x":"604","y":"1086","properties":{"size":"18","text":"Spring Data MongoDB"}},{"ID":"14361","typeID":"TextArea","zOrder":"104","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"577","y":"1127","properties":{"color":"16770457"}},{"ID":"14362","typeID":"Label","zOrder":"105","measuredW":"148","measuredH":"26","x":"622","y":"1138","properties":{"size":"18","text":"Spring Data JDBC"}},{"ID":"14363","typeID":"Arrow","zOrder":"12","w":"1","h":"98","measuredW":"150","measuredH":"100","x":"695","y":"957","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":97.58144672562196},"p1":{"x":0.46428571428571486,"y":-0.003992113361953183},"p2":{"x":0.48803395698428176,"y":0.0027856225734694817},"stroke":"dotted"}},{"ID":"14364","typeID":"TextArea","zOrder":"106","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"577","y":"838","properties":{"color":"16776960"}},{"ID":"14365","typeID":"Label","zOrder":"107","measuredW":"114","measuredH":"26","x":"647","y":"849","properties":{"size":"18","text":"Microservices"}},{"ID":"14366","typeID":"Arrow","zOrder":"11","w":"1","h":"94","measuredW":"150","measuredH":"100","x":"695","y":"865","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":94.58144672562196},"p1":{"x":0.46428571428571475,"y":-0.003992113361953182},"p2":{"x":0.48803395698428176,"y":0.4641401455688765}}},{"ID":"14369","typeID":"TextArea","zOrder":"108","w":"153","h":"323","measuredW":"200","measuredH":"140","x":"360","y":"757"},{"ID":"14370","typeID":"Label","zOrder":"109","measuredW":"105","measuredH":"26","x":"384","y":"771","properties":{"size":"18","text":"Spring Cloud"}},{"ID":"14372","typeID":"TextArea","zOrder":"110","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"210","y":"806","properties":{"color":"16770457"}},{"ID":"14373","typeID":"Label","zOrder":"111","measuredW":"180","measuredH":"26","x":"262","y":"817","properties":{"size":"18","text":"Spring Cloud Gateway"}},{"ID":"14374","typeID":"TextArea","zOrder":"112","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"210","y":"858","properties":{"color":"16770457"}},{"ID":"14375","typeID":"Label","zOrder":"113","measuredW":"105","measuredH":"26","x":"299","y":"869","properties":{"size":"18","text":"Cloud Config"}},{"ID":"14376","typeID":"TextArea","zOrder":"114","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"210","y":"911","properties":{"color":"16770457"}},{"ID":"14377","typeID":"Label","zOrder":"115","measuredW":"232","measuredH":"26","x":"236","y":"922","properties":{"size":"18","text":"Spring Cloud Circuit Breaker"}},{"ID":"14378","typeID":"TextArea","zOrder":"116","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"210","y":"963","properties":{"color":"16770457"}},{"ID":"14379","typeID":"Label","zOrder":"117","measuredW":"201","measuredH":"26","x":"251","y":"974","properties":{"size":"18","text":"Spring Cloud OpenFeign"}},{"ID":"14380","typeID":"TextArea","zOrder":"118","w":"91","h":"47","measuredW":"200","measuredH":"140","x":"210","y":"1017","properties":{"color":"16770457"}},{"ID":"14381","typeID":"Label","zOrder":"119","measuredW":"55","measuredH":"26","x":"230","y":"1028","properties":{"size":"18","text":"Hystrix"}},{"ID":"14382","typeID":"TextArea","zOrder":"120","w":"91","h":"47","measuredW":"200","measuredH":"140","x":"307","y":"1017","properties":{"color":"16770457"}},{"ID":"14383","typeID":"Label","zOrder":"121","measuredW":"51","measuredH":"26","x":"327","y":"1028","properties":{"size":"18","text":"Sleuth"}},{"ID":"14384","typeID":"TextArea","zOrder":"122","w":"91","h":"47","measuredW":"200","measuredH":"140","x":"403","y":"1017","properties":{"color":"16770457"}},{"ID":"14385","typeID":"Label","zOrder":"123","measuredW":"57","measuredH":"26","x":"420","y":"1028","properties":{"size":"18","text":"Eureka"}},{"ID":"14386","typeID":"Arrow","zOrder":"10","w":"148","h":"1","measuredW":"150","measuredH":"100","x":"502","y":"861","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":148.01679645265642,"y":1.0707373480713613},"p1":{"x":0.4642857142857146,"y":-0.003992113361953188},"p2":{"x":-0.10033385901039082,"y":0.6329018604571957}}},{"ID":"14387","typeID":"Arrow","zOrder":"9","w":"213","h":"1","measuredW":"150","measuredH":"100","x":"801","y":"964","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":212.98029127925827,"y":0.8810260550936846},"p1":{"x":0.46428571428571536,"y":-0.003992113361953186},"p2":{"x":-0.2750123853365949,"y":0.8810260550936846}}},{"ID":"14388","typeID":"Arrow","zOrder":"124","w":"1","h":"339","measuredW":"150","measuredH":"100","x":"1015","y":"965","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":338.4082071365567},"p1":{"x":0.46428571428571513,"y":-0.003992113361953183},"p2":{"x":0.48803395698428176,"y":-0.11897394490631541}}},{"ID":"14389","typeID":"TextArea","zOrder":"125","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"919","y":"1117","properties":{"color":"16776960"}},{"ID":"14390","typeID":"Label","zOrder":"126","measuredW":"97","measuredH":"26","x":"967","y":"1128","properties":{"size":"18","text":"Spring MVC"}},{"ID":"14391","typeID":"TextArea","zOrder":"127","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"1229","y":"1040","properties":{"color":"16770457"}},{"ID":"14392","typeID":"Label","zOrder":"128","measuredW":"57","measuredH":"26","x":"1297","y":"1051","properties":{"size":"18","text":"Servlet"}},{"ID":"14393","typeID":"TextArea","zOrder":"129","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"1229","y":"1092","properties":{"color":"16770457"}},{"ID":"14394","typeID":"Label","zOrder":"130","measuredW":"76","measuredH":"26","x":"1288","y":"1103","properties":{"size":"18","text":"JSP Files"}},{"ID":"14395","typeID":"TextArea","zOrder":"131","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"1229","y":"1144","properties":{"color":"16770457"}},{"ID":"14396","typeID":"Label","zOrder":"132","measuredW":"99","measuredH":"26","x":"1276","y":"1155","properties":{"size":"18","text":"Architecture"}},{"ID":"14397","typeID":"TextArea","zOrder":"133","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"1229","y":"1197","properties":{"color":"16770457"}},{"ID":"14398","typeID":"Label","zOrder":"134","measuredW":"104","measuredH":"26","x":"1274","y":"1208","properties":{"size":"18","text":"Components"}},{"ID":"14399","typeID":"Arrow","zOrder":"8","w":"158","h":"69","measuredW":"150","measuredH":"100","x":"1077","y":"1059","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":158.33326595602625,"y":0.3244612366651154},"p1":{"x":0.4049649217485163,"y":0.09325418240690724},"p2":{"x":0.39940241719568803,"y":69.30706829960263}}},{"ID":"14400","typeID":"Arrow","zOrder":"7","w":"152","h":"31","measuredW":"150","measuredH":"100","x":"1090","y":"1107","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":152.59459301528295,"y":-0.47691287816701333},"p1":{"x":0.4505529477035481,"y":0.05320032289534493},"p2":{"x":0.10672477089451604,"y":30.383727123673452}}},{"ID":"14401","typeID":"Arrow","zOrder":"6","w":"152","h":"24","measuredW":"150","measuredH":"100","x":"1090","y":"1151","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":152.59459301528295,"y":24.50569418477039},"p1":{"x":0.41508650519031215,"y":-0.06671280276816575},"p2":{"x":0.10672477089451604,"y":0.906381242186626}}},{"ID":"14402","typeID":"Arrow","zOrder":"5","w":"167","h":"65","measuredW":"150","measuredH":"100","x":"1074","y":"1159","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":166.7792612504686,"y":65.5196518347525},"p1":{"x":0.41475409836065563,"y":-0.08770491803278692},"p2":{"x":-0.23126111243277592,"y":0.16770830144309912}}},{"ID":"14403","typeID":"Arrow","zOrder":"135","w":"213","h":"1","measuredW":"150","measuredH":"100","x":"802","y":"1304","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":212.98029127925827,"y":0.8810260550936846},"p1":{"x":0.46428571428571536,"y":-0.003992113361953186},"p2":{"x":-0.2750123853365949,"y":0.8810260550936846}}},{"ID":"14404","typeID":"TextArea","zOrder":"136","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"622","y":"1281","properties":{"color":"16776960"}},{"ID":"14405","typeID":"Label","zOrder":"137","measuredW":"59","measuredH":"26","x":"689","y":"1292","properties":{"size":"18","text":"Testing"}},{"ID":"14406","typeID":"TextArea","zOrder":"138","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"216","y":"1129","properties":{"color":"16770457"}},{"ID":"14407","typeID":"Label","zOrder":"139","measuredW":"70","measuredH":"26","x":"318","y":"1140","properties":{"size":"18","text":"JPA Test"}},{"ID":"14408","typeID":"TextArea","zOrder":"140","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"216","y":"1181","properties":{"color":"16770457"}},{"ID":"14409","typeID":"Label","zOrder":"141","measuredW":"84","measuredH":"26","x":"311","y":"1192","properties":{"size":"18","text":"MockMVC"}},{"ID":"14410","typeID":"TextArea","zOrder":"142","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"216","y":"1234","properties":{"color":"16770457"}},{"ID":"14411","typeID":"Label","zOrder":"143","measuredW":"234","measuredH":"26","x":"236","y":"1245","properties":{"size":"18","text":"@SpringBootTest Annotation"}},{"ID":"14412","typeID":"TextArea","zOrder":"144","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"216","y":"1286","properties":{"color":"16770457"}},{"ID":"14413","typeID":"Label","zOrder":"145","measuredW":"194","measuredH":"26","x":"256","y":"1297","properties":{"size":"18","text":"@Mockbean Annotation"}},{"ID":"14414","typeID":"Arrow","zOrder":"4","w":"167","h":"1","measuredW":"150","measuredH":"100","x":"476","y":"1309","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":166.5351106266147,"y":0.6329018604571957},"p1":{"x":0.4642857142857147,"y":-0.003992113361953187},"p2":{"x":-0.10033385901039082,"y":0.6329018604571957}}},{"ID":"14415","typeID":"Arrow","zOrder":"3","w":"162","h":"42","measuredW":"150","measuredH":"100","x":"475","y":"1255","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":161.27378356735812,"y":42.054545959707184},"p1":{"x":0.5113609467455617,"y":0.06473372781065193},"p2":{"x":-0.2907435011008488,"y":0.3019153689817813}}},{"ID":"14416","typeID":"Arrow","zOrder":"2","w":"158","h":"87","measuredW":"150","measuredH":"100","x":"484","y":"1204","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":157.7197788618006,"y":87.60855066526483},"p1":{"x":0.5113609467455617,"y":0.06473372781065195},"p2":{"x":-0.2907435011008488,"y":0.3019153689817813}}},{"ID":"14417","typeID":"Arrow","zOrder":"1","w":"187","h":"138","measuredW":"150","measuredH":"100","x":"484","y":"1153","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":186.76508709882694,"y":138.60855066526483},"p1":{"x":0.531203407215966,"y":0.08221256395262982},"p2":{"x":-0.2907435011008488,"y":0.3019153689817813}}},{"ID":"14418","typeID":"Arrow","zOrder":"146","w":"1","h":"139","measuredW":"150","measuredH":"100","x":"711","y":"1555","properties":{"color":"2848996","curvature":"-1","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0,"y":0},"p1":{"x":0.4438624012549725,"y":-0.00008403832147459167},"p2":{"x":0,"y":139},"stroke":"dotted"}},{"ID":"14419","typeID":"TextArea","zOrder":"147","w":"443","h":"124","measuredW":"200","measuredH":"140","x":"483","y":"1486"},{"ID":"14420","typeID":"Label","zOrder":"148","measuredW":"303","measuredH":"25","x":"553","y":"1506","properties":{"size":"17","text":"Continue Learning with following Tracks"}},{"ID":"14421","typeID":"__group__","zOrder":"149","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"707","y":"1541","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"25","x":"25","y":"9","properties":{"size":"17","text":"Backend Roadmap"}}]}}},{"ID":"14422","typeID":"__group__","zOrder":"150","measuredW":"185","measuredH":"44","w":"185","h":"44","x":"512","y":"1541","properties":{"controlName":"ext_link:roadmap.sh/java"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"185","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"116","measuredH":"25","x":"35","y":"9","properties":{"size":"17","text":"Java Roadmap"}}]}}},{"ID":"14423","typeID":"Arrow","zOrder":"0","w":"1","h":"203","measuredW":"150","measuredH":"100","x":"711","y":"1313","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":202.78634832628973},"p1":{"x":0.4642857142857151,"y":-0.003992113361953184},"p2":{"x":0.48803395698428176,"y":-0.11897394490631541}}},{"ID":"14424","typeID":"TextArea","zOrder":"57","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"294","properties":{"color":"16770457"}},{"ID":"14425","typeID":"Label","zOrder":"58","measuredW":"109","measuredH":"26","x":"273","y":"305","properties":{"size":"18","text":"Configuration"}},{"ID":"14426","typeID":"TextArea","zOrder":"59","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"345","properties":{"color":"16770457"}},{"ID":"14427","typeID":"Label","zOrder":"60","measuredW":"178","measuredH":"26","x":"239","y":"356","properties":{"size":"18","text":"Dependency Injection"}},{"ID":"14428","typeID":"TextArea","zOrder":"61","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"397","properties":{"color":"16770457"}},{"ID":"14429","typeID":"Label","zOrder":"62","measuredW":"90","measuredH":"26","x":"283","y":"408","properties":{"size":"18","text":"Spring IOC"}},{"ID":"14430","typeID":"TextArea","zOrder":"63","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"449","properties":{"color":"16770457"}},{"ID":"14431","typeID":"Label","zOrder":"64","measuredW":"93","measuredH":"26","x":"281","y":"460","properties":{"size":"18","text":"Spring AOP"}},{"ID":"14432","typeID":"TextArea","zOrder":"65","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"501","properties":{"color":"16770457"}},{"ID":"14433","typeID":"Label","zOrder":"66","measuredW":"97","measuredH":"26","x":"279","y":"512","properties":{"size":"18","text":"Spring MVC"}},{"ID":"14434","typeID":"TextArea","zOrder":"67","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"553","properties":{"color":"16770457"}},{"ID":"14435","typeID":"Label","zOrder":"68","measuredW":"96","measuredH":"26","x":"280","y":"564","properties":{"size":"18","text":"Annotations"}},{"ID":"14436","typeID":"TextArea","zOrder":"69","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"209","y":"605","properties":{"color":"16770457"}},{"ID":"14437","typeID":"Label","zOrder":"70","measuredW":"158","measuredH":"26","x":"249","y":"616","properties":{"size":"18","text":"Spring Bean Scope"}}]},"attributes":{"name":"New Wireframe 1 copy 4","order":1000019.1097559511,"parentID":null,"notes":""},"branchID":"Master","resourceID":"E1CB7BE6-6915-47A7-A0F5-139EC887D1A8","mockupH":"1664","mockupW":"1291","measuredW":"1500","measuredH":"1694","version":"1.0"},"groupOffset":{"x":0,"y":0},"dependencies":[],"projectID":"file:///Users/kamranahmed/Desktop/devops%20roadmap%5C.bmpr"}
\ No newline at end of file
+{"mockup":{"controls":{"control":[{"ID":"14109","typeID":"Arrow","zOrder":"34","w":"173","h":"268","measuredW":"150","measuredH":"100","x":"727","y":"158","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":172.6216144658764,"y":0.236415956616014},"p1":{"x":0.5789624059056846,"y":0.2176906025812808},"p2":{"x":0.14440715214993816,"y":268.6144146474609}}},{"ID":"14110","typeID":"Label","zOrder":"35","measuredW":"149","measuredH":"36","x":"823","y":"106","properties":{"size":"28","text":"Spring Boot"}},{"ID":"14162","typeID":"Canvas","zOrder":"36","w":"350","h":"141","measuredW":"100","measuredH":"70","x":"1150","y":"40"},{"ID":"14163","typeID":"Label","zOrder":"37","measuredW":"314","measuredH":"25","x":"1164","y":"57","properties":{"size":"17","text":"Find the detailed version of this roadmap"}},{"ID":"14164","typeID":"Label","zOrder":"38","measuredW":"319","measuredH":"25","x":"1164","y":"85","properties":{"size":"17","text":"along with resources and other roadmaps"}},{"ID":"14165","typeID":"__group__","zOrder":"39","measuredW":"320","measuredH":"45","w":"320","h":"45","x":"1165","y":"121","properties":{"controlName":"ext_link:roadmap.sh"},"children":{"controls":{"control":[{"ID":"0","typeID":"Canvas","zOrder":"0","w":"320","h":"45","measuredW":"100","measuredH":"70","x":"0","y":"0","properties":{"borderColor":"4273622","color":"4273622"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"28","x":"141","y":"8","properties":{"color":"16777215","size":"20","text":"roadmap.sh"}},{"ID":"2","typeID":"Label","zOrder":"2","measuredW":"45","measuredH":"28","x":"66","y":"8","properties":{"color":"16777215","size":"20","text":"https"}},{"ID":"3","typeID":"Label","zOrder":"3","measuredW":"5","measuredH":"28","x":"113","y":"8","properties":{"color":"16777215","size":"20","text":":"}},{"ID":"4","typeID":"Label","zOrder":"4","measuredW":"10","measuredH":"28","x":"120","y":"9","properties":{"color":"16777215","size":"20","text":"/"}},{"ID":"5","typeID":"Label","zOrder":"5","measuredW":"10","measuredH":"28","x":"128","y":"9","properties":{"color":"16777215","size":"20","text":"/"}}]}}},{"ID":"14232","typeID":"__group__","zOrder":"40","measuredW":"391","measuredH":"55","w":"391","h":"55","x":"690","y":"219","properties":{"controlName":"ext_link:roadmap.sh/java"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"391","h":"55","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"4273622","borderColor":"4273622"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"296","measuredH":"28","x":"48","y":"14","properties":{"size":"20","color":"16777215","text":"Learn Java / Visit Java Roadmap"}}]}}},{"ID":"14233","typeID":"Arrow","zOrder":"41","w":"1","h":"64","measuredW":"150","measuredH":"100","x":"897","y":"30","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":-0.3586399639038973,"y":0},"p1":{"x":0.32941176470588224,"y":0},"p2":{"x":-0.3586399639038973,"y":64},"stroke":"dotted"}},{"ID":"14237","typeID":"Canvas","zOrder":"42","w":"408","h":"202","measuredW":"100","measuredH":"70","x":"215","y":"40"},{"ID":"14238","typeID":"__group__","zOrder":"43","measuredW":"155","measuredH":"27","w":"155","h":"27","x":"250","y":"115","properties":{"controlName":"ext_link:roadmap.sh/java"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"122","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"Java Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"14239","typeID":"__group__","zOrder":"44","measuredW":"189","measuredH":"27","w":"189","h":"27","x":"250","y":"151","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"156","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"Backend Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"14240","typeID":"__group__","zOrder":"45","measuredW":"183","measuredH":"27","w":"183","h":"27","x":"250","y":"187","properties":{"controlName":"ext_link:roadmap.sh/devops"},"children":{"controls":{"control":[{"ID":"0","typeID":"Label","zOrder":"0","measuredW":"150","measuredH":"26","x":"33","y":"0","properties":{"size":"18","text":"DevOps Roadmap"}},{"ID":"1","typeID":"__group__","zOrder":"1","measuredW":"24","measuredH":"24","w":"24","h":"24","x":"0","y":"3","children":{"controls":{"control":[{"ID":"0","typeID":"Icon","zOrder":"0","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"16777215","icon":{"ID":"circle","size":"small"}}},{"ID":"1","typeID":"Icon","zOrder":"1","measuredW":"24","measuredH":"24","x":"0","y":"0","properties":{"color":"10066329","icon":{"ID":"check-circle","size":"small"}}}]}}}]}}},{"ID":"14243","typeID":"Label","zOrder":"46","measuredW":"209","measuredH":"32","x":"250","y":"67","properties":{"size":"24","text":"Related Roadmaps"}},{"ID":"14265","typeID":"Arrow","zOrder":"33","w":"146","h":"2","measuredW":"150","measuredH":"100","x":"411","y":"426","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":146.01679645265642,"y":2.0707373480713613},"p1":{"x":0.4642857142857146,"y":-0.003992113361953187},"p2":{"x":0.24143192912043787,"y":-0.11897394490631541}}},{"ID":"14280","typeID":"Arrow","zOrder":"32","w":"1","h":"112","measuredW":"150","measuredH":"100","x":"666","y":"431","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":0.24143192912038103,"y":111.61050470611792},"p1":{"x":0.46428571428571463,"y":-0.003992113361953184},"p2":{"x":0.24143192912043787,"y":-0.11897394490631541}}},{"ID":"14301","typeID":"Arrow","zOrder":"31","w":"177","h":"214","measuredW":"150","measuredH":"100","x":"440","y":"435","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":177.4682317265881,"y":0.25033397230828314},"p1":{"x":0.46461829054937476,"y":-0.1088245057213903},"p2":{"x":0.022661364670909734,"y":214.50946531263833}}},{"ID":"14302","typeID":"Arrow","zOrder":"30","w":"149","h":"109","measuredW":"150","measuredH":"100","x":"441","y":"314","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":148.8332898870765,"y":109.16004691752192},"p1":{"x":0.6360127761511841,"y":0.09156241682193235},"p2":{"x":0.2954774997014624,"y":0.347463424444868}}},{"ID":"14303","typeID":"Arrow","zOrder":"29","w":"116","h":"57","measuredW":"150","measuredH":"100","x":"434","y":"364","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":116.10806099277852,"y":57.43286305255248},"p1":{"x":0.5967446581465075,"y":0.06448697652928094},"p2":{"x":0.3867420398235595,"y":0.43579550855969273}}},{"ID":"14304","typeID":"Arrow","zOrder":"28","w":"119","h":"41","measuredW":"150","measuredH":"100","x":"434","y":"439","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":118.69883679023269,"y":-0.2952982977527654},"p1":{"x":0.4935153583617746,"y":-0.09488054607508538},"p2":{"x":-0.3404418251459447,"y":40.06584992139261}}},{"ID":"14305","typeID":"Arrow","zOrder":"27","w":"128","h":"93","measuredW":"150","measuredH":"100","x":"434","y":"439","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":127.33475611508015,"y":-0.2952982977527654},"p1":{"x":0.49351535836177457,"y":-0.09488054607508535},"p2":{"x":-0.476849892661221,"y":92.97263041059898}}},{"ID":"14306","typeID":"Arrow","zOrder":"26","w":"138","h":"145","measuredW":"150","measuredH":"100","x":"435","y":"442","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":138.4250431698665,"y":0.15906943218618608},"p1":{"x":0.49351535836177424,"y":-0.09488054607508524},"p2":{"x":0.25033397230828314,"y":145.24251408962232}}},{"ID":"14307","typeID":"Arrow","zOrder":"25","w":"281","h":"1","measuredW":"150","measuredH":"100","x":"739","y":"437","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":281.3020743683919,"y":0.8810260550936846},"p1":{"x":0.4642857142857147,"y":-0.003992113361953183},"p2":{"x":0.48803395698428176,"y":0.8810260550936846}}},{"ID":"14322","typeID":"Arrow","zOrder":"24","w":"148","h":"3","measuredW":"150","measuredH":"100","x":"1099","y":"434","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":148.01679645265642,"y":0.07073734807136134},"p1":{"x":0.46428571428571463,"y":-0.003992113361953189},"p2":{"x":-0.42272979529752774,"y":2.9775178372777873}}},{"ID":"14323","typeID":"Arrow","zOrder":"23","w":"138","h":"50","measuredW":"150","measuredH":"100","x":"1088","y":"375","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":138.38887621244385,"y":-0.201101301623396},"p1":{"x":0.4863185723727692,"y":0.052478519497686664},"p2":{"x":0.214167014885561,"y":49.88723078249143}}},{"ID":"14324","typeID":"Arrow","zOrder":"22","w":"161","measuredW":"150","measuredH":"100","x":"1061","y":"320","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":160.20732461753528,"y":-0.4709849806466764},"p1":{"x":0.5161401966326554,"y":0.0868716679471183},"p2":{"x":-0.42077482462605076,"y":99.70567918758297}}},{"ID":"14325","typeID":"Arrow","zOrder":"21","w":"164","h":"147","measuredW":"150","measuredH":"100","x":"1055","y":"271","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":164.48014075256583,"y":0.1678668002079462},"p1":{"x":0.5161401966326553,"y":0.08687166794711838},"p2":{"x":0.39767358046537993,"y":146.97849532261353}}},{"ID":"14327","typeID":"TextArea","zOrder":"20","w":"238","h":"55","measuredW":"200","measuredH":"140","x":"883","y":"503","properties":{"borderColor":"16777215"}},{"ID":"14328","typeID":"Label","zOrder":"64","measuredW":"107","measuredH":"28","x":"948","y":"517","properties":{"size":"20","text":"Spring Boot"}},{"ID":"14329","typeID":"Arrow","zOrder":"19","w":"1","h":"179","measuredW":"150","measuredH":"100","x":"1000","y":"431","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":178.58144672562196},"p1":{"x":0.4642857142857148,"y":-0.003992113361953182},"p2":{"x":0.48803395698428176,"y":-0.11897394490631541}}},{"ID":"14339","typeID":"Arrow","zOrder":"18","w":"537","h":"2","measuredW":"150","measuredH":"100","x":"786","y":"945","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":536.5558496625544,"y":1.8810260550936846},"p1":{"x":0.4642857142857152,"y":-0.0039921133619531856},"p2":{"x":-0.2750123853365949,"y":1.8810260550936846}}},{"ID":"14350","typeID":"Arrow","zOrder":"15","w":"146","h":"1","measuredW":"150","measuredH":"100","x":"1086","y":"828","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":146.7141818215698,"y":0.8543135727297795},"p1":{"x":0.46428571428571463,"y":-0.0039921133619531856},"p2":{"x":0.3878607219769492,"y":1.1528447227344714}}},{"ID":"14351","typeID":"Arrow","zOrder":"16","w":"119","h":"49","measuredW":"150","measuredH":"100","x":"1105","y":"767","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":119.2068375715935,"y":48.85431357272978},"p1":{"x":0.5272614687537527,"y":0.09288510762768885},"p2":{"x":0.10401807192488377,"y":-0.4882830771329054}}},{"ID":"14352","typeID":"Arrow","zOrder":"17","w":"124","h":"99","measuredW":"150","measuredH":"100","x":"1103","y":"712","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":124.60977527158389,"y":98.74990702274397},"p1":{"x":0.5272614687537526,"y":0.09288510762768905},"p2":{"x":0.40254922192957565,"y":0.06471372301859901}}},{"ID":"14355","typeID":"Arrow","zOrder":"14","w":"1","h":"131","measuredW":"150","measuredH":"100","x":"1324","y":"817","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":-0.2457271352116095,"y":131.1045059699236},"p1":{"x":0.4642857142857149,"y":-0.003992113361953185},"p2":{"x":-0.2457271352116095,"y":-0.11897394490631541}}},{"ID":"14356","typeID":"Arrow","zOrder":"13","w":"224","h":"1","measuredW":"150","measuredH":"100","x":"1001","y":"609","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":223.55584966255435,"y":0.8810260550936846},"p1":{"x":0.4642857142857149,"y":-0.003992113361953184},"p2":{"x":-0.2457271352116095,"y":0.8810260550936846}}},{"ID":"14363","typeID":"Arrow","zOrder":"12","w":"1","h":"98","measuredW":"150","measuredH":"100","x":"695","y":"957","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":97.58144672562196},"p1":{"x":0.46428571428571486,"y":-0.003992113361953183},"p2":{"x":0.48803395698428176,"y":0.0027856225734694817},"stroke":"dotted"}},{"ID":"14366","typeID":"Arrow","zOrder":"11","w":"1","h":"94","measuredW":"150","measuredH":"100","x":"695","y":"865","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":94.58144672562196},"p1":{"x":0.46428571428571475,"y":-0.003992113361953182},"p2":{"x":0.48803395698428176,"y":0.4641401455688765}}},{"ID":"14386","typeID":"Arrow","zOrder":"10","w":"148","h":"1","measuredW":"150","measuredH":"100","x":"502","y":"861","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":148.01679645265642,"y":1.0707373480713613},"p1":{"x":0.4642857142857146,"y":-0.003992113361953188},"p2":{"x":-0.10033385901039082,"y":0.6329018604571957}}},{"ID":"14387","typeID":"Arrow","zOrder":"9","w":"213","h":"1","measuredW":"150","measuredH":"100","x":"801","y":"964","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":212.98029127925827,"y":0.8810260550936846},"p1":{"x":0.46428571428571536,"y":-0.003992113361953186},"p2":{"x":-0.2750123853365949,"y":0.8810260550936846}}},{"ID":"14388","typeID":"Arrow","zOrder":"86","w":"1","h":"339","measuredW":"150","measuredH":"100","x":"1015","y":"965","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":338.4082071365567},"p1":{"x":0.46428571428571513,"y":-0.003992113361953183},"p2":{"x":0.48803395698428176,"y":-0.11897394490631541}}},{"ID":"14399","typeID":"Arrow","zOrder":"8","w":"158","h":"69","measuredW":"150","measuredH":"100","x":"1077","y":"1059","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":158.33326595602625,"y":0.3244612366651154},"p1":{"x":0.4049649217485163,"y":0.09325418240690724},"p2":{"x":0.39940241719568803,"y":69.30706829960263}}},{"ID":"14400","typeID":"Arrow","zOrder":"7","w":"152","h":"31","measuredW":"150","measuredH":"100","x":"1090","y":"1107","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":152.59459301528295,"y":-0.47691287816701333},"p1":{"x":0.4505529477035481,"y":0.05320032289534493},"p2":{"x":0.10672477089451604,"y":30.383727123673452}}},{"ID":"14401","typeID":"Arrow","zOrder":"6","w":"152","h":"24","measuredW":"150","measuredH":"100","x":"1090","y":"1151","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":152.59459301528295,"y":24.50569418477039},"p1":{"x":0.41508650519031215,"y":-0.06671280276816575},"p2":{"x":0.10672477089451604,"y":0.906381242186626}}},{"ID":"14402","typeID":"Arrow","zOrder":"5","w":"167","h":"65","measuredW":"150","measuredH":"100","x":"1074","y":"1159","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":166.7792612504686,"y":65.5196518347525},"p1":{"x":0.41475409836065563,"y":-0.08770491803278692},"p2":{"x":-0.23126111243277592,"y":0.16770830144309912}}},{"ID":"14403","typeID":"Arrow","zOrder":"92","w":"213","h":"1","measuredW":"150","measuredH":"100","x":"802","y":"1304","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":212.98029127925827,"y":0.8810260550936846},"p1":{"x":0.46428571428571536,"y":-0.003992113361953186},"p2":{"x":-0.2750123853365949,"y":0.8810260550936846}}},{"ID":"14414","typeID":"Arrow","zOrder":"4","w":"167","h":"1","measuredW":"150","measuredH":"100","x":"476","y":"1309","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":166.5351106266147,"y":0.6329018604571957},"p1":{"x":0.4642857142857147,"y":-0.003992113361953187},"p2":{"x":-0.10033385901039082,"y":0.6329018604571957}}},{"ID":"14415","typeID":"Arrow","zOrder":"3","w":"162","h":"42","measuredW":"150","measuredH":"100","x":"475","y":"1255","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":161.27378356735812,"y":42.054545959707184},"p1":{"x":0.5113609467455617,"y":0.06473372781065193},"p2":{"x":-0.2907435011008488,"y":0.3019153689817813}}},{"ID":"14416","typeID":"Arrow","zOrder":"2","w":"158","h":"87","measuredW":"150","measuredH":"100","x":"484","y":"1204","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":157.7197788618006,"y":87.60855066526483},"p1":{"x":0.5113609467455617,"y":0.06473372781065195},"p2":{"x":-0.2907435011008488,"y":0.3019153689817813}}},{"ID":"14417","typeID":"Arrow","zOrder":"1","w":"187","h":"138","measuredW":"150","measuredH":"100","x":"484","y":"1153","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","stroke":"dotted","p0":{"x":186.76508709882694,"y":138.60855066526483},"p1":{"x":0.531203407215966,"y":0.08221256395262982},"p2":{"x":-0.2907435011008488,"y":0.3019153689817813}}},{"ID":"14418","typeID":"Arrow","zOrder":"98","w":"1","h":"139","measuredW":"150","measuredH":"100","x":"711","y":"1555","properties":{"color":"2848996","curvature":"-1","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0,"y":0},"p1":{"x":0.4438624012549725,"y":-0.00008403832147459167},"p2":{"x":0,"y":139},"stroke":"dotted"}},{"ID":"14419","typeID":"TextArea","zOrder":"99","w":"443","h":"124","measuredW":"200","measuredH":"140","x":"483","y":"1486"},{"ID":"14420","typeID":"Label","zOrder":"100","measuredW":"303","measuredH":"25","x":"553","y":"1506","properties":{"size":"17","text":"Continue Learning with following Tracks"}},{"ID":"14421","typeID":"__group__","zOrder":"101","measuredW":"198","measuredH":"44","w":"198","h":"44","x":"707","y":"1541","properties":{"controlName":"ext_link:roadmap.sh/backend"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"198","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"147","measuredH":"25","x":"25","y":"9","properties":{"size":"17","text":"Backend Roadmap"}}]}}},{"ID":"14422","typeID":"__group__","zOrder":"102","measuredW":"185","measuredH":"44","w":"185","h":"44","x":"512","y":"1541","properties":{"controlName":"ext_link:roadmap.sh/java"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"185","h":"44","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"116","measuredH":"25","x":"35","y":"9","properties":{"size":"17","text":"Java Roadmap"}}]}}},{"ID":"14423","typeID":"Arrow","zOrder":"0","w":"1","h":"203","measuredW":"150","measuredH":"100","x":"711","y":"1313","properties":{"color":"2848996","direction":"bottom","leftArrow":"false","rightArrow":"false","p0":{"x":0.48803395698428176,"y":202.78634832628973},"p1":{"x":0.4642857142857151,"y":-0.003992113361953184},"p2":{"x":0.48803395698428176,"y":-0.11897394490631541}}},{"ID":"14438","typeID":"__group__","zOrder":"47","measuredW":"238","measuredH":"50","w":"238","h":"50","x":"518","y":"405","properties":{"controlName":"100-spring-core"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"50","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"98","measuredH":"26","x":"70","y":"12","properties":{"size":"18","text":"Spring Core"}}]}}},{"ID":"14439","typeID":"__group__","zOrder":"59","measuredW":"238","measuredH":"50","w":"238","h":"50","x":"882","y":"408","properties":{"controlName":"101-spring-security"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"50","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"123","measuredH":"26","x":"57","y":"12","properties":{"size":"18","text":"Spring Security"}}]}}},{"ID":"14440","typeID":"__group__","zOrder":"65","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"584","properties":{"controlName":"102-spring-boot-starters"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"165","measuredH":"26","x":"36","y":"11","properties":{"size":"18","text":"Spring Boot Starters"}}]}}},{"ID":"14441","typeID":"__group__","zOrder":"66","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"635","properties":{"controlName":"103-autconfiguration"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"142","measuredH":"26","x":"48","y":"11","properties":{"size":"18","text":"Autoconfiguration"}}]}}},{"ID":"14442","typeID":"__group__","zOrder":"67","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"686","properties":{"controlName":"104-spring-boot-actuators"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"77","measuredH":"26","x":"80","y":"11","properties":{"size":"18","text":"Actuators"}}]}}},{"ID":"14443","typeID":"__group__","zOrder":"68","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"738","properties":{"controlName":"105-embedded-server"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"148","measuredH":"26","x":"45","y":"11","properties":{"size":"18","text":"Embedded Server"}}]}}},{"ID":"14444","typeID":"__group__","zOrder":"69","measuredW":"240","measuredH":"47","w":"240","h":"47","x":"1212","y":"790","properties":{"controlName":"106-hibernate"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"240","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"82","measuredH":"26","x":"79","y":"11","properties":{"size":"18","text":"Hibernate"}}]}}},{"ID":"14445","typeID":"__group__","zOrder":"73","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"578","y":"932","properties":{"controlName":"107-spring-data"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"97","measuredH":"26","x":"70","y":"11","properties":{"size":"18","text":"Spring Data"}}]}}},{"ID":"14446","typeID":"__group__","zOrder":"77","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"577","y":"838","properties":{"controlName":"108-microservices"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"114","measuredH":"26","x":"70","y":"11","properties":{"size":"18","text":"Microservices"}}]}}},{"ID":"14447","typeID":"__group__","zOrder":"87","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"919","y":"1117","properties":{"controlName":"109-spring-mvc"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"97","measuredH":"26","x":"48","y":"11","properties":{"size":"18","text":"Spring MVC"}}]}}},{"ID":"14448","typeID":"__group__","zOrder":"93","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"622","y":"1281","properties":{"controlName":"110-testing"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16776960"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"59","measuredH":"26","x":"67","y":"11","properties":{"size":"18","text":"Testing"}}]}}},{"ID":"14449","typeID":"__group__","zOrder":"52","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"294","properties":{"controlName":"101-spring-core:configuration"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"109","measuredH":"26","x":"64","y":"11","properties":{"size":"18","text":"Configuration"}}]}}},{"ID":"14450","typeID":"__group__","zOrder":"53","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"345","properties":{"controlName":"102-spring-core:dependency-injection"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"178","measuredH":"26","x":"30","y":"11","properties":{"size":"18","text":"Dependency Injection"}}]}}},{"ID":"14451","typeID":"__group__","zOrder":"54","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"397","properties":{"controlName":"103-spring-core:spring-ioc"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"90","measuredH":"26","x":"74","y":"11","properties":{"size":"18","text":"Spring IOC"}}]}}},{"ID":"14452","typeID":"__group__","zOrder":"55","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"449","properties":{"controlName":"104-spring-core:spring-aop"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"93","measuredH":"26","x":"72","y":"11","properties":{"size":"18","text":"Spring AOP"}}]}}},{"ID":"14453","typeID":"__group__","zOrder":"56","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"501","properties":{"controlName":"105-spring-core:spring-mvc"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"97","measuredH":"26","x":"70","y":"11","properties":{"size":"18","text":"Spring MVC"}}]}}},{"ID":"14454","typeID":"__group__","zOrder":"57","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"553","properties":{"controlName":"106-spring-core:annotations"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"96","measuredH":"26","x":"71","y":"11","properties":{"size":"18","text":"Annotations"}}]}}},{"ID":"14455","typeID":"__group__","zOrder":"58","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"209","y":"605","properties":{"controlName":"107-spring-core:spring-bean-scope"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"158","measuredH":"26","x":"40","y":"11","properties":{"size":"18","text":"Spring Bean Scope"}}]}}},{"ID":"14456","typeID":"__group__","zOrder":"48","measuredW":"180","measuredH":"215","w":"180","h":"215","x":"577","y":"502","properties":{"controlName":"100-spring-core:introduction"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"180","h":"215","measuredW":"200","measuredH":"140","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"98","measuredH":"26","x":"41","y":"15","properties":{"size":"18","text":"Introduction"}}]}}},{"ID":"14457","typeID":"__group__","zOrder":"49","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"548","y":"553","properties":{"controlName":"100-spring-core:introduction:terminology"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"99","measuredH":"26","x":"69","y":"11","properties":{"size":"18","text":"Terminology"}}]}}},{"ID":"14458","typeID":"__group__","zOrder":"50","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"548","y":"605","properties":{"controlName":"101-spring-core:introduction:architecture"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"99","measuredH":"26","x":"69","y":"11","properties":{"size":"18","text":"Architecture"}}]}}},{"ID":"14459","typeID":"__group__","zOrder":"51","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"548","y":"656","properties":{"controlName":"102-spring-core:introduction:why-spring"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"99","measuredH":"26","x":"69","y":"11","properties":{"size":"18","text":"Why Spring?"}}]}}},{"ID":"14460","typeID":"__group__","zOrder":"60","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"255","properties":{"controlName":"100-spring-security:authentication"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"117","measuredH":"26","x":"60","y":"11","properties":{"size":"18","text":"Authentication"}}]}}},{"ID":"14461","typeID":"__group__","zOrder":"61","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"306","properties":{"controlName":"101-spring-security:authorization"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"106","measuredH":"26","x":"66","y":"11","properties":{"size":"18","text":"Authorization"}}]}}},{"ID":"14462","typeID":"__group__","zOrder":"62","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"357","properties":{"controlName":"102-spring-security:oauth2"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"61","measuredH":"26","x":"88","y":"11","properties":{"size":"18","text":"OAuth2"}}]}}},{"ID":"14463","typeID":"__group__","zOrder":"63","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"1212","y":"409","properties":{"controlName":"103-spring-security:jwt-authentication"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"159","measuredH":"26","x":"39","y":"11","properties":{"size":"18","text":"JWT Authentication"}}]}}},{"ID":"14464","typeID":"__group__","zOrder":"70","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"919","y":"692","properties":{"controlName":"100-hibernate:transactions"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"26","x":"46","y":"11","properties":{"size":"18","text":"Transactions"}}]}}},{"ID":"14465","typeID":"__group__","zOrder":"71","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"919","y":"744","properties":{"controlName":"101-hibernate:relationships"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"111","measuredH":"26","x":"43","y":"11","properties":{"size":"18","text":"Relationships"}}]}}},{"ID":"14466","typeID":"__group__","zOrder":"72","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"919","y":"796","properties":{"controlName":"102-hibernate:entity-lifecycle"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"121","measuredH":"26","x":"38","y":"11","properties":{"size":"18","text":"Entity Lifecycle"}}]}}},{"ID":"14467","typeID":"__group__","zOrder":"74","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"577","y":"1023","properties":{"controlName":"100-spring-data:spring-data-jpa"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"131","measuredH":"26","x":"53","y":"11","properties":{"size":"18","text":"Spring Data JPA"}}]}}},{"ID":"14468","typeID":"__group__","zOrder":"75","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"577","y":"1075","properties":{"controlName":"101-spring-data:spring-data-mongodb"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"183","measuredH":"26","x":"27","y":"11","properties":{"size":"18","text":"Spring Data MongoDB"}}]}}},{"ID":"14469","typeID":"__group__","zOrder":"76","measuredW":"238","measuredH":"47","w":"238","h":"47","x":"577","y":"1127","properties":{"controlName":"102-spring-data:spring-data-jdbc"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"238","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"148","measuredH":"26","x":"45","y":"11","properties":{"size":"18","text":"Spring Data JDBC"}}]}}},{"ID":"14470","typeID":"__group__","zOrder":"78","measuredW":"153","measuredH":"323","w":"153","h":"323","x":"360","y":"757","properties":{"controlName":"100-microservices:spring-cloud"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"153","h":"323","measuredW":"200","measuredH":"140","x":"0","y":"0"},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"26","x":"24","y":"14","properties":{"size":"18","text":"Spring Cloud"}}]}}},{"ID":"14471","typeID":"__group__","zOrder":"79","measuredW":"284","measuredH":"47","w":"284","h":"47","x":"210","y":"806","properties":{"controlName":"100-microservices:spring-cloud:spring-cloud-gateway"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"180","measuredH":"26","x":"52","y":"11","properties":{"size":"18","text":"Spring Cloud Gateway"}}]}}},{"ID":"14472","typeID":"__group__","zOrder":"80","measuredW":"284","measuredH":"47","w":"284","h":"47","x":"210","y":"858","properties":{"controlName":"101-microservices:spring-cloud:cloud-config"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"105","measuredH":"26","x":"89","y":"11","properties":{"size":"18","text":"Cloud Config"}}]}}},{"ID":"14473","typeID":"__group__","zOrder":"81","measuredW":"284","measuredH":"47","w":"284","h":"47","x":"210","y":"911","properties":{"controlName":"102-microservices:spring-cloud:spring-cloud-circuit-breaker"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"232","measuredH":"26","x":"26","y":"11","properties":{"size":"18","text":"Spring Cloud Circuit Breaker"}}]}}},{"ID":"14474","typeID":"__group__","zOrder":"82","measuredW":"284","measuredH":"47","w":"284","h":"47","x":"210","y":"963","properties":{"controlName":"103-microservices:spring-cloud:spring-cloud-openfeign"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"284","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"201","measuredH":"26","x":"41","y":"11","properties":{"size":"18","text":"Spring Cloud OpenFeign"}}]}}},{"ID":"14475","typeID":"__group__","zOrder":"83","measuredW":"91","measuredH":"47","w":"91","h":"47","x":"210","y":"1017","properties":{"controlName":"104-microservices:spring-cloud:hystrix"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"91","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"55","measuredH":"26","x":"20","y":"11","properties":{"size":"18","text":"Hystrix"}}]}}},{"ID":"14476","typeID":"__group__","zOrder":"84","measuredW":"91","measuredH":"47","w":"91","h":"47","x":"307","y":"1017","properties":{"controlName":"105-microservices:spring-cloud:sleuth"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"91","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"51","measuredH":"26","x":"20","y":"11","properties":{"size":"18","text":"Sleuth"}}]}}},{"ID":"14477","typeID":"__group__","zOrder":"85","measuredW":"91","measuredH":"47","w":"91","h":"47","x":"403","y":"1017","properties":{"controlName":"106-microservices:spring-cloud:eureka"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"91","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"57","measuredH":"26","x":"17","y":"11","properties":{"size":"18","text":"Eureka"}}]}}},{"ID":"14478","typeID":"__group__","zOrder":"88","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"1229","y":"1040","properties":{"controlName":"100-spring-mvc:servlet"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"57","measuredH":"26","x":"68","y":"11","properties":{"size":"18","text":"Servlet"}}]}}},{"ID":"14479","typeID":"__group__","zOrder":"89","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"1229","y":"1092","properties":{"controlName":"101-spring-mvc:jsp-files"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"76","measuredH":"26","x":"59","y":"11","properties":{"size":"18","text":"JSP Files"}}]}}},{"ID":"14480","typeID":"__group__","zOrder":"90","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"1229","y":"1144","properties":{"controlName":"102-spring-mvc:architecture"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"99","measuredH":"26","x":"47","y":"11","properties":{"size":"18","text":"Architecture"}}]}}},{"ID":"14481","typeID":"__group__","zOrder":"91","measuredW":"193","measuredH":"47","w":"193","h":"47","x":"1229","y":"1197","properties":{"controlName":"103-spring-mvc:components"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"193","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"104","measuredH":"26","x":"45","y":"11","properties":{"size":"18","text":"Components"}}]}}},{"ID":"14482","typeID":"__group__","zOrder":"94","measuredW":"273","measuredH":"47","w":"273","h":"47","x":"216","y":"1129","properties":{"controlName":"100-testing:jpa-test"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"70","measuredH":"26","x":"102","y":"11","properties":{"size":"18","text":"JPA Test"}}]}}},{"ID":"14483","typeID":"__group__","zOrder":"95","measuredW":"273","measuredH":"47","w":"273","h":"47","x":"216","y":"1181","properties":{"controlName":"101-testing:mock-mvc"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"84","measuredH":"26","x":"95","y":"11","properties":{"size":"18","text":"MockMVC"}}]}}},{"ID":"14484","typeID":"__group__","zOrder":"96","measuredW":"273","measuredH":"47","w":"273","h":"47","x":"216","y":"1234","properties":{"controlName":"102-testing:spring-boot-test-annotation"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"234","measuredH":"26","x":"20","y":"11","properties":{"size":"18","text":"@SpringBootTest Annotation"}}]}}},{"ID":"14485","typeID":"__group__","zOrder":"97","measuredW":"273","measuredH":"47","w":"273","h":"47","x":"216","y":"1286","properties":{"controlName":"103-testing:mockbean-annotation"},"children":{"controls":{"control":[{"ID":"0","typeID":"TextArea","zOrder":"0","w":"273","h":"47","measuredW":"200","measuredH":"140","x":"0","y":"0","properties":{"color":"16770457"}},{"ID":"1","typeID":"Label","zOrder":"1","measuredW":"194","measuredH":"26","x":"40","y":"11","properties":{"size":"18","text":"@Mockbean Annotation"}}]}}}]},"attributes":{"name":"New Wireframe 1 copy 4","order":1000019.1097559511,"parentID":null,"notes":""},"branchID":"Master","resourceID":"E1CB7BE6-6915-47A7-A0F5-139EC887D1A8","mockupH":"1664","mockupW":"1291","measuredW":"1500","measuredH":"1694","version":"1.0"},"groupOffset":{"x":0,"y":0},"dependencies":[],"projectID":"file:///Users/kamranahmed/Desktop/devops%20roadmap%5C.bmpr"}
\ No newline at end of file