Add projects for expense and task tracker

feat/projects-list
Kamran Ahmed 4 months ago
parent 9fb5783ea9
commit 0e80fd967f
  1. 3
      src/components/Projects/ProjectsList.tsx
  2. 80
      src/data/projects/expense-tracker.md
  3. 31
      src/data/projects/stock-cli.md
  4. 2
      src/data/projects/task-tracker.md
  5. 1
      src/lib/project.ts
  6. 4
      src/pages/projects/[projectId].astro

@ -114,6 +114,9 @@ export function ProjectsList(props: ProjectsListProps) {
)} )}
{matchingProjects {matchingProjects
.sort((a, b) => {
return b.frontmatter.sort - a.frontmatter.sort;
})
.sort((project) => { .sort((project) => {
return project.frontmatter.difficulty === 'beginner' return project.frontmatter.difficulty === 'beginner'
? -1 ? -1

@ -0,0 +1,80 @@
---
title: 'Expense Tracker'
description: 'Build a simple expense tracker application to manage your finances.'
isNew: false
sort: 2
difficulty: 'beginner'
nature: 'CLI'
skills:
- 'Programming Language'
- 'CLI'
- 'Filesystem'
- 'Logic Building'
seo:
title: 'Expense Tracker'
description: 'Build a simple expense tracker application to manage your finances.'
keywords:
- 'expense tracker cli'
- 'backend project idea'
roadmapIds:
- 'backend'
---
Build a simple expense tracker application to manage your finances. The application should allow users to add, delete, and view their expenses. The application should also provide a summary of the expenses.
## Requirements
Application should run from the command line and should have the following features:
- Users can add an expense with a description and amount.
- Users can update an expense.
- Users can delete an expense.
- Users can view all expenses.
- Users can view a summary of all expenses.
- Users can view a summary of expenses for a specific month (of current year).
Here are some additional features that you can add to the application:
- Add expense categories and allow users to filter expenses by category.
- Allow users to set a budget for each month and show a warning when the user exceeds the budget.
- Allow users to export expenses to a CSV file.
The list of commands and their expected output is shown below:
```bash
$ expense-tracker add --description "Lunch" --amount 20
# Expense added successfully (ID: 1)
$ expense-tracker add --description "Dinner" --amount 10
# Expense added successfully (ID: 2)
$ expense-tracker list
# ID Date Description Amount
# 1 2024-08-06 Lunch $20
# 2 2024-08-06 Dinner $10
$ expense-tracker summary
# Total expenses: $30
$ expense-tracker delete --id 1
# Expense deleted successfully
$ expense-tracker summary
# Total expenses: $20
$ expense-tracker summary --month 8
# Total expenses for August: $20
```
## Implementation
You can implement the application using any programming language of your choice. Here are some suggestions:
- Use any programming language for any available module for parsing command arguments (e.g. python with the `argparse`, node.js with `commander` etc).
- Use a simple text file to store the expenses data. You can use JSON, CSV, or any other format to store the data.
- Add error handling to handle invalid inputs and edge cases (e.g. negative amounts, non-existent expense IDs, etc).
- Use functions to modularize the code and make it easier to test and maintain.
<hr />
This project idea is a great way to practice your logic building skills and learn how to interact with the filesystem using a CLI application. It will also help you understand how to manage data and provide useful information to users in a structured way.

@ -1,31 +0,0 @@
---
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'
---
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)

@ -2,13 +2,13 @@
title: 'Task Tracker' title: 'Task Tracker'
description: 'Build a command line (CLI) app to track your tasks and manage your to-do list.' description: 'Build a command line (CLI) app to track your tasks and manage your to-do list.'
isNew: false isNew: false
sort: 1
difficulty: 'beginner' difficulty: 'beginner'
nature: 'CLI' nature: 'CLI'
skills: skills:
- 'Programming Language' - 'Programming Language'
- 'CLI' - 'CLI'
- 'Filesystem' - 'Filesystem'
- 'Logic Building'
seo: seo:
title: 'Task Tracker CLI' title: 'Task Tracker CLI'
description: 'Build a command line interface (CLI) to track your tasks and manage your to-do list.' description: 'Build a command line interface (CLI) to track your tasks and manage your to-do list.'

@ -12,6 +12,7 @@ export interface ProjectFrontmatter {
title: string; title: string;
description: string; description: string;
isNew: boolean; isNew: boolean;
sort: number;
difficulty: ProjectDifficultyType; difficulty: ProjectDifficultyType;
nature: string; nature: string;
skills: string[]; skills: string[];

@ -111,12 +111,12 @@ const githubUrl = `https://github.com/kamranahmedse/developer-roadmap/tree/maste
</div> </div>
<div <div
class='mt-5 flex items-center justify-center rounded-lg bg-yellow-100 p-3 flex-wrap' class='mt-5 flex flex-wrap items-center justify-center rounded-lg bg-yellow-100 p-2.5 text-sm'
> >
<AstroIcon class='mr-2 inline-block h-5 w-5' icon='github' /> <AstroIcon class='mr-2 inline-block h-5 w-5' icon='github' />
Found a mistake? Found a mistake?
<a <a
class='underline underline-offset-2 ml-1' class='ml-1 underline underline-offset-2'
href={githubUrl} href={githubUrl}
target='_blank' target='_blank'
> >

Loading…
Cancel
Save