Skip to content

Upload images to IPFS (Pinata), store hashes on Ethereum via Solidity, and interact with a React + MetaMask frontend. Runs on Hardhat locally; simple setup, env vars, and deploy scripts included.

License

Notifications You must be signed in to change notification settings

yuki-sf/ETH-File-Share

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌐 ETH-File-Share – "Decentralize Your Images" 📸✨

Decentralized Vibes

Web3 Badge


Welcome to ETH-File-Share, where we take boring old image uploads and blast them into the future of the internet 🌌.

Forget central servers 🖥️ - your pictures deserve to live forever on IPFS via Pinata, tracked immutably on the Ethereum blockchain, and verified by none other than your friendly 🦊 MetaMask wallet.

💬 “Not all heroes wear capes… some just decentralize cat pics.”


🚦 What is This?

A decentralized application (dApp) that lets you:

  • 📸 Upload images → stored on IPFS/Pinata
  • ⛓ Record metadata on Ethereum via smart contracts
  • 🦊 Manage accounts with MetaMask
  • ⚛️ Interact through a slick React frontend

Think Instagram, but with blockchain superpowers 🦸.


🔧 Features

🌐 Web3 File Sharing

  • Store images beyond Big Tech 👋

📦 IPFS + Pinata Storage

  • Files = decentralized + permanent (ish)

🦊 MetaMask Integration

  • Connect, sign, transact in one click

Smart Contracts via Hardhat

  • Solidity magic under the hood

⚛️ React UI

  • Fast, clean, no nonsense frontend

🛠️ Tech Stack

  • Frontend: React (⚛️)
  • Blockchain: Hardhat (⛓)
  • Wallet: MetaMask (🦊)
  • Storage: Pinata + IPFS (📦)

🎮 How to Play (Local Setup)

🚀 Getting Started

Clone the repo:

git clone https://github.com/yuki-sf/ETH-File-Share.git
cd ETH-File-Share
npm install
### 🏗 Step 1: Start your local blockchain
```bash
npx hardhat node

🔮 Boom → A mini Ethereum world spins up on http://127.0.0.1:8545/.

📜 Step 2: Deploy contracts

# Compile Smart Contract
npx hardhat compile
# Deploy Contract
npx hardhat run scripts/deploy.js --network localhost

Your Solidity contracts are now alive & kicking on the local chain ⚡.

🎨 Step 3: Run the React app

Move into the frontend folder:

cd client
npm install

Now start the app:

npm start     # default http://localhost:3000/

Configuration

Set up environment variables:

REACT_APP_PINATA_API_KEY=YOUR_PINATA_API_KEY
REACT_APP_PINATA_SECRET_API_KEY=YOUR_PINATA_SECRET_KEY

REACT_APP_HARDHAT_ACCOUNT=YOUR_HARDHAT_ACCOUNT

🦊 Setting up MetaMask

Open MetaMask → Add Network → Localhost 8545

Network Name: Hardhat Local
RPC URL: http://127.0.0.1:8545/
Chain ID: 31337
Currency Symbol: ETH

Import one of the test accounts (private keys printed in Hardhat terminal).

Connect wallet inside the React app → done ✅

🎉 How It Works (Flow)

📸 React App (client)
       │
       ▼
🦊 MetaMask  →  Transaction Signing
       │
       ▼
⛓ Hardhat Blockchain (Smart Contracts)
       │
       ▼
📦 Pinata / IPFS → Stores your image

💡 Future Upgrades

  • 🌈 Support for more file types
  • 🔒 End-to-end encryption for private shares
  • 📂 A public gallery of uploads
  • 🚀 Deploy on Ethereum testnets / mainnet

🌟 Show Some Love

If this project made you go “wow that’s cute & geeky” 🤩 drop a ⭐ on GitHub and share the Web3 vibes 💜


About

Upload images to IPFS (Pinata), store hashes on Ethereum via Solidity, and interact with a React + MetaMask frontend. Runs on Hardhat locally; simple setup, env vars, and deploy scripts included.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published