Roadmap to becoming a developer in 2022
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.0 KiB

feat: profile pages, custom roadmap pages and SSR (#5494) * Update * Add stats and health endpoints * Add pre-render * fix: redirect to the error page * Fix generate-renderer issue * Rename * Fix best practice topics not loading * Handle SSR for static pages * Refactor faqs * Refactor best practices * Fix absolute import * Fix stats * Add custom roadmap page * Minor UI change * feat: custom roadmap slug routes (#4987) * feat: replace roadmap slug * fix: remove roadmap slug * feat: username route * fix: user public page * feat: show roadmap progress * feat: update public profile * fix: replace with toast * feat: user public profile page * feat: implement profile form * feat: implement user profile roadmap page * refactor: remove logs * fix: increase progress gap * fix: remove title margin * fix: breakpoint for roadmaps * Update dependencies * Upgrade dependencies * fix: improper avatars * fix: heatmap focus * wip: remove `getStaticPaths` * fix: add disable props * wip * feat: add email icon * fix: update pnpm lock * fix: implement author page * Fix beginner roadmaps not working * Changes to form * Refactor profile and form * Refactor public profile form * Rearrange sidebar items * Update UI for public form * Minor text update * Refactor public profile form * Error page for user * Revamp UI for profile page * Add public profile page * Fix vite warnings * Add private profile banner * feat: on blur check username * Update fetch depth * Add error detail * Use hybrid mode of rendering * Do not pre-render stats pages * Update deployment workflow * Update deployment workflow --------- Co-authored-by: Arik Chakma <arikchangma@gmail.com>
11 months ago
import { getAllBestPractices } from '../lib/best-practice';
import { getAllGuides } from '../lib/guide';
import { getRoadmapsByTag } from '../lib/roadmap';
import { getAllVideos } from '../lib/video';
import { getAllQuestionGroups } from '../lib/question-group';
export async function GET() {
const guides = await getAllGuides();
const videos = await getAllVideos();
const questionGroups = await getAllQuestionGroups();
const roadmaps = await getRoadmapsByTag('roadmap');
const bestPractices = await getAllBestPractices();
return new Response(
JSON.stringify([
...roadmaps.map((roadmap) => ({
id: roadmap.id,
url: `/${roadmap.id}`,
title: roadmap.frontmatter.briefTitle,
description: roadmap.frontmatter.briefDescription,
group: 'Roadmaps',
metadata: {
tags: roadmap.frontmatter.tags,
},
})),
...bestPractices.map((bestPractice) => ({
id: bestPractice.id,
url: `/best-practices/${bestPractice.id}`,
title: bestPractice.frontmatter.briefTitle,
description: bestPractice.frontmatter.briefDescription,
group: 'Best Practices',
})),
...questionGroups.map((questionGroup) => ({
id: questionGroup.id,
url: `/questions/${questionGroup.id}`,
title: questionGroup.frontmatter.briefTitle,
group: 'Questions',
})),
...guides.map((guide) => ({
id: guide.id,
url: guide.frontmatter.excludedBySlug
? guide.frontmatter.excludedBySlug
: `/guides/${guide.id}`,
title: guide.frontmatter.title,
description: guide.frontmatter.description,
authorId: guide.frontmatter.authorId,
group: 'Guides',
})),
...videos.map((video) => ({
id: video.id,
url: `/videos/${video.id}`,
title: video.frontmatter.title,
group: 'Videos',
})),
]),
{
status: 200,
headers: {
'Content-Type': 'application/json',
},
},
);
}