Strava does it on the free option.
My Profile, select your bike, add components. Simple.
Just add the component with a date and it works out the rest. Retire component when done and add replacement.
Only thing that would be nice that’s missing is the option to move a component from one bike to another so you track the wear on the same component if you’ve swapped things about. That and being able to bring a component out of retirement if you decide to revert back to an old component that still has life left in it.
All a bit anal really. I don’t take it that seriously, like Strava in general, though it can be handy to look back to when I bought something.
The only guide to needing to replace something in my book is when it’s worn. I don’t replace things before they’re done. That includes chains (I replace cassettes at same frequency whether I replace the chain at Park Tools recommended intervals or just left to die. The wear on the cassette is the same be it one chain or three for the life. It only skips if you stick a new chain on it. Keep with old chain, it won’t skip, at least until it’s very dead. A new chain on early *might* not skip, but what advantage does it really give you? Especially if you use good chains, e.g. KMC, that don’t snap).