Typically for any personal projects I will do it before any large refractors then keep on top of code coverage going forth. I find this approach let’s me move fast until I reach a level of seriousness.
I sometimes use TDD when adding new functionality, I even created a relatively popular YouTube video on the topic. I find it most useful when I’m coding a particularly complicated function, helps me think through the problem better.