diff --git a/src/components/Dashboard/DashboardPage.tsx b/src/components/Dashboard/DashboardPage.tsx
index 658d0352c..6509bd1ef 100644
--- a/src/components/Dashboard/DashboardPage.tsx
+++ b/src/components/Dashboard/DashboardPage.tsx
@@ -10,12 +10,14 @@ import type { TeamListResponse } from '../TeamDropdown/TeamDropdown';
import { DashboardTabButton } from './DashboardTabButton';
import { PersonalDashboard, type BuiltInRoadmap } from './PersonalDashboard';
import { TeamDashboard } from './TeamDashboard';
+import type { QuestionGroupType } from '../../lib/question-group';
type DashboardPageProps = {
builtInRoleRoadmaps?: BuiltInRoadmap[];
builtInSkillRoadmaps?: BuiltInRoadmap[];
builtInBestPractices?: BuiltInRoadmap[];
isTeamPage?: boolean;
+ questionGroups?: QuestionGroupType[];
};
export function DashboardPage(props: DashboardPageProps) {
@@ -24,6 +26,7 @@ export function DashboardPage(props: DashboardPageProps) {
builtInBestPractices,
builtInSkillRoadmaps,
isTeamPage = false,
+ questionGroups,
} = props;
const currentUser = getUser();
@@ -124,6 +127,7 @@ export function DashboardPage(props: DashboardPageProps) {
builtInRoleRoadmaps={builtInRoleRoadmaps}
builtInSkillRoadmaps={builtInSkillRoadmaps}
builtInBestPractices={builtInBestPractices}
+ questionGroups={questionGroups}
/>
)}
diff --git a/src/components/Dashboard/PersonalDashboard.tsx b/src/components/Dashboard/PersonalDashboard.tsx
index 34b9b7088..feb736142 100644
--- a/src/components/Dashboard/PersonalDashboard.tsx
+++ b/src/components/Dashboard/PersonalDashboard.tsx
@@ -24,7 +24,8 @@ import {
import { HeroRoadmap } from '../HeroSection/HeroRoadmap.tsx';
import type { ProjectStatusDocument } from '../Projects/ListProjectSolutions';
import type { UserProgress } from '../TeamProgress/TeamProgressPage';
-
+import { projectGroups } from '../../pages/index.astro';
+import type { QuestionGroupType } from '../../lib/question-group';
type UserDashboardResponse = {
name: string;
email: string;
@@ -54,6 +55,7 @@ type PersonalDashboardProps = {
builtInRoleRoadmaps?: BuiltInRoadmap[];
builtInSkillRoadmaps?: BuiltInRoadmap[];
builtInBestPractices?: BuiltInRoadmap[];
+ questionGroups?: QuestionGroupType[];
};
type DashboardStatItemProps = {
@@ -200,6 +202,7 @@ export function PersonalDashboard(props: PersonalDashboardProps) {
builtInRoleRoadmaps = [],
builtInBestPractices = [],
builtInSkillRoadmaps = [],
+ questionGroups = [],
} = props;
const toast = useToast();
@@ -368,110 +371,161 @@ export function PersonalDashboard(props: PersonalDashboardProps) {
isLoading={isLoading}
/>
-
-
-
- Role Based Roadmaps
-
-
-
- {builtInRoleRoadmaps.map((roadmap) => {
- const roadmapProgress = learningRoadmapsToShow.find(
- (lr) => lr.resourceId === roadmap.id,
- );
-
- const percentageDone =
- (((roadmapProgress?.skipped || 0) +
- (roadmapProgress?.done || 0)) /
- (roadmapProgress?.total || 1)) *
- 100;
-
- return (
-
- );
- })}
+
+
+
+
+ Role Based Roadmaps
+
+
+
+ {builtInRoleRoadmaps.map((roadmap) => {
+ const roadmapProgress = learningRoadmapsToShow.find(
+ (lr) => lr.resourceId === roadmap.id,
+ );
+
+ const percentageDone =
+ (((roadmapProgress?.skipped || 0) +
+ (roadmapProgress?.done || 0)) /
+ (roadmapProgress?.total || 1)) *
+ 100;
+
+ return (
+
+ );
+ })}
+
-
-
-
-
- Skill Based Roadmaps
-
-
-
- {builtInSkillRoadmaps.map((roadmap) => {
- const roadmapProgress = learningRoadmapsToShow.find(
- (lr) => lr.resourceId === roadmap.id,
- );
-
- const percentageDone =
- (((roadmapProgress?.skipped || 0) +
- (roadmapProgress?.done || 0)) /
- (roadmapProgress?.total || 1)) *
- 100;
-
- return (
-
- );
- })}
+
+
+
+ Skill Based Roadmaps
+
+
+
+ {builtInSkillRoadmaps.map((roadmap) => {
+ const roadmapProgress = learningRoadmapsToShow.find(
+ (lr) => lr.resourceId === roadmap.id,
+ );
+
+ const percentageDone =
+ (((roadmapProgress?.skipped || 0) +
+ (roadmapProgress?.done || 0)) /
+ (roadmapProgress?.total || 1)) *
+ 100;
+
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+
+ Project Ideas
+
+
+
+ {projectGroups.map((projectGroup) => {
+ return (
+
+ );
+ })}
+
+
+
+
+
+
+
+ Best Practices
+
+
+
+ {builtInBestPractices.map((roadmap) => {
+ const roadmapProgress = learningRoadmapsToShow.find(
+ (lr) => lr.resourceId === roadmap.id,
+ );
+
+ const percentageDone =
+ (((roadmapProgress?.skipped || 0) +
+ (roadmapProgress?.done || 0)) /
+ (roadmapProgress?.total || 1)) *
+ 100;
+
+ return (
+
+ );
+ })}
+
-
-
-
-
- Best Practices
-
-
-
- {builtInBestPractices.map((roadmap) => {
- const roadmapProgress = learningRoadmapsToShow.find(
- (lr) => lr.resourceId === roadmap.id,
- );
-
- const percentageDone =
- (((roadmapProgress?.skipped || 0) +
- (roadmapProgress?.done || 0)) /
- (roadmapProgress?.total || 1)) *
- 100;
-
- return (
-
- );
- })}
+
+
+
+ Questions
+
+
+
+ {questionGroups.map((questionGroup) => {
+ return (
+
+ );
+ })}
+
diff --git a/src/pages/dashboard.astro b/src/pages/dashboard.astro
index 1f8f81f36..53c94ff86 100644
--- a/src/pages/dashboard.astro
+++ b/src/pages/dashboard.astro
@@ -2,11 +2,13 @@
import { DashboardPage } from '../components/Dashboard/DashboardPage';
import BaseLayout from '../layouts/BaseLayout.astro';
import { getAllBestPractices } from '../lib/best-practice';
+import { getAllQuestionGroups } from '../lib/question-group';
import { getRoadmapsByTag } from '../lib/roadmap';
const roleRoadmaps = await getRoadmapsByTag('role-roadmap');
const skillRoadmaps = await getRoadmapsByTag('skill-roadmap');
const bestPractices = await getAllBestPractices();
+const questionGroups = await getAllQuestionGroups();
const enrichedRoleRoadmaps = roleRoadmaps
.filter((roadmapItem) => !roadmapItem.frontmatter.isHidden)
@@ -63,6 +65,7 @@ const enrichedBestPractices = bestPractices.map((bestPractice) => {
builtInRoleRoadmaps={enrichedRoleRoadmaps}
builtInSkillRoadmaps={enrichedSkillRoadmaps}
builtInBestPractices={enrichedBestPractices}
+ questionGroups={questionGroups}
client:load
/>
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 23c83f0f8..c6ce071a2 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -15,7 +15,8 @@ const roleRoadmaps = await getRoadmapsByTag('role-roadmap');
const skillRoadmaps = await getRoadmapsByTag('skill-roadmap');
const bestPractices = await getAllBestPractices();
const questionGroups = await getAllQuestionGroups();
-const projectGroups = [
+
+export const projectGroups = [
{
title: 'Frontend',
id: 'frontend',