A modern, responsive NFT marketplace built with Next.js, TypeScript, shadcn UI components, and Ethereum blockchain integration.
- 🖼️ Browse, create, buy, and sell NFTs
- 👛 Connect your Ethereum wallet (MetaMask, etc.)
- 💸 List your NFTs for sale with custom pricing
- 🔍 View detailed NFT information with expandable cards
- 👤 Interactive user profile menu with account statistics
- 🔄 Real-time marketplace updates with transaction history
- 🏷️ NFT categorization and filtering by category
- 🔎 Advanced search functionality for discovering NFTs
- 📊 Smart sorting options (recent, price ascending/descending)
- 💾 Local caching with localStorage for improved performance
- 📝 IPFS integration for decentralized file storage
- 🎨 NFT metadata upload with custom category support
- 🔗 Track transaction history and marketplace activities
- ⚡ Batch metadata loading for optimized performance
- Frontend: Next.js 15, React 19, TypeScript, TailwindCSS
- UI Components: shadcn UI (Radix UI), Motion library for animations
- Blockchain: Ethereum (via ethers.js v6)
- Smart Contracts: Solidity 0.8.28, Hardhat, OpenZeppelin
- Storage: IPFS integration for decentralized file storage
- Internationalization: Multi-language support (Locale Provider)
- State Management: React Hooks with Web3Provider
- Node.js (v16+)
- npm or yarn
- MetaMask or other Ethereum wallet browser extension
git clone <repository-url>
cd my-nft-marketplacenpm install
# or
yarn installcd hardhat
npm install
npx hardhat compilenpm run dev
# or
yarn devOpen http://localhost:3000 in your browser to see the application.
The application requires NFT and Marketplace contracts to be deployed. To deploy new contracts:
cd hardhat
npx hardhat run scripts/deploy.ts --network localhostFor testing purposes, you can run a local Ethereum node:
npx hardhat node- Click the "Connect Wallet" button in the top right corner
- Approve the connection in your wallet extension (MetaMask)
- Once connected, you'll see your account information, balance, and NFT statistics
- The home page displays all available NFTs
- Click on any NFT card to view detailed information
- Use the search bar to find NFTs by name or description
- Filter NFTs by category using the category dropdown
- Sort NFTs by recent, price (low to high), or price (high to low)
- Navigate to the "Create NFT" page
- Upload an image for your NFT
- Fill in the name and description
- Optionally assign a category to your NFT
- Click "Create" and approve the transaction in your wallet
- Your NFT will be minted and stored on IPFS
- Click on a listed NFT to view details
- Click the "Buy" button
- Approve the transaction in your wallet
- Once confirmed, the NFT will be transferred to your wallet
- Navigate to "My NFTs" page
- Click on an NFT you own
- Enter a price and click "List"
- Approve the transaction in your wallet
- Your NFT will now be listed for sale
- Navigate to "My NFTs" page to see all NFTs you own
- You can list, unlist, or view your NFTs from this page
- NFTs displayed with all metadata including category information
- Navigate to the "History" page to view your transaction history
- See all marketplace activities and transaction details
- Track buying and selling activities in chronological order
ExpandableNFTCard: Interactive card component that displays NFT information and expands to show detailed view with purchase/listing options.
NFTList: Component for displaying collections of NFTs with grid layout support.
NFTUploader: File upload component with image preview for NFT creation.
UserProfileMenu: User account interface showing wallet address, ETH balance, and NFT statistics. Provides quick access to functions like copying wallet address and viewing on Etherscan.
MainLayout: Primary layout wrapper providing navigation and consistent styling across pages.
Web3Provider: Manages Ethereum wallet connection and blockchain interaction state.
ThemeProvider: Handles light/dark theme switching using next-themes.
LocaleProvider: Provides internationalization support with multi-language capability.
/app: Page components and routes/api/upload: API endpoint for file uploads to IPFS/create: NFT creation page/history: Transaction history page/my-nfts: User's NFT collection management/test: Testing page
/components: Reusable React components/nft: NFT-specific components (cards, lists)/ui: shadcn UI component library/providers: Context providers (Web3, Theme, Locale)/layout: Layout components
/hooks: Custom React hooks for blockchain interaction and utilities/hardhat: Smart contracts and deployment scripts/contracts: Solidity smart contracts (NFT, Marketplace)/scripts: Deployment and interaction scripts/test: Contract test suites
/lib: Utility functions and helpers/pinata: IPFS and file storage utilities
/public: Static assets and uploaded files/types: TypeScript type definitions/config: Configuration files for contracts and settings