From 7921acb6669fab144d9e71fa00dfc480acb33893 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Thu, 28 Nov 2019 00:19:03 +0400 Subject: [PATCH] Add roadmaps meta generator --- components/roadmap-summary/index.js | 136 ++++++-------- package.json | 5 +- scripts/path-map.js | 1 - scripts/roadmaps-meta.js | 76 ++++++++ static/sitemap.xml | 170 ++++++++++++++--- storage/roadmaps.json | 172 ++++++++++++++++-- .../landscape/1-Junior.md | 0 .../landscape/2-Intermediate.md | 0 .../landscape/3-Senior.md | 0 .../learn/1-Job-Ready.md | 0 .../learn/2-Write-Better-CSS.md | 0 .../learn/3-Build-Tools.md | 0 .../learn/4-Modern-Frontend-Applications.md | 0 .../learn/5-Automated-Testing.md | 0 .../learn/6-Static-Type-Checkers.md | 0 .../learn/7-Server-Side-Rendering.md | 0 .../learn/8-Go-Beyond.md | 0 .../{frontend => 1-frontend}/meta.json | 1 - .../{frontend => 1-frontend}/summary.md | 0 .../roadmaps/2-backend/landscape/1-Junior.md | 0 .../2-backend/landscape/2-Intermediate.md | 0 .../roadmaps/2-backend/landscape/3-Senior.md | 0 storage/roadmaps/2-backend/meta.json | 6 + storage/roadmaps/2-backend/summary.md | 2 + .../roadmaps/3-devops/landscape/1-Junior.md | 0 .../3-devops/landscape/2-Intermediate.md | 0 .../roadmaps/3-devops/landscape/3-Senior.md | 0 storage/roadmaps/3-devops/meta.json | 11 ++ storage/roadmaps/3-devops/summary.md | 2 + .../4-fullstack/landscape/1-Junior.md | 0 .../4-fullstack/landscape/2-Intermediate.md | 0 .../4-fullstack/landscape/3-Senior.md | 0 storage/roadmaps/4-fullstack/meta.json | 6 + storage/roadmaps/4-fullstack/summary.md | 2 + storage/roadmaps/5-qa/landscape/1-Junior.md | 0 .../roadmaps/5-qa/landscape/2-Intermediate.md | 0 storage/roadmaps/5-qa/landscape/3-Senior.md | 0 storage/roadmaps/5-qa/meta.json | 6 + storage/roadmaps/5-qa/summary.md | 2 + 39 files changed, 469 insertions(+), 129 deletions(-) create mode 100644 scripts/roadmaps-meta.js rename storage/roadmaps/{frontend => 1-frontend}/landscape/1-Junior.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/landscape/2-Intermediate.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/landscape/3-Senior.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/1-Job-Ready.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/2-Write-Better-CSS.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/3-Build-Tools.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/4-Modern-Frontend-Applications.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/5-Automated-Testing.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/6-Static-Type-Checkers.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/7-Server-Side-Rendering.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/learn/8-Go-Beyond.md (100%) rename storage/roadmaps/{frontend => 1-frontend}/meta.json (83%) rename storage/roadmaps/{frontend => 1-frontend}/summary.md (100%) create mode 100644 storage/roadmaps/2-backend/landscape/1-Junior.md create mode 100644 storage/roadmaps/2-backend/landscape/2-Intermediate.md create mode 100644 storage/roadmaps/2-backend/landscape/3-Senior.md create mode 100644 storage/roadmaps/2-backend/meta.json create mode 100644 storage/roadmaps/2-backend/summary.md create mode 100644 storage/roadmaps/3-devops/landscape/1-Junior.md create mode 100644 storage/roadmaps/3-devops/landscape/2-Intermediate.md create mode 100644 storage/roadmaps/3-devops/landscape/3-Senior.md create mode 100644 storage/roadmaps/3-devops/meta.json create mode 100644 storage/roadmaps/3-devops/summary.md create mode 100644 storage/roadmaps/4-fullstack/landscape/1-Junior.md create mode 100644 storage/roadmaps/4-fullstack/landscape/2-Intermediate.md create mode 100644 storage/roadmaps/4-fullstack/landscape/3-Senior.md create mode 100644 storage/roadmaps/4-fullstack/meta.json create mode 100644 storage/roadmaps/4-fullstack/summary.md create mode 100644 storage/roadmaps/5-qa/landscape/1-Junior.md create mode 100644 storage/roadmaps/5-qa/landscape/2-Intermediate.md create mode 100644 storage/roadmaps/5-qa/landscape/3-Senior.md create mode 100644 storage/roadmaps/5-qa/meta.json create mode 100644 storage/roadmaps/5-qa/summary.md diff --git a/components/roadmap-summary/index.js b/components/roadmap-summary/index.js index 99bb76379..0385862f5 100644 --- a/components/roadmap-summary/index.js +++ b/components/roadmap-summary/index.js @@ -1,93 +1,71 @@ -import Link from 'next/link'; -import classNames from 'classnames'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { faEnvelope, faClock, faHandshake, faArrowLeft } from '@fortawesome/free-solid-svg-icons'; -import { - SummaryContainer, - Title, - Description, - Image, - Header, - Summary, - VersionLink, - VersionList, -} from './style'; +import { faArrowLeft, faClock, faEnvelope, faHandshake } from '@fortawesome/free-solid-svg-icons'; +import { Description, Header, Summary, SummaryContainer, Title, VersionList } from './style'; import SharePage from 'components/share-page'; -import { BadgeLink, BadgesList, PrimaryBadge, SecondaryBadge, DarkBadge } from 'components/badges'; +import { BadgeLink, BadgesList, DarkBadge, PrimaryBadge, SecondaryBadge } from 'components/badges'; import GuideBody from 'components/guide-body'; import siteConfig from "storage/site"; -const isActiveRoadmap = (loadedVersion, roadmapVersion) => ( - (loadedVersion === roadmapVersion) || - (loadedVersion === 'latest' && parseInt(roadmapVersion, 10) === (new Date()).getFullYear()) -); - const UpcomingGuide = require(`../../storage/guides/upcoming.md`).default; -const RoadmapSummary = ({ roadmap }) => ( - -
- { roadmap.title } - { roadmap.description } +const RoadmapSummary = ({ roadmap }) => { + return ( + +
+ { roadmap.title } + { roadmap.description } - - - - - Other Roadmaps - - - { roadmap.upcoming && ( - - - Upcoming Roadmap - - ) } - { !roadmap.upcoming && ( - + + + + + Other Roadmaps + + + { roadmap.upcoming && ( - - Suggest Changes + + Upcoming Roadmap - - ) } + ) } + { !roadmap.upcoming && ( + + + + Suggest Changes + + + ) } - - - - Send me Updates - - - + + + + Send me Updates + + + - - { (roadmap.versions || []).map(versionItem => ( - - { versionItem } Version - - )) } - -
- - { - roadmap.upcoming && ( - - - - ) - } - { - !roadmap.upcoming && ( -
- - -
- ) - } -
-
-); + +
+ + { + roadmap.upcoming && ( + + + + ) + } + { + !roadmap.upcoming && ( +
+

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut beatae blanditiis commodi, consequatur, dicta distinctio esse et id, ipsa labore libero nisi odit placeat possimus saepe sed vel vitae voluptate?

+ +
+ ) + } +
+
+ ) +}; export default RoadmapSummary; diff --git a/package.json b/package.json index f39b3ba4b..7ca085a45 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,12 @@ "scripts": { "dev": "NODE_ENV=dev next", "serve:out": "serve out", - "sitemap": "node scripts/sitemap.js", "build": "./scripts/build.sh", "deploy": "NODE_DEBUG=gh-pages gh-pages -d out -t", "test": "jest", - "test:watch": "jest --watch" + "test:watch": "jest --watch", + "meta:sitemap": "node scripts/sitemap.js", + "meta:roadmaps": "node scripts/roadmaps-meta.js" }, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.22", diff --git a/scripts/path-map.js b/scripts/path-map.js index d2210dad5..085e4eebb 100644 --- a/scripts/path-map.js +++ b/scripts/path-map.js @@ -3,7 +3,6 @@ const glob = require('glob'); const fs = require('fs'); const guides = require('../storage/guides.json'); -const roadmaps = require('../storage/roadmaps'); const PAGES_PATH = path.join(__dirname, '../pages'); const ROADMAPS_PATH = path.join(__dirname, '../storage/roadmaps'); diff --git a/scripts/roadmaps-meta.js b/scripts/roadmaps-meta.js new file mode 100644 index 000000000..3ce2c4f70 --- /dev/null +++ b/scripts/roadmaps-meta.js @@ -0,0 +1,76 @@ +const fs = require('fs'); +const path = require('path'); + +const STORAGE_PATH = path.join(__dirname, '../storage'); +const ROADMAPS_PATH = path.join(__dirname, '../storage/roadmaps'); +const META_FILE_PATH = path.join(__dirname, '../storage/roadmaps.json'); + +const roadmapDirs = fs.readdirSync(ROADMAPS_PATH); +console.log(`[x] ${roadmapDirs.length} roadmaps found`); + +const roadmapsMeta = roadmapDirs.reduce((metaAcc, roadmapDirName) => { + const roadmapSlug = roadmapDirName.replace(/^\d+-/, ''); + const roadmapDir = path.join(ROADMAPS_PATH, roadmapDirName); + const roadmapMeta = require(path.join(roadmapDir, 'meta.json')); + + console.log(`----------------------------`); + console.log(`[#] Roadmap: ${roadmapMeta.title}`); + console.log(`[x] Generating sidebar`); + + // Get all the directories in the roadmap dir + // these are going to be the parent menu items + const menuDirs = fs.readdirSync(roadmapDir) + .map(dirPath => path.join(roadmapDir, dirPath)) + .filter(dirPath => fs.lstatSync(dirPath).isDirectory()); + + // Read the files inside each of the menu dirs and prepare menu items + // for the sidebar i.e. of the format below + // { + // landscape: [{ title: "Junior", path: "/path/to/file.md"}, ...], + // learn: [{ title: "Job Ready", path: "/path/to/file.md"}, ...], + // } + const sidebar = menuDirs.reduce((menus, menuDir) => { + const menuItemName = path.basename(menuDir); + const pageFiles = fs.readdirSync(menuDir) + .filter(pageFileName => pageFileName.endsWith('.md')) + // Sort by the titles `1-something.md, 2-another.md` + .sort((a, b) => parseInt(a, 10) - parseInt(b, 10)); + + return { + ...menus, + [menuItemName]: [ + ...(menus[menuItemName] || []), + ...pageFiles.map(pageFile => { + const pageFileName = path.basename(pageFile, '.md'); + const pageSlug = pageFileName.replace(/^\d+-/, '').toLowerCase(); + + return { + // Use the filename and remove the number from the beginning to generate slug + url: `/${roadmapSlug}/${pageSlug}`, + // Remove the number and replace the dashes to generate title + title: pageFileName.replace(/^\d+-/, '').replace(/-/g, ' '), + // Remove "STORAGE_PATH" because we don't want to push the absolute path while development + path: path.join(menuDir, pageFile).replace(STORAGE_PATH, ''), + } + }), + ], + }; + }, {}); + + return [ + ...metaAcc, + { + ...roadmapMeta, + url: `/${roadmapSlug}`, + path: path.join(roadmapDir.replace(STORAGE_PATH, ''), '/summary.md'), + sidebar, + }, + ]; +}, []); + +console.log(`----------------------------`); +console.log(`[x] Meta generated for ${roadmapsMeta.length} roadmaps`); +console.log(`[x] Writing file ${META_FILE_PATH}`); +fs.writeFileSync(META_FILE_PATH, JSON.stringify(roadmapsMeta, null, 2)); +console.log(`[x] Wrote file with content`); +console.log(JSON.stringify(roadmapsMeta, null, 2)); diff --git a/static/sitemap.xml b/static/sitemap.xml index 7f308e870..de78a6ab6 100644 --- a/static/sitemap.xml +++ b/static/sitemap.xml @@ -1,87 +1,201 @@ - https://roadmap.sh/frontend + https://roadmap.sh/1-frontend monthly - 2019-11-16T09:32:19.372Z + 2019-11-27T20:16:53.144Z 1.0 - https://roadmap.sh/frontend/latest + https://roadmap.sh/1-frontend/junior monthly - 2019-11-16T09:32:19.372Z + 2019-11-27T20:16:53.144Z 1.0 - https://roadmap.sh/frontend/2018 + https://roadmap.sh/1-frontend/intermediate monthly - 2019-11-16T09:32:19.349Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/frontend/2017 + https://roadmap.sh/1-frontend/senior monthly - 2019-11-16T09:32:19.335Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/backend + https://roadmap.sh/1-frontend/job-ready monthly - 2019-11-16T09:32:19.367Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/backend/latest + https://roadmap.sh/1-frontend/write-better-css monthly - 2019-11-16T09:32:19.367Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/backend/2018 + https://roadmap.sh/1-frontend/build-tools monthly - 2019-11-16T09:32:19.341Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/backend/2017 + https://roadmap.sh/1-frontend/modern-frontend-applications monthly - 2019-11-16T09:32:19.331Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/devops + https://roadmap.sh/1-frontend/automated-testing monthly - 2019-11-16T09:32:19.369Z + 2019-11-27T20:16:53.145Z 1.0 - https://roadmap.sh/devops/latest + https://roadmap.sh/1-frontend/static-type-checkers monthly - 2019-11-16T09:32:19.369Z + 2019-11-27T20:16:53.146Z 1.0 - https://roadmap.sh/devops/2018 + https://roadmap.sh/1-frontend/server-side-rendering monthly - 2019-11-16T09:32:19.343Z + 2019-11-27T20:16:53.146Z 1.0 - https://roadmap.sh/devops/2017 + https://roadmap.sh/1-frontend/go-beyond monthly - 2019-11-16T09:32:19.333Z + 2019-11-27T20:16:53.146Z 1.0 - https://roadmap.sh/fullstack + https://roadmap.sh/1-frontend/summary monthly - 2019-11-16T12:14:26.816Z + 2019-11-27T20:16:53.146Z 1.0 - https://roadmap.sh/qa-engineer + https://roadmap.sh/2-backend monthly - 2019-11-16T12:14:26.817Z + 2019-11-27T20:16:53.146Z + 1.0 + + + https://roadmap.sh/2-backend/junior + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/2-backend/intermediate + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/2-backend/senior + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/2-backend/summary + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/3-devops + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/3-devops/junior + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/3-devops/intermediate + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/3-devops/senior + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/3-devops/summary + monthly + 2019-11-27T20:16:53.148Z + 1.0 + + + https://roadmap.sh/4-fullstack + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/4-fullstack/junior + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/4-fullstack/intermediate + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/4-fullstack/senior + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/4-fullstack/summary + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/5-qa + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/5-qa/junior + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/5-qa/intermediate + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/5-qa/senior + monthly + 2019-11-27T20:16:53.149Z + 1.0 + + + https://roadmap.sh/5-qa/summary + monthly + 2019-11-27T20:16:53.149Z 1.0 diff --git a/storage/roadmaps.json b/storage/roadmaps.json index 3bfb83eca..bdf4b84df 100644 --- a/storage/roadmaps.json +++ b/storage/roadmaps.json @@ -3,51 +3,187 @@ "title": "Frontend Developer", "description": "Step by step guide to becoming a modern frontend developer", "featuredDescription": "Step by step guide to becoming a modern frontend developer in 2019", - "url": "/frontend", - "picture": "/static/roadmaps/{version}/frontend.png", "featured": true, "versions": [ "latest", "2018", "2017" - ] + ], + "url": "/frontend", + "path": "/roadmaps/1-frontend/summary.md", + "sidebar": { + "landscape": [ + { + "url": "/frontend/junior", + "title": "Junior", + "path": "/roadmaps/1-frontend/landscape/1-Junior.md" + }, + { + "url": "/frontend/intermediate", + "title": "Intermediate", + "path": "/roadmaps/1-frontend/landscape/2-Intermediate.md" + }, + { + "url": "/frontend/senior", + "title": "Senior", + "path": "/roadmaps/1-frontend/landscape/3-Senior.md" + } + ], + "learn": [ + { + "url": "/frontend/job-ready", + "title": "Job Ready", + "path": "/roadmaps/1-frontend/learn/1-Job-Ready.md" + }, + { + "url": "/frontend/write-better-css", + "title": "Write Better CSS", + "path": "/roadmaps/1-frontend/learn/2-Write-Better-CSS.md" + }, + { + "url": "/frontend/build-tools", + "title": "Build Tools", + "path": "/roadmaps/1-frontend/learn/3-Build-Tools.md" + }, + { + "url": "/frontend/modern-frontend-applications", + "title": "Modern Frontend Applications", + "path": "/roadmaps/1-frontend/learn/4-Modern-Frontend-Applications.md" + }, + { + "url": "/frontend/automated-testing", + "title": "Automated Testing", + "path": "/roadmaps/1-frontend/learn/5-Automated-Testing.md" + }, + { + "url": "/frontend/static-type-checkers", + "title": "Static Type Checkers", + "path": "/roadmaps/1-frontend/learn/6-Static-Type-Checkers.md" + }, + { + "url": "/frontend/server-side-rendering", + "title": "Server Side Rendering", + "path": "/roadmaps/1-frontend/learn/7-Server-Side-Rendering.md" + }, + { + "url": "/frontend/go-beyond", + "title": "Go Beyond", + "path": "/roadmaps/1-frontend/learn/8-Go-Beyond.md" + } + ] + } }, { "title": "Backend Developer", "description": "Step by step guide to becoming a modern backend developer", "featuredDescription": "Step by step guide to becoming a modern backend developer in 2019", - "url": "/backend", - "picture": "/static/roadmaps/{version}/backend.png", "featured": true, - "versions": [ - "latest", - "2018", - "2017" - ] + "url": "/backend", + "path": "/roadmaps/2-backend/summary.md", + "sidebar": { + "landscape": [ + { + "url": "/backend/junior", + "title": "Junior", + "path": "/roadmaps/2-backend/landscape/1-Junior.md" + }, + { + "url": "/backend/intermediate", + "title": "Intermediate", + "path": "/roadmaps/2-backend/landscape/2-Intermediate.md" + }, + { + "url": "/backend/senior", + "title": "Senior", + "path": "/roadmaps/2-backend/landscape/3-Senior.md" + } + ] + } }, { "title": "DevOps Roadmap", "description": "Step by step guide for DevOps or any other Operations Role", "featuredDescription": "Step by step guide to become an SRE or for any operations role in 2019", - "url": "/devops", - "picture": "/static/roadmaps/{version}/devops.png", "featured": true, "versions": [ "latest", "2018", "2017" - ] + ], + "url": "/devops", + "path": "/roadmaps/3-devops/summary.md", + "sidebar": { + "landscape": [ + { + "url": "/devops/junior", + "title": "Junior", + "path": "/roadmaps/3-devops/landscape/1-Junior.md" + }, + { + "url": "/devops/intermediate", + "title": "Intermediate", + "path": "/roadmaps/3-devops/landscape/2-Intermediate.md" + }, + { + "url": "/devops/senior", + "title": "Senior", + "path": "/roadmaps/3-devops/landscape/3-Senior.md" + } + ] + } }, { "title": "Full Stack Developer", - "description": "Step by step guide to becoming a modern full stack developer in 2019", + "description": "Step by step guide to becoming a modern fullstack developer in 2019", + "featuredDescription": "Step by step guide to becoming a modern fullstack developer in 2019", + "upcoming": true, "url": "/fullstack", - "upcoming": true + "path": "/roadmaps/4-fullstack/summary.md", + "sidebar": { + "landscape": [ + { + "url": "/fullstack/junior", + "title": "Junior", + "path": "/roadmaps/4-fullstack/landscape/1-Junior.md" + }, + { + "url": "/fullstack/intermediate", + "title": "Intermediate", + "path": "/roadmaps/4-fullstack/landscape/2-Intermediate.md" + }, + { + "url": "/fullstack/senior", + "title": "Senior", + "path": "/roadmaps/4-fullstack/landscape/3-Senior.md" + } + ] + } }, { "title": "QA Engineer", "description": "Steps to follow in order to become a modern QA Engineer in 2019", - "url": "/qa-engineer", - "upcoming": true + "featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2019", + "upcoming": true, + "url": "/qa", + "path": "/roadmaps/5-qa/summary.md", + "sidebar": { + "landscape": [ + { + "url": "/qa/junior", + "title": "Junior", + "path": "/roadmaps/5-qa/landscape/1-Junior.md" + }, + { + "url": "/qa/intermediate", + "title": "Intermediate", + "path": "/roadmaps/5-qa/landscape/2-Intermediate.md" + }, + { + "url": "/qa/senior", + "title": "Senior", + "path": "/roadmaps/5-qa/landscape/3-Senior.md" + } + ] + } } -] +] \ No newline at end of file diff --git a/storage/roadmaps/frontend/landscape/1-Junior.md b/storage/roadmaps/1-frontend/landscape/1-Junior.md similarity index 100% rename from storage/roadmaps/frontend/landscape/1-Junior.md rename to storage/roadmaps/1-frontend/landscape/1-Junior.md diff --git a/storage/roadmaps/frontend/landscape/2-Intermediate.md b/storage/roadmaps/1-frontend/landscape/2-Intermediate.md similarity index 100% rename from storage/roadmaps/frontend/landscape/2-Intermediate.md rename to storage/roadmaps/1-frontend/landscape/2-Intermediate.md diff --git a/storage/roadmaps/frontend/landscape/3-Senior.md b/storage/roadmaps/1-frontend/landscape/3-Senior.md similarity index 100% rename from storage/roadmaps/frontend/landscape/3-Senior.md rename to storage/roadmaps/1-frontend/landscape/3-Senior.md diff --git a/storage/roadmaps/frontend/learn/1-Job-Ready.md b/storage/roadmaps/1-frontend/learn/1-Job-Ready.md similarity index 100% rename from storage/roadmaps/frontend/learn/1-Job-Ready.md rename to storage/roadmaps/1-frontend/learn/1-Job-Ready.md diff --git a/storage/roadmaps/frontend/learn/2-Write-Better-CSS.md b/storage/roadmaps/1-frontend/learn/2-Write-Better-CSS.md similarity index 100% rename from storage/roadmaps/frontend/learn/2-Write-Better-CSS.md rename to storage/roadmaps/1-frontend/learn/2-Write-Better-CSS.md diff --git a/storage/roadmaps/frontend/learn/3-Build-Tools.md b/storage/roadmaps/1-frontend/learn/3-Build-Tools.md similarity index 100% rename from storage/roadmaps/frontend/learn/3-Build-Tools.md rename to storage/roadmaps/1-frontend/learn/3-Build-Tools.md diff --git a/storage/roadmaps/frontend/learn/4-Modern-Frontend-Applications.md b/storage/roadmaps/1-frontend/learn/4-Modern-Frontend-Applications.md similarity index 100% rename from storage/roadmaps/frontend/learn/4-Modern-Frontend-Applications.md rename to storage/roadmaps/1-frontend/learn/4-Modern-Frontend-Applications.md diff --git a/storage/roadmaps/frontend/learn/5-Automated-Testing.md b/storage/roadmaps/1-frontend/learn/5-Automated-Testing.md similarity index 100% rename from storage/roadmaps/frontend/learn/5-Automated-Testing.md rename to storage/roadmaps/1-frontend/learn/5-Automated-Testing.md diff --git a/storage/roadmaps/frontend/learn/6-Static-Type-Checkers.md b/storage/roadmaps/1-frontend/learn/6-Static-Type-Checkers.md similarity index 100% rename from storage/roadmaps/frontend/learn/6-Static-Type-Checkers.md rename to storage/roadmaps/1-frontend/learn/6-Static-Type-Checkers.md diff --git a/storage/roadmaps/frontend/learn/7-Server-Side-Rendering.md b/storage/roadmaps/1-frontend/learn/7-Server-Side-Rendering.md similarity index 100% rename from storage/roadmaps/frontend/learn/7-Server-Side-Rendering.md rename to storage/roadmaps/1-frontend/learn/7-Server-Side-Rendering.md diff --git a/storage/roadmaps/frontend/learn/8-Go-Beyond.md b/storage/roadmaps/1-frontend/learn/8-Go-Beyond.md similarity index 100% rename from storage/roadmaps/frontend/learn/8-Go-Beyond.md rename to storage/roadmaps/1-frontend/learn/8-Go-Beyond.md diff --git a/storage/roadmaps/frontend/meta.json b/storage/roadmaps/1-frontend/meta.json similarity index 83% rename from storage/roadmaps/frontend/meta.json rename to storage/roadmaps/1-frontend/meta.json index 33068885b..ea517ea6b 100644 --- a/storage/roadmaps/frontend/meta.json +++ b/storage/roadmaps/1-frontend/meta.json @@ -2,7 +2,6 @@ "title": "Frontend Developer", "description": "Step by step guide to becoming a modern frontend developer", "featuredDescription": "Step by step guide to becoming a modern frontend developer in 2019", - "picture": "/static/roadmaps/{version}/frontend.png", "featured": true, "versions": [ "latest", diff --git a/storage/roadmaps/frontend/summary.md b/storage/roadmaps/1-frontend/summary.md similarity index 100% rename from storage/roadmaps/frontend/summary.md rename to storage/roadmaps/1-frontend/summary.md diff --git a/storage/roadmaps/2-backend/landscape/1-Junior.md b/storage/roadmaps/2-backend/landscape/1-Junior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/2-backend/landscape/2-Intermediate.md b/storage/roadmaps/2-backend/landscape/2-Intermediate.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/2-backend/landscape/3-Senior.md b/storage/roadmaps/2-backend/landscape/3-Senior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/2-backend/meta.json b/storage/roadmaps/2-backend/meta.json new file mode 100644 index 000000000..883478bb2 --- /dev/null +++ b/storage/roadmaps/2-backend/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Backend Developer", + "description": "Step by step guide to becoming a modern backend developer", + "featuredDescription": "Step by step guide to becoming a modern backend developer in 2019", + "featured": true +} diff --git a/storage/roadmaps/2-backend/summary.md b/storage/roadmaps/2-backend/summary.md new file mode 100644 index 000000000..4f1dae73f --- /dev/null +++ b/storage/roadmaps/2-backend/summary.md @@ -0,0 +1,2 @@ +## Backend Developer +How to become a backend frontend developer diff --git a/storage/roadmaps/3-devops/landscape/1-Junior.md b/storage/roadmaps/3-devops/landscape/1-Junior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/3-devops/landscape/2-Intermediate.md b/storage/roadmaps/3-devops/landscape/2-Intermediate.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/3-devops/landscape/3-Senior.md b/storage/roadmaps/3-devops/landscape/3-Senior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/3-devops/meta.json b/storage/roadmaps/3-devops/meta.json new file mode 100644 index 000000000..f037c2f53 --- /dev/null +++ b/storage/roadmaps/3-devops/meta.json @@ -0,0 +1,11 @@ +{ + "title": "DevOps Roadmap", + "description": "Step by step guide for DevOps or any other Operations Role", + "featuredDescription": "Step by step guide to become an SRE or for any operations role in 2019", + "featured": true, + "versions": [ + "latest", + "2018", + "2017" + ] +} diff --git a/storage/roadmaps/3-devops/summary.md b/storage/roadmaps/3-devops/summary.md new file mode 100644 index 000000000..05ab94903 --- /dev/null +++ b/storage/roadmaps/3-devops/summary.md @@ -0,0 +1,2 @@ +## DevOps Roadmap +Roadmap for any operations role diff --git a/storage/roadmaps/4-fullstack/landscape/1-Junior.md b/storage/roadmaps/4-fullstack/landscape/1-Junior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/4-fullstack/landscape/2-Intermediate.md b/storage/roadmaps/4-fullstack/landscape/2-Intermediate.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/4-fullstack/landscape/3-Senior.md b/storage/roadmaps/4-fullstack/landscape/3-Senior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/4-fullstack/meta.json b/storage/roadmaps/4-fullstack/meta.json new file mode 100644 index 000000000..55bc00f4c --- /dev/null +++ b/storage/roadmaps/4-fullstack/meta.json @@ -0,0 +1,6 @@ +{ + "title": "Full Stack Developer", + "description": "Step by step guide to becoming a modern fullstack developer in 2019", + "featuredDescription": "Step by step guide to becoming a modern fullstack developer in 2019", + "upcoming": true +} diff --git a/storage/roadmaps/4-fullstack/summary.md b/storage/roadmaps/4-fullstack/summary.md new file mode 100644 index 000000000..92ab71046 --- /dev/null +++ b/storage/roadmaps/4-fullstack/summary.md @@ -0,0 +1,2 @@ +## Fullstack Roadmap +Roadmap to becoming a fullstack developer diff --git a/storage/roadmaps/5-qa/landscape/1-Junior.md b/storage/roadmaps/5-qa/landscape/1-Junior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/5-qa/landscape/2-Intermediate.md b/storage/roadmaps/5-qa/landscape/2-Intermediate.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/5-qa/landscape/3-Senior.md b/storage/roadmaps/5-qa/landscape/3-Senior.md new file mode 100644 index 000000000..e69de29bb diff --git a/storage/roadmaps/5-qa/meta.json b/storage/roadmaps/5-qa/meta.json new file mode 100644 index 000000000..27367b04d --- /dev/null +++ b/storage/roadmaps/5-qa/meta.json @@ -0,0 +1,6 @@ +{ + "title": "QA Engineer", + "description": "Steps to follow in order to become a modern QA Engineer in 2019", + "featuredDescription": "Step by step guide to becoming a modern QA Engineer in 2019", + "upcoming": true +} diff --git a/storage/roadmaps/5-qa/summary.md b/storage/roadmaps/5-qa/summary.md new file mode 100644 index 000000000..540cb46c0 --- /dev/null +++ b/storage/roadmaps/5-qa/summary.md @@ -0,0 +1,2 @@ +## QA Roadmap +Roadmap to becoming a QA Engineer