From 6f38dcccb8c9602b5163953f20029beafa5f22b6 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 27 Nov 2024 15:52:23 +0500 Subject: [PATCH] Refactor related guides functionality (#7800) --- src/components/Guide/GuideContent.astro | 8 ++- src/components/GuideHeader.astro | 53 ------------------- src/components/GuideListItem.astro | 7 ++- src/components/Questions/QuestionGuide.astro | 22 +++----- src/data/guides/backend-developer-skills.md | 9 +--- src/data/guides/backend-developer-tools.md | 9 +--- src/data/guides/backend-frameworks.md | 9 +--- src/data/guides/backend-job-description.md | 13 ++--- src/data/guides/backend-languages.md | 9 +--- src/data/guides/backend-project-ideas.md | 9 +--- src/data/guides/backend-technologies.md | 9 +--- src/data/guides/devops-automation-tools.md | 10 +--- src/data/guides/devops-automation.md | 9 +--- src/data/guides/devops-best-practices.md | 9 +--- src/data/guides/devops-career-path.md | 9 +--- src/data/guides/devops-lifecycle.md | 9 +--- src/data/guides/devops-principles.md | 9 +--- src/data/guides/devops-shift-left-testing.md | 9 +--- src/data/guides/devops-skills.md | 9 +--- src/data/guides/devops-vs-full-stack.md | 9 +--- src/data/guides/frontend-developer-skills.md | 9 +--- src/data/guides/frontend-frameworks.md | 9 +--- src/data/guides/frontend-job-description.md | 13 ++--- src/data/guides/frontend-languages.md | 9 +--- src/data/guides/frontend-vs-backend-ai.md | 9 +--- .../frontend-web-developer-portfolio.md | 9 +--- src/data/guides/full-stack-job-description.md | 4 +- .../guides/how-to-become-devops-engineer.md | 9 +--- .../how-to-become-frontend-developer.md | 9 +--- src/data/question-groups/backend/backend.md | 9 +--- src/data/question-groups/frontend/frontend.md | 9 +--- src/lib/guide.ts | 49 ++++++++++++++--- src/lib/question-group.ts | 24 ++++++++- src/pages/backend/developer-skills.astro | 9 ++-- src/pages/backend/developer-tools.astro | 6 +-- src/pages/backend/frameworks.astro | 6 +-- src/pages/backend/job-description.astro | 2 - src/pages/backend/languages.astro | 6 +-- src/pages/backend/project-ideas.astro | 6 +-- src/pages/backend/technologies.astro | 6 +-- src/pages/devops/automation-tools.astro | 6 +-- src/pages/devops/automation.astro | 6 +-- src/pages/devops/best-practices.astro | 6 +-- src/pages/devops/career-path.astro | 6 +-- src/pages/devops/devops-engineer.astro | 6 +-- src/pages/devops/devops-vs-sre.astro | 8 ++- .../how-to-become-devops-engineer.astro | 10 ++-- src/pages/devops/lifecycle.astro | 8 ++- src/pages/devops/principles.astro | 8 ++- src/pages/devops/shift-left-testing.astro | 8 ++- src/pages/devops/skills.astro | 10 ++-- src/pages/devops/vs-full-stack.astro | 10 ++-- src/pages/frontend/developer-skills.astro | 11 ++-- src/pages/frontend/frameworks.astro | 11 ++-- .../how-to-become-frontend-developer.astro | 9 ++-- src/pages/frontend/job-description.astro | 3 +- src/pages/frontend/languages.astro | 11 ++-- src/pages/frontend/vs-backend-ai.astro | 9 ++-- .../frontend/web-developer-portfolio.astro | 9 ++-- src/pages/full-stack/developer-skills.astro | 9 ++-- src/pages/full-stack/job-description.astro | 9 ++-- src/pages/full-stack/vs-backend.astro | 9 ++-- .../full-stack/vs-software-engineer.astro | 9 ++-- src/pages/guides/[guideId].astro | 6 +-- src/pages/java/developer-skills.astro | 10 ++-- 65 files changed, 206 insertions(+), 452 deletions(-) delete mode 100644 src/components/GuideHeader.astro diff --git a/src/components/Guide/GuideContent.astro b/src/components/Guide/GuideContent.astro index ed51c19a8..5657a24e7 100644 --- a/src/components/Guide/GuideContent.astro +++ b/src/components/Guide/GuideContent.astro @@ -2,7 +2,6 @@ import { getGuideTableOfContent, type GuideFileType } from '../../lib/guide'; import MarkdownFile from '../MarkdownFile.astro'; import { TableOfContent } from '../TableOfContent/TableOfContent'; -import { replaceVariables } from '../../lib/markdown'; import { RelatedGuides } from './RelatedGuides'; interface Props { @@ -16,8 +15,7 @@ const tableOfContent = getGuideTableOfContent(allHeadings); const showTableOfContent = tableOfContent.length > 0; const showRelatedGuides = - guide?.frontmatter?.relatedGuides && - Object.keys(guide?.frontmatter?.relatedGuides).length > 0; + guide?.relatedGuides && Object.keys(guide?.relatedGuides).length > 0; const { frontmatter: guideFrontmatter, author } = guide; --- @@ -27,7 +25,7 @@ const { frontmatter: guideFrontmatter, author } = guide;
@@ -45,7 +43,7 @@ const { frontmatter: guideFrontmatter, author } = guide; >

- {replaceVariables(guideFrontmatter.title)} + {guideFrontmatter.title}

-

- -

- {replaceVariables(frontmatter.title)} -

- -
-
diff --git a/src/components/GuideListItem.astro b/src/components/GuideListItem.astro index fe2073cc4..a862ad354 100644 --- a/src/components/GuideListItem.astro +++ b/src/components/GuideListItem.astro @@ -1,7 +1,6 @@ --- import type { GuideFileType, GuideFrontmatter } from '../lib/guide'; -import { replaceVariables } from '../lib/markdown'; -import { QuestionGroupType } from '../lib/question-group'; +import { type QuestionGroupType } from '../lib/question-group'; export interface Props { guide: GuideFileType | QuestionGroupType; @@ -38,7 +37,7 @@ if (isQuestionGroupType(guide)) { - {replaceVariables(frontmatter.title)} + {frontmatter.title} { frontmatter.isNew && ( @@ -46,7 +45,7 @@ if (isQuestionGroupType(guide)) { New diff --git a/src/components/Questions/QuestionGuide.astro b/src/components/Questions/QuestionGuide.astro index 3e18a9a79..ddec8fcec 100644 --- a/src/components/Questions/QuestionGuide.astro +++ b/src/components/Questions/QuestionGuide.astro @@ -1,15 +1,11 @@ --- -import { - getGuideTableOfContent, - type GuideFileType, - HeadingGroupType, -} from '../../lib/guide'; +import { getGuideTableOfContent, type HeadingGroupType } from '../../lib/guide'; +import { markdownToHtml } from '../../lib/markdown'; +import { type QuestionGroupType } from '../../lib/question-group'; +import { RelatedGuides } from '../Guide/RelatedGuides'; import MarkdownFile from '../MarkdownFile.astro'; import { TableOfContent } from '../TableOfContent/TableOfContent'; -import { markdownToHtml, replaceVariables } from '../../lib/markdown'; -import { QuestionGroupType } from '../../lib/question-group'; import { QuestionsList } from './QuestionsList'; -import { RelatedGuides } from '../Guide/RelatedGuides'; interface Props { questionGroup: QuestionGroupType; @@ -22,14 +18,12 @@ const tableOfContent: HeadingGroupType[] = [ ...getGuideTableOfContent(allHeadings), { depth: 2, - title: 'Test with Flashcards', children: [], slug: 'test-with-flashcards', text: 'Test yourself with Flashcards', }, { depth: 2, - title: 'Questions List', children: [ { depth: 2, @@ -68,7 +62,7 @@ const { frontmatter: guideFrontmatter, author } = questionGroup;
@@ -86,7 +80,7 @@ const { frontmatter: guideFrontmatter, author } = questionGroup; >

- {replaceVariables(guideFrontmatter.title)} + {guideFrontmatter.title}

{ author && ( @@ -142,8 +136,8 @@ const { frontmatter: guideFrontmatter, author } = questionGroup; {questionGroup.questions .filter((q) => { - return q.topics - .map((t) => t.toLowerCase()) + return q?.topics + ?.map((t) => t.toLowerCase()) .includes(questionLevel); }) .map((q) => ( diff --git a/src/data/guides/backend-developer-skills.md b/src/data/guides/backend-developer-skills.md index fa5d57ada..d5815f049 100644 --- a/src/data/guides/backend-developer-skills.md +++ b/src/data/guides/backend-developer-skills.md @@ -8,14 +8,7 @@ seo: description: 'Learn what the essential backend developer skills are that you should learn and master to advance in your career.' ogImageUrl: 'https://assets.roadmap.sh/guest/backend-developer-skills-ece68.jpg' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: backend isNew: false type: 'textual' date: 2024-02-27 diff --git a/src/data/guides/backend-developer-tools.md b/src/data/guides/backend-developer-tools.md index 9ca32932c..1de1870c8 100644 --- a/src/data/guides/backend-developer-tools.md +++ b/src/data/guides/backend-developer-tools.md @@ -8,14 +8,7 @@ seo: description: 'Elevate your coding with backend developer tools that bring efficiency, scalability, and innovation to your projects. Improve your development process today!' ogImageUrl: 'https://assets.roadmap.sh/guest/backend-development-tools-ou6el.jpg' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: backend isNew: false type: 'textual' date: 2024-03-19 diff --git a/src/data/guides/backend-frameworks.md b/src/data/guides/backend-frameworks.md index 1521675b8..74d1228ee 100644 --- a/src/data/guides/backend-frameworks.md +++ b/src/data/guides/backend-frameworks.md @@ -8,14 +8,7 @@ seo: description: 'Get expert advice on backend frameworks for 2024. Learn about the top 7 frameworks that can elevate your development process.' ogImageUrl: 'https://assets.roadmap.sh/guest/top-backend-frameworks-jfpux.jpg' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: backend isNew: false type: 'textual' date: 2024-09-27 diff --git a/src/data/guides/backend-job-description.md b/src/data/guides/backend-job-description.md index bccc40442..4c1aac85d 100644 --- a/src/data/guides/backend-job-description.md +++ b/src/data/guides/backend-job-description.md @@ -1,21 +1,14 @@ --- -title: "Backend Developer Job Description [2024 Template]" +title: "Backend Developer Job Description [@currentYear@ Template]" description: 'Learn how to write the perfect backend developer job description and get my best tips on how to recruit backend dev talent effectively.' authorId: ekene excludedBySlug: '/backend/job-description' seo: - title: "Backend Developer Job Description [2024 Template]" + title: "Backend Developer Job Description [@currentYear@ Template]" description: '' ogImageUrl: 'https://assets.roadmap.sh/guest/backend-job-description-nn3ja.png' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" +relatedGuidesId: backend isNew: true type: 'textual' date: 2024-11-12 diff --git a/src/data/guides/backend-languages.md b/src/data/guides/backend-languages.md index 2f82c40b8..34cf2c544 100644 --- a/src/data/guides/backend-languages.md +++ b/src/data/guides/backend-languages.md @@ -8,14 +8,7 @@ seo: description: 'Discover the best backend development languages to learn right now for career development, with practical tips from an experienced developer.' ogImageUrl: 'https://assets.roadmap.sh/guest/backend-languages-2x930.jpg' relatedTitle: "Other Guides" -relatedGuides: - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: backend isNew: false type: 'textual' date: 2024-01-18 diff --git a/src/data/guides/backend-project-ideas.md b/src/data/guides/backend-project-ideas.md index 10d6d95f2..be2f87014 100644 --- a/src/data/guides/backend-project-ideas.md +++ b/src/data/guides/backend-project-ideas.md @@ -8,14 +8,7 @@ seo: description: 'Seeking backend projects to enhance your skills? Explore our top 20 project ideas, from simple apps to complex systems. Start building today!' ogImageUrl: 'https://assets.roadmap.sh/guest/backend-project-ideas-zxutw.jpg' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: backend isNew: false type: 'textual' date: 2024-05-09 diff --git a/src/data/guides/backend-technologies.md b/src/data/guides/backend-technologies.md index afe203145..e933ccf5b 100644 --- a/src/data/guides/backend-technologies.md +++ b/src/data/guides/backend-technologies.md @@ -8,14 +8,7 @@ seo: description: 'Looking for the best backend technologies in @currentYear@? Check out our expert list of top tools for developers.' ogImageUrl: 'https://assets.roadmap.sh/guest/backend-technologies-pnof4.jpg' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "50 Popular Backend Developer Interview Questions and Answers": "/questions/backend" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: backend isNew: false type: 'textual' date: 2024-08-27 diff --git a/src/data/guides/devops-automation-tools.md b/src/data/guides/devops-automation-tools.md index 77eeadcc3..c7a4dcdca 100644 --- a/src/data/guides/devops-automation-tools.md +++ b/src/data/guides/devops-automation-tools.md @@ -8,15 +8,7 @@ seo: description: 'Explore the best DevOps automation tools designed to optimize CI/CD, reduce manual tasks, and drive efficiency in your development cycle.' ogImageUrl: 'https://assets.roadmap.sh/guest/best-devops-automation-tools-aoyls.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: true type: 'textual' date: 2024-11-26 diff --git a/src/data/guides/devops-automation.md b/src/data/guides/devops-automation.md index 53b38a7b9..5c37a40f4 100644 --- a/src/data/guides/devops-automation.md +++ b/src/data/guides/devops-automation.md @@ -8,14 +8,7 @@ seo: description: 'Streamline your DevOps pipeline! Explore what DevOps automation is and the 8 best practices for seamless delivery.' ogImageUrl: 'https://assets.roadmap.sh/guest/what-is-devops-automation-03k11.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' +relatedGuidesId: devops isNew: true type: 'textual' date: 2024-11-05 diff --git a/src/data/guides/devops-best-practices.md b/src/data/guides/devops-best-practices.md index 771257411..f8426108c 100644 --- a/src/data/guides/devops-best-practices.md +++ b/src/data/guides/devops-best-practices.md @@ -8,14 +8,7 @@ seo: description: 'Learn DevOps best practices for building efficient workflows, from code integration to monitoring, and avoid common DevOps anti-patterns.' ogImageUrl: 'https://assets.roadmap.sh/guest/devops-best-practices-4yhmb.jpg' relatedTitle: "Other Guides" -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' +relatedGuidesId: devops isNew: true type: 'textual' date: 2024-11-26 diff --git a/src/data/guides/devops-career-path.md b/src/data/guides/devops-career-path.md index 007843d4b..4b8dc7bce 100644 --- a/src/data/guides/devops-career-path.md +++ b/src/data/guides/devops-career-path.md @@ -8,14 +8,7 @@ seo: description: 'Learn why a DevOps career path is a smart choice in 2024. Get insights into demand, growth, and earning potential in DevOps.' ogImageUrl: 'https://assets.roadmap.sh/guest/devops-engineer-career-path-2h4r7.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: false type: 'textual' date: 2024-08-20 diff --git a/src/data/guides/devops-lifecycle.md b/src/data/guides/devops-lifecycle.md index 7dfc87638..8e9e17ac7 100644 --- a/src/data/guides/devops-lifecycle.md +++ b/src/data/guides/devops-lifecycle.md @@ -8,14 +8,7 @@ seo: description: 'Master the DevOps lifecycle by exploring its 7 phases, designed to enhance collaboration, streamline processes, and deliver software with agility.' ogImageUrl: 'https://assets.roadmap.sh/guest/key-phases-of-devops-lifecycle-788fa.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: false type: 'textual' date: 2024-11-01 diff --git a/src/data/guides/devops-principles.md b/src/data/guides/devops-principles.md index 7b656b48e..5bc0fd67a 100644 --- a/src/data/guides/devops-principles.md +++ b/src/data/guides/devops-principles.md @@ -8,14 +8,7 @@ seo: description: 'Elevate your game by understanding this set of key DevOps principles and practices. Gain pro insights for a more efficient, collaborative workflow!' ogImageUrl: 'https://assets.roadmap.sh/guest/devops-engineer-skills-tlace.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: false type: 'textual' date: 2024-09-24 diff --git a/src/data/guides/devops-shift-left-testing.md b/src/data/guides/devops-shift-left-testing.md index 741fd0601..140c26f46 100644 --- a/src/data/guides/devops-shift-left-testing.md +++ b/src/data/guides/devops-shift-left-testing.md @@ -8,14 +8,7 @@ seo: description: 'Understand why DevOps emphasizes shift-left testing to boost early bug detection, reduce costs, and improve release cycles.' ogImageUrl: 'https://assets.roadmap.sh/guest/devops-shift-left-testing-16zah.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: true type: 'textual' date: 2024-11-04 diff --git a/src/data/guides/devops-skills.md b/src/data/guides/devops-skills.md index cc9b2f3ba..7086d6d9b 100644 --- a/src/data/guides/devops-skills.md +++ b/src/data/guides/devops-skills.md @@ -8,14 +8,7 @@ seo: description: 'Find out exactly what it takes to be a successful DevOps engineer with my recommendations for essential DevOps skills' ogImageUrl: 'https://assets.roadmap.sh/guest/devops-engineer-skills-tlace.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: false type: 'textual' date: 2024-09-12 diff --git a/src/data/guides/devops-vs-full-stack.md b/src/data/guides/devops-vs-full-stack.md index 6a5d22276..e68004797 100644 --- a/src/data/guides/devops-vs-full-stack.md +++ b/src/data/guides/devops-vs-full-stack.md @@ -8,14 +8,7 @@ seo: description: 'DevOps engineer vs Full stack developer: Compare the roles, required skills, and future prospects to make an informed career choice.' ogImageUrl: 'https://assets.roadmap.sh/guest/devops-engineer-vs-full-stack-developer-jccsq.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'How to become a DevOps Engineer in 2024': '/devops/how-to-become-devops-engineer' - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: false type: 'textual' date: 2024-10-17 diff --git a/src/data/guides/frontend-developer-skills.md b/src/data/guides/frontend-developer-skills.md index 65a519b20..d3ef5ee59 100644 --- a/src/data/guides/frontend-developer-skills.md +++ b/src/data/guides/frontend-developer-skills.md @@ -8,14 +8,7 @@ seo: description: 'Master these 12 in-demand front end developer skills and become a standout candidate in the web development field.' ogImageUrl: 'https://assets.roadmap.sh/guest/frontend-developer-skills-zdpyd.jpg' relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: frontend isNew: false type: 'textual' date: 2024-07-04 diff --git a/src/data/guides/frontend-frameworks.md b/src/data/guides/frontend-frameworks.md index 3267daea9..701a45d65 100644 --- a/src/data/guides/frontend-frameworks.md +++ b/src/data/guides/frontend-frameworks.md @@ -8,14 +8,7 @@ seo: description: 'Get expert advice on frontend frameworks for 2024. Elevate your web development process with these top picks.' ogImageUrl: 'https://assets.roadmap.sh/guest/top-frontend-frameworks-wmqwc.jpg' relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: frontend isNew: false type: 'textual' date: 2024-09-26 diff --git a/src/data/guides/frontend-job-description.md b/src/data/guides/frontend-job-description.md index 1ddb55be5..6ec951a53 100644 --- a/src/data/guides/frontend-job-description.md +++ b/src/data/guides/frontend-job-description.md @@ -1,21 +1,14 @@ --- -title: "Frontend Developer Job Description [2024 Template]" +title: "Frontend Developer Job Description [@currentYear@ Template]" description: 'Learn how to write the perfect frontend developer job description and get my best tips on how to recruit frontend dev talent effectively.' authorId: william excludedBySlug: '/frontend/job-description' seo: - title: "Frontend Developer Job Description [2024 Template]" + title: "Frontend Developer Job Description [@currentYear@ Template]" description: 'Learn how to write the perfect frontend developer job description and get my best tips on how to recruit frontend dev talent effectively.' ogImageUrl: 'https://assets.roadmap.sh/guest/frontend-developer-job-description-5fwzy.jpg' relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" +relatedGuidesId: frontend isNew: true type: 'textual' date: 2024-11-04 diff --git a/src/data/guides/frontend-languages.md b/src/data/guides/frontend-languages.md index db5b40354..2a088fefa 100644 --- a/src/data/guides/frontend-languages.md +++ b/src/data/guides/frontend-languages.md @@ -8,14 +8,7 @@ seo: description: 'Get ahead in web development. Discover the essential frontend languages every pro developer uses!' ogImageUrl: 'https://assets.roadmap.sh/guest/best-front-end-languages-gzngm.png' relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: frontend isNew: false type: 'textual' date: 2024-05-02 diff --git a/src/data/guides/frontend-vs-backend-ai.md b/src/data/guides/frontend-vs-backend-ai.md index 3ed779cf6..cbc2e3850 100644 --- a/src/data/guides/frontend-vs-backend-ai.md +++ b/src/data/guides/frontend-vs-backend-ai.md @@ -8,14 +8,7 @@ seo: description: 'Learn the key differences between frontend and backend in AI development, from roles to tools, and how they impact project success.' ogImageUrl: 'https://assets.roadmap.sh/guest/frontend-vs-backend-in-ai-43wtm.jpg' relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: frontend isNew: false type: 'textual' date: 2024-10-17 diff --git a/src/data/guides/frontend-web-developer-portfolio.md b/src/data/guides/frontend-web-developer-portfolio.md index d64c44f2f..cc4317a04 100644 --- a/src/data/guides/frontend-web-developer-portfolio.md +++ b/src/data/guides/frontend-web-developer-portfolio.md @@ -8,14 +8,7 @@ seo: description: 'Build an impressive online presence with these 10 handpicked web developer portfolio templates.' ogImageUrl: 'https://assets.roadmap.sh/guest/roammap-18-xvyn0.jpg' relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: frontend isNew: false type: 'textual' date: 2024-10-18 diff --git a/src/data/guides/full-stack-job-description.md b/src/data/guides/full-stack-job-description.md index 872c0fb65..69b8e815a 100644 --- a/src/data/guides/full-stack-job-description.md +++ b/src/data/guides/full-stack-job-description.md @@ -1,10 +1,10 @@ --- -title: 'Full Stack Developer Job Description [2024 Template]' +title: 'Full Stack Developer Job Description [@currentYear@ Template]' description: 'Looking to hire a Fullstack Engineer? Get the complete job description, skills, and responsibilities right here!' authorId: william excludedBySlug: '/full-stack/job-description' seo: - title: 'Full Stack Developer Job Description [2024 Template]' + title: 'Full Stack Developer Job Description [@currentYear@ Template]' description: 'Looking to hire a Fullstack Engineer? Get the complete job description, skills, and responsibilities right here!' ogImageUrl: 'https://assets.roadmap.sh/guest/fullstack-job-h15x6.jpg' isNew: false diff --git a/src/data/guides/how-to-become-devops-engineer.md b/src/data/guides/how-to-become-devops-engineer.md index 13e01d4b5..fdf76d230 100644 --- a/src/data/guides/how-to-become-devops-engineer.md +++ b/src/data/guides/how-to-become-devops-engineer.md @@ -8,14 +8,7 @@ seo: description: 'Want to become a DevOps engineer? Our @currentYear@ guide covers skills, certifications, and expert career advice. Start your journey today!' ogImageUrl: 'https://assets.roadmap.sh/guest/become-devops-engineer-4x2p7.jpg' relatedGuidesTitle: 'Other Guides' -relatedGuides: - 'Is DevOps engineering a good career path in 2024?': '/devops/career-path' - '10+ In-Demand DevOps Engineer Skills to Master': '/devops/skills' - 'DevOps engineer vs Full stack developer: Which is best?': '/devops/vs-full-stack' - '11 DevOps Principles and Practices to Master: Pro Advice': '/devops/principles' - 'What Are the 7 Key Phases of the DevOps Lifecycle?': '/devops/lifecycle' - 'Why Does DevOps Recommend Shift-Left Testing Principles?': '/devops/shift-left-testing' - 'What is DevOps Automation? 8 Best Practices & Advice': '/devops/automation' +relatedGuidesId: devops isNew: false type: 'textual' date: 2024-06-11 diff --git a/src/data/guides/how-to-become-frontend-developer.md b/src/data/guides/how-to-become-frontend-developer.md index b2bd5be42..a409a913b 100644 --- a/src/data/guides/how-to-become-frontend-developer.md +++ b/src/data/guides/how-to-become-frontend-developer.md @@ -8,14 +8,7 @@ seo: description: 'Learn how to become a front-end developer in 7 clear steps. Start your coding journey with practical tips and resources today!' ogImageUrl: 'https://assets.roadmap.sh/guest/how-to-become-frontend-developer-i23nx.jpg' relatedTitle: "Other Guides" -relatedGuides: - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 30 Popular Front End Developer Interview Questions": "/questions/frontend" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: frontend isNew: false type: 'textual' date: 2024-08-15 diff --git a/src/data/question-groups/backend/backend.md b/src/data/question-groups/backend/backend.md index f0d06bd2c..1bc52b865 100644 --- a/src/data/question-groups/backend/backend.md +++ b/src/data/question-groups/backend/backend.md @@ -17,14 +17,7 @@ seo: - 'backend interview' - 'backend test' relatedTitle: "Other Guides" -relatedGuides: - "The 5 Best Backend Development Languages to Master (2024)": "/backend/languages" - "Top 10+ Backend Technologies to Use in 2024: Expert Advice": "/backend/technologies" - "Top 7 Backend Frameworks to Use in 2024: Pro Advice": "/backend/frameworks" - "8 In-Demand Backend Developer Skills to Master": "/backend/developer-skills" - "25 Essential Backend Development Tools for 2024": "/backend/developer-tools" - "20 Backend Project Ideas to take you from Beginner to Pro": "/backend/project-ideas" - "Backend Developer Job Description [2024 Template]": "/backend/job-description" +relatedGuidesId: "backend" sitemap: priority: 1 changefreq: 'monthly' diff --git a/src/data/question-groups/frontend/frontend.md b/src/data/question-groups/frontend/frontend.md index 55044de3f..e761feb5f 100644 --- a/src/data/question-groups/frontend/frontend.md +++ b/src/data/question-groups/frontend/frontend.md @@ -8,14 +8,7 @@ authorId: 'fernando' isNew: false date: 2024-05-24 relatedTitle: "Other Guides" -relatedGuides: - "How to Become a Front-End Developer in 7 Steps": "/frontend/how-to-become-frontend-developer" - "What Front End Programming Languages Should You Learn?": "/frontend/languages" - "Top 7 Frontend Frameworks to Use in 2024: Pro Advice": "/frontend/frameworks" - "12 In-Demand Front End Developer Skills to Master": "/frontend/developer-skills" - "Top 10 Web Developer Portfolio Templates - A Pro’s Pick": "/frontend/web-developer-portfolio" - "Frontend vs. Backend in AI Development": "/frontend/vs-backend-ai" - "Frontend Developer Job Description [2024 Template]": "/frontend/job-description" +relatedGuidesId: 'frontend' seo: title: 'Top 30 Popular Front End Developer Interview Questions' description: 'Nail your frontend developer interview with these 30 popularly asked questions and answers. Test your knowledge with our quiz cards!' diff --git a/src/lib/guide.ts b/src/lib/guide.ts index 809b02950..fa61afcd7 100644 --- a/src/lib/guide.ts +++ b/src/lib/guide.ts @@ -1,5 +1,6 @@ import type { MarkdownFileType } from './file'; import { type AuthorFileType, getAllAuthors } from './author.ts'; +import { replaceVariables } from './markdown.ts'; export interface GuideFrontmatter { title: string; @@ -21,13 +22,14 @@ export interface GuideFrontmatter { changefreq: 'daily' | 'weekly' | 'monthly' | 'yearly'; }; relatedTitle?: string; - relatedGuides?: Record; + relatedGuidesId?: string; tags: string[]; } export type GuideFileType = MarkdownFileType & { id: string; author: AuthorFileType; + relatedGuides?: Record; }; /** @@ -63,13 +65,44 @@ export async function getAllGuides(): Promise { const allAuthors = await getAllAuthors(); const guideFiles = Object.values(guides) as GuideFileType[]; - const enrichedGuides: GuideFileType[] = guideFiles.map((guideFile) => ({ - ...guideFile, - id: guidePathToId(guideFile.file), - author: allAuthors.find( - (author) => author.id === guideFile.frontmatter.authorId, - )!, - })); + + let enrichedGuides: GuideFileType[] = guideFiles.map((guideFile) => { + let relatedGuides: GuideFileType[] = []; + if (guideFile.frontmatter.relatedGuidesId) { + relatedGuides = guideFiles.filter( + (g) => + g?.frontmatter?.relatedGuidesId === + guideFile.frontmatter.relatedGuidesId && g.file !== guideFile.file, + ); + } + + return { + ...guideFile, + id: guidePathToId(guideFile.file), + author: allAuthors.find( + (author) => author.id === guideFile.frontmatter.authorId, + )!, + frontmatter: { + ...guideFile.frontmatter, + title: replaceVariables(guideFile.frontmatter.title), + description: replaceVariables(guideFile.frontmatter.description), + seo: { + ...(guideFile.frontmatter?.seo || {}), + title: replaceVariables(guideFile.frontmatter.seo.title), + description: replaceVariables(guideFile.frontmatter.seo.description), + }, + }, + relatedGuides: relatedGuides.reduce( + (acc, guide) => { + acc[replaceVariables(guide.frontmatter.title)] = + guide.frontmatter?.excludedBySlug || + `/guides/${guidePathToId(guideFile.file)}`; + return acc; + }, + {} as Record, + ), + }; + }); return enrichedGuides.sort( (a, b) => diff --git a/src/lib/question-group.ts b/src/lib/question-group.ts index c48f3c457..b0bd6396b 100644 --- a/src/lib/question-group.ts +++ b/src/lib/question-group.ts @@ -1,6 +1,7 @@ import type { MarkdownFileType } from './file'; import slugify from 'slugify'; -import { getAllAuthors } from './author.ts'; +import { getAllAuthors, type AuthorFileType } from './author.ts'; +import { getAllGuides } from './guide.ts'; interface RawQuestionGroupFrontmatter { order: number; @@ -18,7 +19,7 @@ interface RawQuestionGroupFrontmatter { keywords: string[]; }; relatedTitle?: string; - relatedGuides?: Record; + relatedGuidesId?: string; sitemap: { priority: number; changefreq: string; @@ -46,6 +47,8 @@ export type QuestionType = { export type QuestionGroupType = RawQuestionGroupFileType & { questions: QuestionType[]; allTopics: string[]; + author?: AuthorFileType; + relatedGuides?: Record; }; /** @@ -71,6 +74,7 @@ export async function getAllQuestionGroups(): Promise { ); const allAuthors = await getAllAuthors(); + const allGuides = await getAllGuides(); return Object.values(questionGroupFilesMap) .map((questionGroupFile) => { @@ -114,6 +118,21 @@ export async function getAllQuestionGroups(): Promise { return acc; }, [] as string[]); + const relatedGuides = questionGroupFile.frontmatter.relatedGuidesId + ? allGuides + .filter( + (guide) => + guide.id === questionGroupFile.frontmatter.relatedGuidesId, + ) + .reduce( + (acc, guide) => { + acc[guide.frontmatter.title] = `/guides/${guide.id}`; + return acc; + }, + {} as Record, + ) + : undefined; + return { ...questionGroupFile, id: questionGroupFileId, @@ -122,6 +141,7 @@ export async function getAllQuestionGroups(): Promise { author: allAuthors.find( (author) => author.id === questionGroupFile.frontmatter.authorId, )!, + relatedGuides, }; }) .sort((a, b) => a.frontmatter.order - b.frontmatter.order); diff --git a/src/pages/backend/developer-skills.astro b/src/pages/backend/developer-skills.astro index b317e0a46..3010e657e 100644 --- a/src/pages/backend/developer-skills.astro +++ b/src/pages/backend/developer-skills.astro @@ -1,10 +1,8 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; -import { replaceVariables } from '../../lib/markdown'; const guideId = 'backend-developer-skills'; const guide = await getGuideById(guideId); @@ -20,13 +18,12 @@ const ogImageUrl = --- - -
+
diff --git a/src/pages/backend/developer-tools.astro b/src/pages/backend/developer-tools.astro index d3b8a070c..d00f49ca1 100644 --- a/src/pages/backend/developer-tools.astro +++ b/src/pages/backend/developer-tools.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/backend/frameworks.astro b/src/pages/backend/frameworks.astro index 50457c992..aef48f7cb 100644 --- a/src/pages/backend/frameworks.astro +++ b/src/pages/backend/frameworks.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -23,13 +22,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/backend/job-description.astro b/src/pages/backend/job-description.astro index f40a9ef6d..61af69fca 100644 --- a/src/pages/backend/job-description.astro +++ b/src/pages/backend/job-description.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -26,6 +25,5 @@ const ogImageUrl = canonicalUrl={guideData.canonicalUrl} ogImageUrl={ogImageUrl} > - diff --git a/src/pages/backend/languages.astro b/src/pages/backend/languages.astro index 5e26f7715..cd00a4719 100644 --- a/src/pages/backend/languages.astro +++ b/src/pages/backend/languages.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -23,13 +22,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/backend/project-ideas.astro b/src/pages/backend/project-ideas.astro index 06b5b4d6e..c9d714942 100644 --- a/src/pages/backend/project-ideas.astro +++ b/src/pages/backend/project-ideas.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/backend/technologies.astro b/src/pages/backend/technologies.astro index f5040e032..d3033f1c4 100644 --- a/src/pages/backend/technologies.astro +++ b/src/pages/backend/technologies.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -23,13 +22,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/automation-tools.astro b/src/pages/devops/automation-tools.astro index 3b6fa985e..5e32a08f4 100644 --- a/src/pages/devops/automation-tools.astro +++ b/src/pages/devops/automation-tools.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/automation.astro b/src/pages/devops/automation.astro index 5c707b831..38f014d20 100644 --- a/src/pages/devops/automation.astro +++ b/src/pages/devops/automation.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/best-practices.astro b/src/pages/devops/best-practices.astro index 0c10cdb40..90f00be54 100644 --- a/src/pages/devops/best-practices.astro +++ b/src/pages/devops/best-practices.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/career-path.astro b/src/pages/devops/career-path.astro index e7ad40b39..7b4b33f27 100644 --- a/src/pages/devops/career-path.astro +++ b/src/pages/devops/career-path.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/devops-engineer.astro b/src/pages/devops/devops-engineer.astro index 946df092c..b540ca2b5 100644 --- a/src/pages/devops/devops-engineer.astro +++ b/src/pages/devops/devops-engineer.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/devops-vs-sre.astro b/src/pages/devops/devops-vs-sre.astro index 8135b94a8..b8a83f091 100644 --- a/src/pages/devops/devops-vs-sre.astro +++ b/src/pages/devops/devops-vs-sre.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/how-to-become-devops-engineer.astro b/src/pages/devops/how-to-become-devops-engineer.astro index 8284bf94c..e0d333c09 100644 --- a/src/pages/devops/how-to-become-devops-engineer.astro +++ b/src/pages/devops/how-to-become-devops-engineer.astro @@ -1,10 +1,9 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; -import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { replaceVariables } from '../../lib/markdown'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; const guideId = 'how-to-become-devops-engineer'; const guide = await getGuideById(guideId); @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/lifecycle.astro b/src/pages/devops/lifecycle.astro index 9041cb124..cdf5c514d 100644 --- a/src/pages/devops/lifecycle.astro +++ b/src/pages/devops/lifecycle.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/principles.astro b/src/pages/devops/principles.astro index f0ff3e2c7..6bad64ced 100644 --- a/src/pages/devops/principles.astro +++ b/src/pages/devops/principles.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/shift-left-testing.astro b/src/pages/devops/shift-left-testing.astro index b191d96e0..439e7ffb5 100644 --- a/src/pages/devops/shift-left-testing.astro +++ b/src/pages/devops/shift-left-testing.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/skills.astro b/src/pages/devops/skills.astro index e227c6653..b067817a8 100644 --- a/src/pages/devops/skills.astro +++ b/src/pages/devops/skills.astro @@ -1,10 +1,9 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; -import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { replaceVariables } from '../../lib/markdown'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; const guideId = 'devops-skills'; const guide = await getGuideById(guideId); @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/devops/vs-full-stack.astro b/src/pages/devops/vs-full-stack.astro index 0a32f996d..0cff40988 100644 --- a/src/pages/devops/vs-full-stack.astro +++ b/src/pages/devops/vs-full-stack.astro @@ -1,10 +1,9 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; -import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { replaceVariables } from '../../lib/markdown'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; const guideId = 'devops-vs-full-stack'; const guide = await getGuideById(guideId); @@ -20,13 +19,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/frontend/developer-skills.astro b/src/pages/frontend/developer-skills.astro index ad90760e5..dd7c0b5e7 100644 --- a/src/pages/frontend/developer-skills.astro +++ b/src/pages/frontend/developer-skills.astro @@ -1,10 +1,9 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; -import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { replaceVariables } from '../../lib/markdown'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; const guideId = 'frontend-developer-skills'; const guide = await getGuideById(guideId); @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/frontend/frameworks.astro b/src/pages/frontend/frameworks.astro index 21e0d79bd..fd535680e 100644 --- a/src/pages/frontend/frameworks.astro +++ b/src/pages/frontend/frameworks.astro @@ -1,10 +1,9 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; -import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { replaceVariables } from '../../lib/markdown'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; const guideId = 'frontend-frameworks'; const guide = await getGuideById(guideId); @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/frontend/how-to-become-frontend-developer.astro b/src/pages/frontend/how-to-become-frontend-developer.astro index 5a2f32954..353f86660 100644 --- a/src/pages/frontend/how-to-become-frontend-developer.astro +++ b/src/pages/frontend/how-to-become-frontend-developer.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/frontend/job-description.astro b/src/pages/frontend/job-description.astro index 7022e25a5..5aaa73729 100644 --- a/src/pages/frontend/job-description.astro +++ b/src/pages/frontend/job-description.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -26,6 +25,6 @@ const ogImageUrl = canonicalUrl={guideData.canonicalUrl} ogImageUrl={ogImageUrl} > - +
diff --git a/src/pages/frontend/languages.astro b/src/pages/frontend/languages.astro index 06b1a1840..ee1ada208 100644 --- a/src/pages/frontend/languages.astro +++ b/src/pages/frontend/languages.astro @@ -1,10 +1,9 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; -import { getOpenGraphImageUrl } from '../../lib/open-graph'; import { replaceVariables } from '../../lib/markdown'; +import { getOpenGraphImageUrl } from '../../lib/open-graph'; const guideId = 'frontend-languages'; const guide = await getGuideById(guideId); @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/frontend/vs-backend-ai.astro b/src/pages/frontend/vs-backend-ai.astro index 3ad559c71..a4fede1af 100644 --- a/src/pages/frontend/vs-backend-ai.astro +++ b/src/pages/frontend/vs-backend-ai.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/frontend/web-developer-portfolio.astro b/src/pages/frontend/web-developer-portfolio.astro index a757b38ad..63fe99b9e 100644 --- a/src/pages/frontend/web-developer-portfolio.astro +++ b/src/pages/frontend/web-developer-portfolio.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/full-stack/developer-skills.astro b/src/pages/full-stack/developer-skills.astro index fb6c53871..d48ecd76d 100644 --- a/src/pages/full-stack/developer-skills.astro +++ b/src/pages/full-stack/developer-skills.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/full-stack/job-description.astro b/src/pages/full-stack/job-description.astro index 3f044ee3d..d963039fa 100644 --- a/src/pages/full-stack/job-description.astro +++ b/src/pages/full-stack/job-description.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/full-stack/vs-backend.astro b/src/pages/full-stack/vs-backend.astro index cad74626d..617918749 100644 --- a/src/pages/full-stack/vs-backend.astro +++ b/src/pages/full-stack/vs-backend.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/full-stack/vs-software-engineer.astro b/src/pages/full-stack/vs-software-engineer.astro index 2abdba17e..6d04fa25d 100644 --- a/src/pages/full-stack/vs-software-engineer.astro +++ b/src/pages/full-stack/vs-software-engineer.astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -20,12 +19,12 @@ const ogImageUrl = --- - +
diff --git a/src/pages/guides/[guideId].astro b/src/pages/guides/[guideId].astro index 3735f64dc..09fdfc42c 100644 --- a/src/pages/guides/[guideId].astro +++ b/src/pages/guides/[guideId].astro @@ -1,6 +1,5 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getAllGuides, type GuideFileType } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; @@ -34,13 +33,12 @@ const ogImageUrl = --- -
diff --git a/src/pages/java/developer-skills.astro b/src/pages/java/developer-skills.astro index 5b0061bb1..28d0b714f 100644 --- a/src/pages/java/developer-skills.astro +++ b/src/pages/java/developer-skills.astro @@ -1,10 +1,8 @@ --- import GuideContent from '../../components/Guide/GuideContent.astro'; -import GuideHeader from '../../components/GuideHeader.astro'; import BaseLayout from '../../layouts/BaseLayout.astro'; import { getGuideById } from '../../lib/guide'; import { getOpenGraphImageUrl } from '../../lib/open-graph'; -import { replaceVariables } from '../../lib/markdown'; const guideId = 'java-developer-skills'; const guide = await getGuideById(guideId); @@ -20,12 +18,12 @@ const ogImageUrl = --- - +