Customized project

Using Flair's APIs and SDK you can integrate escrow and fundraising into your dApp.
To make your collection compatible with Flair's funding options you can choose any of the following methods:

By using Flair's ready-made NFT smart contract (easiest)

Our team has spent time on building a ready-to-use NFT Collection smart contract and put free as open-source on GitHub (0xflair/nft-collection-scaffold).
Using this read-made contract you will already have features for pre-sale, public-sale, OpenSea integration, and many more, as well as integration with Flair out-of-the-box.

By approving Flair to manage

If your smart contract is based on ERC-1155 standard, or based on an ERC-721 that supports setApprovalForAll(), you can easily approve Flair address, similar to how you'd approve OpenSea to sell your NFTs. With this option, when someone wants to collect one of your NFTs, Flair can transfer the NFT and escrow the payment as per the defined funding options.
This option only works if NFTs are in your wallet and does not work if you have a custom smart contract for your project.

By granting Flair minter role

If your smart contract can assign a MINTER_ROLE, such as OpenZeppelin's access control library, you can assign the minter role to Flair's smart contracts.
This method allows Flair's smart contract to mint a new NFT on your contract and transfer it to the collector and escrow the payment as per funding options you have defined.
This approach is safest because if you decide not to use Flair anymore, you can quickly remove the minter role without upgrading your smart contract.

By allow-listing Flair smart contract to mint

Another approach would be to allow-list Flair's contract address in your smart contract with the ability to mint new tokens. Allow-listing only works if you haven't deployed your smart contract yet, or are using an upgradable library such as OpenZeppelin's upgradeability.
Similar to the previous approach, this allows Flair's smart contract to mint a new NFT on your contract, transfer it to the collector.
Compared to the previous approach, if you needed to stop using Flair, you would have to upgrade your smart contract or build functions to disable it. That's why we recommend using the "minter role" as described in the previous approach.