-
-
{
- setDifficulty('beginner');
- }}
- difficulty={'beginner'}
- isActive={difficulty === 'beginner'}
- />
- {
- setDifficulty('intermediate');
- }}
- difficulty={'intermediate'}
- isActive={difficulty === 'intermediate'}
- />
- {
- setDifficulty('senior');
- }}
- difficulty={'senior'}
- isActive={difficulty === 'senior'}
- />
+
+ {projectDifficulties.map((projectDifficulty) => (
+ {
+ setDifficulty(projectDifficulty);
+ setUrlParams({ difficulty: projectDifficulty });
+ }}
+ difficulty={projectDifficulty}
+ isActive={projectDifficulty === difficulty}
+ />
+ ))}
+ {difficulty && (
+
+ )}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ {matchingProjects.length === 0 && (
+
+
No matching projects found.
+
+ )}
+
+ {matchingProjects
+ .sort((project) => {
+ return project.frontmatter.difficulty === 'beginner'
+ ? -1
+ : project.frontmatter.difficulty === 'intermediate'
+ ? 0
+ : 1;
+ })
+ .map((matchingProject) => (
+
+ ))}
);
diff --git a/src/components/RoadmapHeader.astro b/src/components/RoadmapHeader.astro
index 1e433b88b..338b9bf43 100644
--- a/src/components/RoadmapHeader.astro
+++ b/src/components/RoadmapHeader.astro
@@ -21,6 +21,7 @@ export interface Props {
roadmapId: string;
isUpcoming?: boolean;
hasSearch?: boolean;
+ projectCount?: number;
question?: RoadmapFrontmatter['question'];
hasTopics?: boolean;
isForkable?: boolean;
@@ -35,6 +36,7 @@ const {
isUpcoming = false,
note,
hasTopics = false,
+ projectCount = 0,
question,
activeTab = 'roadmap',
} = Astro.props;
@@ -123,7 +125,7 @@ const hasTnsBanner = !!tnsBannerLink;
icon={FolderKanbanIcon}
text='Projects'
isActive={activeTab === 'projects'}
- badgeText='soon'
+ badgeText={projectCount > 0 ? '' : 'soon'}
/>
diff --git a/src/data/projects/stock-cli.md b/src/data/projects/stock-cli.md
new file mode 100644
index 000000000..d6c14b694
--- /dev/null
+++ b/src/data/projects/stock-cli.md
@@ -0,0 +1,36 @@
+---
+title: 'Stock CLI'
+description: 'Build a command line interface (CLI) to track your tasks and manage your to-do list.'
+isNew: false
+difficulty: 'intermediate'
+nature: 'API'
+skills:
+ - 'Programming Language'
+ - 'CLI'
+ - 'Filesystem'
+ - 'Logic Building'
+seo:
+ title: 'Task Tracker CLI'
+ description: 'Build a command line interface (CLI) to track your tasks and manage your to-do list.'
+ keywords:
+ - 'task tracker cli'
+ - 'backend project idea'
+roadmapIds:
+ - 'backend'
+---
+
+# Task Tracker CLI
+
+Build a command line interface (CLI) to track your tasks and manage your to-do list.
+
+## Description
+
+You are required to build a command line interface (CLI) application that allows users to manage their tasks and to-do list. The application should be able to perform the following operations:
+
+- Add a new task
+- List all tasks
+- Mark a task as done
+- Delete a task
+- Update a task
+- Search for a task
+- Filter tasks by status (done, pending)
diff --git a/src/data/projects/task-tracker-cli.md b/src/data/projects/task-tracker-cli.md
new file mode 100644
index 000000000..743e8ebab
--- /dev/null
+++ b/src/data/projects/task-tracker-cli.md
@@ -0,0 +1,36 @@
+---
+title: 'Task Tracker CLI'
+description: 'Build a command line interface (CLI) to track your tasks and manage your to-do list.'
+isNew: false
+difficulty: 'beginner'
+nature: 'API'
+skills:
+ - 'Programming Language'
+ - 'CLI'
+ - 'Filesystem'
+ - 'Logic Building'
+seo:
+ title: 'Task Tracker CLI'
+ description: 'Build a command line interface (CLI) to track your tasks and manage your to-do list.'
+ keywords:
+ - 'task tracker cli'
+ - 'backend project idea'
+roadmapIds:
+ - 'backend'
+---
+
+# Task Tracker CLI
+
+Build a command line interface (CLI) to track your tasks and manage your to-do list.
+
+## Description
+
+You are required to build a command line interface (CLI) application that allows users to manage their tasks and to-do list. The application should be able to perform the following operations:
+
+- Add a new task
+- List all tasks
+- Mark a task as done
+- Delete a task
+- Update a task
+- Search for a task
+- Filter tasks by status (done, pending)
diff --git a/src/lib/link-group.ts b/src/lib/link-group.ts
index 9ed56cf6e..dc307cac1 100644
--- a/src/lib/link-group.ts
+++ b/src/lib/link-group.ts
@@ -25,7 +25,7 @@ function linkGroupPathToId(filePath: string): string {
* @returns Promisifed linkGroup files
*/
export async function getAllLinkGroups(): Promise