user4129: I want to create a NFT collection in which the creator does not have to mint the NFT's but the consumer does through a smart contract that they interact with. Would this be possible to do while sill keeping the same policy ID for each NFT or is that only possible by pre-minting the NFT's and sending them to a storing wallet.

user1231: Yes, you can do that.
An example could be to use a sequence number in a validator script (smart contract) in conjuction with a policy.

Validator script (smart contract) should manage the sequence number. For this, you can use the datum. Every time you mint a NFT, check that datum has increased (+1).
Policy can be the same for all tokens. You can append to your token name, the sequence number (here you can find a function to convert integer to bytestring)

Just make sure, to use a dummy NFT in your validator script:

To identify the right UTXO every time you mint
To validate from the policy script that it's included in the transaction.

Here is a good explanation for that.

4129: <p>I want to create a NFT collection in which the creator does not have to mint the NFT's but the consumer does through a smart contract that they interact with. Would this be possible to do while sill keeping the same policy ID for each NFT or is that only possible by pre-minting the NFT's and sending them to a storing wallet.</p>
 1231: <p>Yes, you can do that.</p>
<p>An example could be to use a sequence number in a validator script (smart contract) in conjuction with a policy.</p>
<ul>
<li>Validator script (smart contract) should manage the sequence number. For this, you can use the datum. Every time you mint a NFT, check that datum has increased (+1).</li>
<li>Policy can be the same for all tokens. You can append to your token name, the sequence number (here you can find a <a href="https://github.com/input-output-hk/plutus/issues/3657#issuecomment-954841099" rel="nofollow noreferrer">function to convert integer to bytestring</a>)</li>
</ul>
<p>Just make sure, to use a dummy NFT in your validator script:</p>
<ul>
<li>To identify the right UTXO every time you mint</li>
<li>To validate from the policy script that it's included in the transaction.</li>
</ul>
<p>Here is a <a href="https://cardano.stackexchange.com/a/4818/1231">good explanation</a> for that.</p>
