Mint My Moment lets users capture, design, and mint their special memories as NFTs in seconds.
Mint My Moment is a Web3 app that lets users upload or capture photos/videos, add design elements and captions, then mint those assets as unique NFTs (ERC-721) with on-chain ownership and off-chain metadata stored on IPFS/web3.storage. The product focuses on simplicity, low friction (wallet connect, one-click mint), creative tooling (filters, frames, captions), and discoverability (user profile, feed, marketplace).
*Target users:- Social creators who want to immortalize special moments. NFT collectors and speculators. Hackathon judges / early adopters who like polished demos.
Core features (MVP):- Authentication / Wallet: Connect with MetaMask / WalletConnect. Capture/Upload: Upload photo/video or take picture from device camera. Editor: Add caption, stickers, simple filters, frame templates, and set properties (title, description, tags). Preview: See the final collectible and metadata. Mint: One-click mint to chosen network (testnet for hackathon). Uses ERC-721 contract; metadata URI points to IPFS. Option for lazy minting (mint on sale) to avoid upfront gas for buyer flows. Profile & Collection: View minted items, metadata, ownership. Marketplace / Listing: List for sale (optional: integrate OpenSea / simple on-site marketplace). Royalties: Set creator royalty % (standard: EIP-2981 or marketplace metadata). Share: Social share links.
user flow (step-by-step):-
User connects wallet.
Uploads image or captures photo.
Uses editor to add a caption + one of 5 frames.
Clicks “Preview” → metadata JSON is generated.
Clicks “Mint” → frontend uploads image + metadata to web3.storage/IPFS, receives CID.
Frontend calls smart contract mintNFT(to, tokenURI) which stores tokenURI (IPFS CID) on-chain.
Transaction confirmed → user owns NFT; marketplace displays it.
Tech stack (MVP):-
Frontend: HTML,CSS and javascript for rapid styling.
Wallet: - web3modal.
Storage: web3.storage (easy dev keys) → returns IPFS CID.
Contracts: Solidity + OpenZeppelin ERC-721 .
Dev tools: Hardhat3, ethers.js .
Hosting: Vercel (frontend) public RPC for node provider.
Smart contract design (concise):-
Use OpenZeppelin ERC-721 .
Gas & cost strategies:-
Lazy minting: store metadata on IPFS and only mint to on-chain when user lists or upon first transfer — shifts gas to buyer.
Batch minting (if user wants multiple NFTs at once) to reduce per-token gas cost.
Use optimistic UX showing estimated gas with metamask for transparency.
Security & privacy:-
Validate file types and sizes on frontend & server (if any).
Sanitize user input (captions, titles) to avoid injection in any rendering views.
Never store private keys anywhere — use client wallets.
If storing user email (optional), follow privacy rules (GDPR/CCPA considerations).
Contract: use OpenZeppelin audited libraries; include pausability if you want emergency stop.
Testing & QA:-
Unit tests: Hardhat3 for contract functions (minting, royalty behavior, access control).
Integration tests: Simulate upload → mint → tokenURI reads back correctly.
Manual QA: Test wallet flows across MetaMask, WalletConnect, desktop & mobile browsers.
Load testing: Simulate many concurrent uploads (for web server & storage) if you run a backend.
Deployment / CI:-
Contracts: Hardhat scripts + GitHub Actions to deploy to testnets; store addresses in env files.
Frontend: Vercel with environment variables for web3.storage key and contract address. Use .env.local for local dev. (You previously asked about Vercel .env — ensure keys are added in Vercel dashboard and not committed to git.)
Create a “Deploy to testnet” button in README that triggers the GH Actions workflow.
How I Built “Mint My Moment”
Mint My Moment was built as a full-stack Web3 DApp that bridges creativity and blockchain ownership. The main goal was to let users capture, design, and mint their memories as NFTs — all within a few clicks.
Core Technologies & Architecture:- Built using javascript for fast development and hot reloading. Styled with HTML,CSS for quick, responsive UI design. Wallet & Blockchain Integration: Ethers.js + Wagmi. Wallet connection handled using Ethers.js + Wagmi, making it simple to connect MetaMask or WalletConnect in just one click. Smart contract interactions (minting, fetching metadata) are powered by Ethers.js, providing a clean and minimal setup. Used Alchemy RPC for stable and fast blockchain communication on the Sepolia Testnet.
Smart Contracts: Solidity + Hardhat + OpenZeppelin:- The NFT minting contract is based on ERC-721 using OpenZeppelin libraries for security and best practices. Developed and tested using Hardhat3 for local simulation. Deployment automated via Hardhat scripts, which output the deployed contract address for use in .env (in the frontend).
Storage: Web3.Storage (IPFS + Filecoin):- User photos, along with metadata JSON (name, description, attributes), are uploaded to Web3.Storage, which automatically stores data on IPFS and backs it up on Filecoin. The returned CID (Content Identifier) is then used as the tokenURI in the NFT smart contract. This gives permanent, decentralized hosting for all memories — no centralized server or database required.
Deployment & DevOps:-
Frontend deployed on Vercel for speed and auto CI/CD on every Git push.
Used environment variables (.env) on Vercel to securely store Web3.Storage API keys and the deployed contract address.
Smart contracts deployed via Hardhat to Sepolia using Alchemy RPC URLs.
Partner Technologies & Benefits:-
Web3.Storage → made decentralized storage simple; automatically pinned files on IPFS/Filecoin.
Alchemy → gave a reliable RPC endpoint for testnet deployment and fast transaction confirmations.
OpenZeppelin → saved tons of time with pre-audited smart contract templates.
Vercel → allowed instant redeployments, perfect for iterative hackathon work.

