When it comes to software development, if you don't have an idea of how long something will take, you should do a test run. Time yourself and see how long it takes to finish a couple tasks. Use that timing to infer the overall time for all the tasks.
Ideally you have experience in something so you can look back and say "a simple landing page takes half a day" or "a Node-based CRUD takes a few hours". You'll be able to know the exact tools/frameworks you'll need and how to apply them, which makes the time estimation easier. Especially if you can extract components from previous projects.
For the unknowns, you think about it in terms of time. Set a broad goal, something giving yourself a bit of leeway. If you think it might take 1 week to figure it out, make it 2 weeks. You never know what nuance you'll trip up on during your learning experience.