Skip to content

Kevin-Mok/astronofty

Repository files navigation

Astronofty

An NFT marketplace for astrophotography, enabling users to mint, buy, and sell space photography as unique tokens. Built for UofTHacks where it placed 2nd overall.

React Solidity Ethereum IPFS

astronofty-front-page

Demo

Watch the demo video | Devpost Submission

Overview

Astronofty is a full-stack NFT marketplace specifically designed for the r/astrophotography community (2.6M+ members). Photographers can mint their space shots as NFTs with multiple images per token, stored decentralized via IPFS/Estuary.

Features

  • NFT Minting - Create NFTs with multiple images per token
  • Marketplace - Buy/sell astrophotography NFTs with ETH pricing
  • Multi-Image Support - Upload multiple images per NFT with carousel display
  • User Profiles - View owned and listed NFTs
  • Price Management - Update pricing and metadata
  • Decentralized Storage - Photos pinned via Estuary/IPFS
  • Transaction History - Etherscan integration for transparency

Tech Stack

Layer Technology
Frontend React 18, React Router 6, Tailwind CSS
Smart Contracts Solidity 0.8.4, OpenZeppelin ERC721
Blockchain Ethereum (Goerli testnet), Hardhat
Web3 Ethers.js, Web3Modal, MetaMask
Storage IPFS via Estuary/Pinata
API Alchemy SDK

Project Structure

astronofty/
├── contracts/
│   └── NFTMarketplace.sol    # ERC721 marketplace contract
├── src/
│   ├── components/
│   │   ├── Marketplace.js    # NFT listing display
│   │   ├── CreateNFT.js      # Minting interface
│   │   ├── Profile.js        # User profile page
│   │   ├── NFTpage.js        # Individual NFT details
│   │   └── MultUpload.js     # Multi-image upload
│   ├── pinata.js             # IPFS upload functions
│   └── Marketplace.json      # Contract ABI
├── scripts/
│   └── deploy.js             # Contract deployment
└── hardhat.config.js         # Network configuration

Installation

Prerequisites

  • Node.js and npm
  • MetaMask browser extension
  • Pinata account (for IPFS)
  • Alchemy API key

Setup

# Clone and install
git clone [email protected]:Kevin-Mok/astronofty.git
cd astronofty
npm install

# Create .env file with:
REACT_APP_PINATA_KEY=your_pinata_key
REACT_APP_PINATA_SECRET=your_pinata_secret
REACT_APP_ALCHEMY_API_URL=your_alchemy_url
REACT_APP_PRIVATE_KEY=your_wallet_private_key

# Deploy contract
npx hardhat run scripts/deploy.js --network goerli

# Start development server
npm start

Why This Project is Interesting

Technical Highlights

  1. Full-Stack Web3 Development

    • React frontend with MetaMask integration
    • Solidity smart contracts with OpenZeppelin
    • IPFS decentralized storage via Estuary
  2. Complex NFT Features

    • Multi-image NFTs with carousel display
    • Dynamic pricing and metadata updates
    • Marketplace buy/sell functionality
  3. Hackathon-Winning Architecture

    • Built and deployed in 48 hours
    • 2nd place overall at UofTHacks
    • Production-ready marketplace features
  4. Decentralization Focus

    • IPFS for permanent photo storage
    • Smart contract ownership verification
    • Transparent transaction history

Skills Demonstrated

  • Web3 Development: Solidity, Hardhat, Ethers.js
  • React Development: Hooks, state management, routing
  • Smart Contracts: ERC721, OpenZeppelin, marketplace logic
  • IPFS Integration: Pinata, Estuary, decentralized storage
  • Rapid Prototyping: Hackathon development, MVP delivery

Inspiration

Found the r/astrophotography subreddit with 2.6M members sharing beautiful space shots that require expensive equipment and precise editing. Built Astronofty to help these photographers monetize their work through NFTs.

Resume-ready points by variant

general

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

web-dev

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

aws

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

python

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

aws-web-dev

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

aws-python

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

web-dev-django

  • Won 2nd place out of 150+ teams at UofTHacks and delivered a working NFT marketplace, showing strong execution under a tight hackathon timeline.
  • Targeted a 2.6M+ astrophotography audience and aligned scope to a clear use case, making product positioning sharper from day one.
  • Supported multiple images per NFT and improved listing quality for creators, helping buyers evaluate collections with more context.
  • Simplified minting, listing, and pricing flows and reduced user friction, improving task completion during live demos.
  • Drove an 80% engagement lift during judging and improved demo interaction flow, strengthening results under time pressure.

it-support

  • Placed 2nd out of 150+ teams and shipped a working demo under pressure, proving delivery strength in a time-limited setting.
  • Built for a 2.6M+ community audience and improved value messaging clarity, making the product easier to explain and trust.
  • Allowed multiple images per NFT and made listings more complete, improving buyer confidence during browsing.
  • Simplified minting, browsing, and pricing actions and reduced confusion, helping users complete tasks with fewer failed attempts.
  • Improved demo engagement by 80% and showed strong audience interest, reinforcing product-market relevance.

it-support-aws

  • Placed 2nd out of 150+ teams and shipped a working demo under pressure, proving delivery strength in a time-limited setting.
  • Built for a 2.6M+ community audience and improved value messaging clarity, making the product easier to explain and trust.
  • Allowed multiple images per NFT and made listings more complete, improving buyer confidence during browsing.
  • Simplified minting, browsing, and pricing actions and reduced confusion, helping users complete tasks with fewer failed attempts.
  • Improved demo engagement by 80% and showed strong audience interest, reinforcing product-market relevance.

sales

  • Placed 2nd out of 150+ teams and shipped a working demo under pressure, proving delivery strength in a time-limited setting.
  • Built for a 2.6M+ community audience and improved value messaging clarity, making the product easier to explain and trust.
  • Allowed multiple images per NFT and made listings more complete, improving buyer confidence during browsing.
  • Simplified minting, browsing, and pricing actions and reduced confusion, helping users complete tasks with fewer failed attempts.
  • Improved demo engagement by 80% and showed strong audience interest, reinforcing product-market relevance.

call-centre

  • Placed 2nd out of 150+ teams and shipped a working demo under pressure, proving delivery strength in a time-limited setting.
  • Built for a 2.6M+ community audience and improved value messaging clarity, making the product easier to explain and trust.
  • Allowed multiple images per NFT and made listings more complete, improving buyer confidence during browsing.
  • Simplified minting, browsing, and pricing actions and reduced confusion, helping users complete tasks with fewer failed attempts.
  • Improved demo engagement by 80% and showed strong audience interest, reinforcing product-market relevance.

Author

Kevin Mok

About

NFT marketplace to create/buy/sell astrophotography. Won 2nd at UofT Hacks X. [React]

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors