Getting Started
Last updated
Last updated
Welcome to the Frensei Launchpad documentation. Frensei is a creator-first launchpad on the Sei Network, designed to simplify NFT launches while offering advanced configurability and scalability. This documentation outlines the Frensei smart contract functionality, platform features, and best practices for creators.
Frensei is a platform built by , as part of the roadmap, the first fully on-chain NFT on Sei. Designed for NFT project creators, Frensei offers:
A powerful ERC721A-based smart contract
On-chain royalties
Burnable NFTs
Dynamic minting phases with allowlists
An intuitive creator portal
The platform is entirely free to use. However, it assumes a baseline understanding of NFTs and EVM-contracts.
Automatically adjusts to accommodate increasing traffic.
Optimized for all screen sizes, including mobile.
Supports CSV-based allowlists with optional mint quantities per address.
Allow different users to mint different quantities in allowlisted phases.
Integrated on the collection page to ensure wallets are mint-ready.
Manage mints, set token URIs, configure mint phases, and withdraw funds directly from the UI.
Native support for ERC2981 royalty standard.
Built-in burnable functionality using ERC721ABurnable.
Frensei
Standard: ERC721A
Inherits: ERC721A
, ERC721ABurnable
, ERC2981
, Ownable
, ReentrancyGuard
Mint Phases
Each phase includes:
startTime
/ endTime
price
merkleRoot
(for allowlists)
maxMintPerWallet
(0 = unlimited)
mintableSupply
(0 = remaining global supply)
Multiple phases can be active concurrently.
Minting
mint()
function validates phase, proof (if needed), supply limits, and processes payment (Sei or ERC20).
Dynamic allowlists via Merkle trees allow different mint quantities per address.
Token URI Management
baseTokenURI
+ optional iterative suffixing (e.g., /1.json
, /2.json
, etc.)
setTokenURI()
allows override per-token
Royalties
Configurable receiver and percentage (in basis points)
Uses ERC2981
Payments
Supports Sei or ERC20
Configurable before minting begins
Collected funds can be withdrawn via withdrawFunds()
Base URI: A static string like https://mycdn.com/metadata/
Iterative URIs: Add numbered suffix like /1.json
Per-token URI: Use setTokenURI()
to override
Simple:
With quantity:
Default quantity is 1 if not specified.
Error
Meaning
NotEnoughSupplyAvailable
Supply limit reached (phase or global)
InvalidPhase
Phase index out of bounds or not active
InvalidProof
Merkle proof incorrect
MintAllowanceExceeded
Wallet mint limit exceeded
InsufficientPayment
Sei/Token sent does not match required amount
NonExistingToken
Token URI called on a non-minted token
InvalidPaymentToken
ERC20 token address is invalid or zero
FundTransferFailed
Sei withdrawal failed
Use setPaymentToken()
to configure Sei vs ERC20 payment. Must be set before minting starts.
Use setMintPhases()
with an array of phases. Replaces all existing phases.
Use setMintable(true|false)
to toggle.
Uses ReentrancyGuard
on mint and withdraw
Validates Merkle proofs on-chain
Owner-only functions clearly scoped
Tokens use _exists()
checks for URI safety
Q: How do I start a mint?
Set, save and sync mint phases and token URI
Toggle mintable
to true
Q: How do I check if a user is on the allowlist?
Each collection on Frensei has a dedicated whitelist checker which can be found at https://frensei.io/collections/{your-collection-slug}/allowlist
Q: Can I change the metadata after mint?
Yes, using setTokenURI(tokenId, newUri)
for specific tokens or setBaseURI(baseURI, extension, iterative)
for the entire collection
Q: Can I limit users differently?
Yes, by setting different allowedMints
in your Merkle tree
Q: Is there a platform fee?
No. Frensei is free to use.
The platform is free to use and we offer no direct support services.
Happy minting 🚀
Creators are responsible for producing valid token metadata. Follow the OpenSea metadata standard:
For bug reports or feature requests, join our .