Getting Started

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.


1. Overview

Frensei is a platform built by Diddybread, as part of the On-Chain Orbiters 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.


2. Key Features

✅ Scalable Launchpad

Automatically adjusts to accommodate increasing traffic.

✅ Responsive Design

Optimized for all screen sizes, including mobile.

✅ Allowlist Manager

Supports CSV-based allowlists with optional mint quantities per address.

✅ Dynamic Mint Allocations

Allow different users to mint different quantities in allowlisted phases.

✅ Wallet Checker

Integrated on the collection page to ensure wallets are mint-ready.

✅ Creator Portal

Manage mints, set token URIs, configure mint phases, and withdraw funds directly from the UI.

✅ On-Chain Royalties

Native support for ERC2981 royalty standard.

✅ Burn Support

Built-in burnable functionality using ERC721ABurnable.


3. Smart Contract Functionality

Contract Name: Frensei

  • Standard: ERC721A

  • Inherits: ERC721A, ERC721ABurnable, ERC2981, Ownable, ReentrancyGuard

Core Concepts

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()


4. Creator Responsibilities

Metadata Standards

Creators are responsible for producing valid token metadata. Follow the OpenSea metadata standard: https://docs.opensea.io/docs/metadata-standards

Token URI Setup

  1. Base URI: A static string like https://mycdn.com/metadata/

  2. Iterative URIs: Add numbered suffix like /1.json

  3. Per-token URI: Use setTokenURI() to override

Allowlist CSV Formats

  • Simple:

    0xabc...
    0xdef...
  • With quantity:

    0xabc...,2
    0xdef...,1
  • Default quantity is 1 if not specified.


5. Common Errors and Troubleshooting

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


6. Advanced Configuration

Switching Payment Type

Use setPaymentToken() to configure Sei vs ERC20 payment. Must be set before minting starts.

Updating Mint Phases

Use setMintPhases() with an array of phases. Replaces all existing phases.

Freezing or Unfreezing Minting

Use setMintable(true|false) to toggle.


7. Security Considerations

  • Uses ReentrancyGuard on mint and withdraw

  • Validates Merkle proofs on-chain

  • Owner-only functions clearly scoped

  • Tokens use _exists() checks for URI safety


8. FAQ

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.


9. Contact & Support

The platform is free to use and we offer no direct support services.

For bug reports or feature requests, join our Discord.


Happy minting 🚀

Last updated