My First ERC721 Contract

Hi @Lord_Eldod , welcome to the forums.

I think your project and code is definitely on the right track and looks interesting! Making adoptable mechanisms is innovation and that’s highly valued.

Personally I think you should start with OpenZeppelin Upgrades: Step by Step Tutorial for Hardhat

And learn to create basic ERC20 tokens first. If you follow this, it can get you a dev environment up and running.

Then after proving you can deploy a token, you can follow examples of NFTs.

Something I think that you might want, is that when they adopt, they can add to the URI. So that way the new owner of the NFT can add something to the NFT. Perhaps call setGenerationURI in the adopt function.

I think there is surely a mathematical way to calculatePrice()

r_102813_Wx1Vb

You can also import SafeMath library from Open Zeppelin so you can use their math functions, so you can eliminate the add, sub, mul functions.

I think the way you are handling _tokenIds is great.

The best way to test your code is by doing it locally. Make test cases after test case. If you think of something to test, then make it into a test case. As you code your project you will think of new things to test, and when you do so - make a TODO so that you can code in a test case for it. I use chai and mocha. https://mochajs.org/ https://www.chaijs.com/

Although it’s not as fun it’s very important to do testing.

Your project shows a lot of promise, I hope it goes well.