next step, should i link with blockchain api to read transaction history of each btc address?
or should i setup my own bitcoin server to do it?
but the syncing process will take a lot of time.
any opinion?
Depending on your server's hardware and specs, synchronizing and parsing the blockchain could be much faster than you think. I would say it would be a better idea to host your own server; the uptime of your local server would still be relatively reliable and you won't have to trust a third party to supply you with the correct information.
I wouldn't say hardware wallets are good for anything requiring frequent access to the coins. Sure, it is possible to just function with the xpub exposed but automating it would be a hassle and using a client with RPC function would be much more viable.