From 1092528de0db27005a6c69f963afc50d76763ee7 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Fri, 29 Mar 2024 05:00:37 +0000 Subject: [PATCH] Desktop screen UI --- src/pages/roadmaps.astro | 420 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 390 insertions(+), 30 deletions(-) diff --git a/src/pages/roadmaps.astro b/src/pages/roadmaps.astro index 507f4a867..34d7f99fb 100644 --- a/src/pages/roadmaps.astro +++ b/src/pages/roadmaps.astro @@ -4,8 +4,337 @@ import SimplePageHeader from '../components/SimplePageHeader.astro'; import BaseLayout from '../layouts/BaseLayout.astro'; import { getRoadmapsByTag } from '../lib/roadmap'; -const roleRoadmaps = await getRoadmapsByTag('role-roadmap'); -const skillRoadmaps = await getRoadmapsByTag('skill-roadmap'); +const groups = [ + { + group: 'Absolute Beginners', + roadmaps: [ + { + title: 'Frontend Beginner', + link: '/frontend?r=frontend-beginner', + }, + { + title: 'Backend Beginner', + link: '/backend?r=backend-beginner', + }, + { + title: 'DevOps Beginner', + link: '/devops?r=devops-beginner', + }, + { + title: 'Full-Stack Developer', + link: '/fullstack', + }, + ], + }, + { + group: 'Languages / Platforms', + roadmaps: [ + { + title: 'JavaScript', + link: '/javascript', + type: 'skill', + }, + { + title: 'TypeScript', + link: '/typescript', + type: 'skill', + }, + { + title: 'Node.js', + link: '/nodejs', + type: 'role', + }, + { + title: 'C++', + link: '/cpp', + type: 'skill', + }, + { + title: 'Go', + link: '/golang', + type: 'skill', + }, + { + title: 'Rust', + link: '/rust', + type: 'skill', + }, + { + title: 'Python', + link: '/python', + type: 'skill', + }, + { + title: 'Java', + link: '/java', + type: 'skill', + }, + { + title: 'SQL', + link: '/sql', + type: 'skill', + }, + ], + }, + { + group: 'Web Development', + roadmaps: [ + { + title: 'Frontend', + link: '/frontend', + type: 'role', + }, + { + title: 'Backend', + link: '/backend', + type: 'role', + }, + { + title: 'DevOps', + link: '/devops', + type: 'role', + }, + { + title: 'Full Stack', + link: '/full-stack', + type: 'role', + }, + { + title: 'QA', + link: '/qa', + type: 'role', + }, + { + title: 'GraphQL', + link: '/graphql', + type: 'role', + }, + ], + }, + { + group: 'Frameworks', + roadmaps: [ + { + title: 'React', + link: '/react', + type: 'skill', + }, + { + title: 'Vue', + link: '/vue', + type: 'skill', + }, + { + title: 'Angular', + link: '/angular', + type: 'skill', + }, + { + title: 'Spring Boot', + link: '/spring-boot', + type: 'skill', + }, + { + title: 'ASP.NET Core', + link: '/aspnet-core', + type: 'skill', + }, + ], + }, + { + group: 'Mobile Development', + roadmaps: [ + { + title: 'React Native', + link: '/react-native', + type: 'skill', + }, + { + title: 'Flutter', + link: '/flutter', + type: 'skill', + }, + { + title: 'Android', + link: '/android', + type: 'skill', + }, + ], + }, + { + group: 'Databases', + roadmaps: [ + { + title: 'PostgreSQL', + link: '/postgresql-dba', + type: 'role', + }, + { + title: 'MongoDB', + link: '/mongodb', + type: 'skill', + }, + ], + }, + { + group: 'Computer Science', + roadmaps: [ + { + title: 'Computer Science', + link: '/computer-science', + type: 'skill', + }, + { + title: 'Data Structures', + link: '/data-structures-and-algorithms', + type: 'skill', + }, + { + title: 'System Design', + link: '/system-design', + type: 'skill', + }, + { + title: 'Design and Architecture', + link: '/software-design-architecture', + type: 'skill', + }, + { + title: 'Software Architect', + link: '/software-architect', + type: 'role', + }, + { + title: 'Code Review', + link: '/code-review', + type: 'skill', + }, + { + title: 'Technical Writer', + link: '/technical-writer', + type: 'skill', + }, + ], + }, + { + group: 'Machine Learning', + roadmaps: [ + { + title: 'AI and Data Scientist', + link: '/ai-data-scientist', + type: 'skill', + }, + { + title: 'MLOps', + link: '/mlops', + type: 'skill', + }, + { + title: 'Prompt Engineering', + link: '/prompt-engineering', + type: 'skill', + }, + ], + }, + { + group: 'Game Development', + roadmaps: [ + { + title: 'Client Side Development', + link: '/game-developer', + type: 'skill', + }, + { + title: 'Server Side Development', + link: '/server-side-game-developer', + type: 'skill', + }, + ], + }, + { + group: 'Design', + roadmaps: [ + { + title: 'UX Design', + link: '/ux-design', + }, + { + title: 'Design System', + link: '/design-system', + }, + ], + }, + { + group: 'DevOps', + roadmaps: [ + { + title: 'DevOps', + link: '/devops', + }, + { + title: 'Docker', + link: '/docker', + }, + { + title: 'Kubernetes', + link: '/kubernetes', + }, + { + title: 'AWS', + link: '/aws', + }, + ], + }, + { + group: 'Blockchain', + roadmaps: [ + { + title: 'Blockchain', + link: '/blockchain', + }, + ], + }, + { + group: 'Cyber Security', + roadmaps: [ + { + title: 'Cyber Security', + link: '/cyber-security', + }, + ], + }, +]; + +const shownTitles = groups + .map((group) => group.roadmaps.map((roadmap) => roadmap.title)) + .flat() + .concat([ + 'Frontend Beginner', + 'Backend Beginner', + 'DevOps Beginner', + 'Full-Stack Developer', + 'Data Structures & Algorithms', + 'Server Side Game Developer', + 'Game Developer', + ]); + +const roleRoadmaps = (await getRoadmapsByTag('role-roadmap')).filter( + (roadmap) => !shownTitles.includes(roadmap.frontmatter.briefTitle), +); +const skillRoadmaps = (await getRoadmapsByTag('skill-roadmap')).filter( + (roadmap) => !shownTitles.includes(roadmap.frontmatter.briefTitle), +); + +const otherRoadmaps = roleRoadmaps.concat(skillRoadmaps); +if (otherRoadmaps.length > 0) { + groups.push({ + group: 'Uncategorized', + roadmaps: otherRoadmaps.map((roadmap) => ({ + title: roadmap.frontmatter.briefTitle, + link: roadmap.url, + })), + }); +} --- - +
+
+
+
+

Developer Roadmaps

+

+ Browse ever-growing list of up-to-date, community driven roadmaps +

+

+ + Draw your own roadmap + + + Generate Roadmap with AI + +

+
+
+
-
-
-
- { - roleRoadmaps.map((roleRoadmap) => ( - - )) - } +
+
+
+
+
+ All Roadmaps + { + groups.map((group) => ( + + {group.group} + + )) + } +
+
+
+
+ { + groups.map((group) => ( +
+

+ {group.group} +

- { - skillRoadmaps.map((skillRoadmap) => ( - - )) - } +
+ {group.roadmaps.map((roadmap) => ( + + {roadmap.title} + + ))} +
+
+ )) + } +