Skip to content

Project Done - #292

Closed
FeedMyData wants to merge 49 commits into
the-csharp-academy:mainfrom
FeedMyData:main
Closed

FeedMyData wants to merge 49 commits into
the-csharp-academy:mainfrom
FeedMyData:main

Conversation

@FeedMyData

Copy link
Copy Markdown

Challenges

  • Add the possibility of tracking the coding time via a stopwatch so the user can track the session as it happens.
  • Let the users filter their coding records per period (weeks, days, years)

Thanks again for your time Pablo!

@github-actions

Copy link
Copy Markdown

🚀 Project Submitted!

Thanks for submitting your project! I will review it soon.

📋 Please check the dashboard to make sure the project is marked as Pending.

⚠️ If it's not marked as pending, submit it manually using the URL for this PR.

@TheCSharpAcademy TheCSharpAcademy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@FeedMyData Thanks for submitting. Looks like you've deleted .gitignore so now all obj/bin folders are showing. Please reinstate git ignore. You can see in the picture below the PR got cluttered with unnecessary files:

Image

It's a good learning opportunity as ultimately you should always check to prevent unnecessary files from being committed.

💁‍♂️If you have any questions, the best way to get help is in our Discord, in the #get-help-with-projects channel.

@TheCSharpAcademy TheCSharpAcademy self-assigned this Oct 14, 2026
@FeedMyData

Copy link
Copy Markdown
Author

Thanks for reviewing. I reinstalled a .gitignore file and deleted unecessary files in "\obj" and "\bin"

@TheCSharpAcademy

Copy link
Copy Markdown
Collaborator

@FeedMyData Thanks for the clean up! Project approved! This is an ambitious implementation with a well-organized structure, CRUD operations, Dapper, Spectre.Console, and a live stopwatch. The UI is very easy to use and I like that you let users update a single property 💪💪

I agree with the points you brought up in your Readme. DateTime is notoriously painful as it's very hard to get it right. There are time zones, cultures, formatting, conversions. That's one of the main purposes of this project. 😊Planning your project before hand is also a great idea, even if it's a high level design. But be careful not to overdo it, it's very hard to foresee everything. And most importantly. You don't need to learn things by heart. You need instead to know how things work, how to solve problems and where to find answers. 😊

🥋And congratulations! You got your Olive Green belt!! 🫒🫒

Feedback
🔍Unit tests would have been great for this project, particularly for testing your validation methods. I strongly recommend you always include Unit Tests from now on. It will change how you think about development💪

🔍In UserInterface.EditItem(), the code for editing only the start time contains:

string endHour = selection.EndTime;
timeInfos = FormatTimeInfo(startDate, startHour, endHour);

However, selection.EndTime contains a full date and time, while FormatTimeInfo() expects only an hour for its third argument. This can cause parsing errors.

🔍Your LiveSession supports pausing and resuming, which is great. However, you're storing:

DateTime startDate = DateTime.Now;
DateTime endDate = DateTime.Now;

alongside:

stopwatch.Elapsed

When the user pauses the session, the elapsed stopwatch time no longer equals the difference between the start and end timestamps. For example, a session could start at 10:00, finish at 11:00, and record only 30 minutes of active coding.
This creates an inconsistency between the stored timestamps and duration.

🗺️ I noticed that the only course you've completed so far is Introduction to Object-Oriented Programming. I'd highly recommend taking our LINQ Fundamentals course next. LINQ is one of the most important tools in modern C# and becoming comfortable with it will make your code much cleaner and more expressive.

☕If you like our roadmap, please consider buying us a coffee. We appreciate your help 🙂

Overall good work!✋🏻Looking forward to seeing your next projects!

@FeedMyData

Copy link
Copy Markdown
Author

Thanks again for the thorough feedback. Definitely gonna do the Unit tests!

You are right regarding the inconstancy, I kinda forgot about it.
I struggled design wise. I am already recording my progress in a google sheet. Often, I write that I start at 14h, stop at 16h30, but write 2h15 coding time because I did a break. I wasn't happy to bound the duration with startDate and endTime. But I was also unhappy to have to enter manually a duration every time.
I should have added a step to validate the auto-calculated duration. Like "press enter to validate duration or enter a custom duration" (that should not be exceeding the generated startDate / endtime).
I see how to do it, which is good. I'll leave it like this as I won't use this project as a showcase, and I still prefer google sheet ^^'.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants