Freshmint is a TypeScript toolkit for minting NFTs on the Flow network. It bundles batch minting workflows, metadata management, IPFS pinning integration, and ready-to-deploy Cadence contracts so builders can ship NFT projects on Flow without reinventing the pipeline.
- What: A TypeScript toolkit and CLI for creating, minting, and managing NFT collections on Flow.
- Who it's for: NFT project teams, Cadence developers, and JavaScript/TypeScript builders shipping NFT drops on Flow.
- Why use it: Combines Cadence NFT contracts, metadata handling, and IPFS workflows into one TypeScript package so you can go from assets to on-chain mint with less glue code.
- Status: See Releases for the latest version. This project was published as an alpha — review the releases page before production use.
- License: Apache-2.0
- Related repos: onflow/flow-nft · onflow/nft-catalog · onflow/flow-cli. Open-sourced since 2021.
Follow the getting started guide to scaffold your first Freshmint project. A typical flow:
- Install the CLI from the
freshmintpackage. - Initialize a new project directory with a Cadence contract, metadata schema, and asset folder.
- Configure your Flow account, network (emulator, testnet, or mainnet), and IPFS/pinning provider.
- Mint NFTs in batches from a CSV or JSON metadata source.
See the per-package READMEs under packages/ for installation and API details.
- Batch minting: Mint NFTs in batches driven by CSV or JSON metadata inputs.
- Metadata management: Define and validate NFT metadata schemas compatible with Flow NFT metadata views.
- IPFS pinning: Pin NFT media and metadata to IPFS through supported pinning providers.
- Cadence contracts: Ready-to-deploy Cadence contracts for NFT collections, maintained in the
cadencedirectory. - Monorepo packages: Core library, CLI, React integrations, and a Cadence loader live in
packages/. - TypeScript first: Full TypeScript types for metadata, mint flows, and contract interactions.
Freshmint is organized as a monorepo. The primary entry points are:
packages/freshmint— thefreshmintCLI for project scaffolding and minting.packages/core— the core TypeScript library used by the CLI and integrations.packages/react— React helpers for Freshmint-powered frontends.packages/cadence-loader— utilities for loading Cadence source files.
Refer to docs/getting-started.md for end-to-end examples, and docs/metadata.md for the metadata schema format.
Freshmint combines three layers:
- Cadence contracts (in
cadence/) implement the on-chain NFT collection, following the NonFungibleToken standard and metadata views. - TypeScript packages (in
packages/) wrap contract deployment, transaction building, metadata validation, and IPFS pinning into a single JavaScript/TypeScript API and CLI. - Developer workflow: you provide metadata (CSV/JSON) and assets; Freshmint pins media to IPFS, writes metadata into Cadence transactions, and submits batched mint transactions to the configured Flow network.
The result is a repeatable pipeline from a local asset folder to an on-chain NFT collection on Flow.
What is Freshmint? A TypeScript toolkit and CLI for creating and minting NFT collections on the Flow network, including Cadence contracts, metadata tooling, and IPFS workflows.
What networks does it target?
Freshmint targets Flow — the emulator, testnet, and mainnet. See docs/testnet.md for testnet-specific guidance.
Which smart contract language does Freshmint use?
Freshmint's on-chain components are written in Cadence, the resource-oriented smart contract language for Flow. The Cadence sources live in cadence/.
Do I need Node.js to use Freshmint?
Yes. Freshmint is published as TypeScript packages and a Node.js CLI. See docs/nodejs.md for Node.js usage.
How does Freshmint handle NFT metadata?
Metadata schemas are defined per project and validated before minting. Freshmint can pin metadata and media to IPFS and record the resulting CIDs in Cadence mint transactions. See docs/metadata.md.
Is Freshmint production-ready? Check the Releases page for current version and release notes before using it in production.
Where do I report bugs or request features? Open an issue in this repo, or join the Flow Discord.
This repo is part of the Flow network, a Layer 1 blockchain built for consumer applications, AI Agents, and DeFi at scale.
- Developer docs: https://developers.flow.com
- Cadence language: https://cadence-lang.org
- Community: Flow Discord · Flow Forum
- Governance: Flow Improvement Proposals