I recently self-hosted a NextCloud instanced and was surprised by the timer app.
You set your clients and projects. When you do work on a project you just start the timer and when you press stop, assign the time to a project along with a description.