I am currently working on a small project, and I am working on getting it functional, but I question when exactly should I make commits. I usually just do it when I am done with working on it, but I know in practical projects often times commits are for one specific thing but given the project does not even work yet what exactly do I do.
At your stage I usually try to avoid committing code that doesn’t compile/has syntax errors etc.
Later on I try to make sure that I can go to any commit in the history, and have a program that runs. For example, I don’t want to knowingly add code related to one feature that crashed the entire application just in case I need to go back later. But it’s up to you to decide how unfinished the state of the feature/program is allowed to be when you commit.
And if it’s a side project that only you will work on, you might also just say screw it, even if it catches on and other people will look at your code, they probably won’t care that much about how organized the early work was :)