When I made 2FA support for one service, I also started with a simple one – first TOTP, then I added HOTP for more flexibility. In my opinion, it is important to think about where and how the secret key will be stored, and don’t forget about the code lifetime. The hotp generator helped me a lot in my tests – you could quickly check how the server and client synchronize, especially in the case of HOTP, where the counter plays a key role. In general, there are more useful utilities on this site, which help to set everything up without spending hours on debugging. And another tip is to run everything on test accounts first, and then give it to users.