its not hard if you know how:) but u need smartcontract the. you send request from web3 or ethjs to check does the wallet connected have nft collection contract address- return the nft id - load user image from ipfs (must be generated in any format of walking shooting/figbthing) and done you can play with your nft id.
that’s the easy part 😅 hard part is to make sure noone will cheat and claim tokens but cant share more