File sharing web application that uses IPFS protocol and Ethereum blockchain for decentralized file storage.
This is a dApp or decentralized application with a simple frontend connected with a set of backend services composed by a Smart Contract deployed to Ganache Ethereum testnet and a storage service using IPFS.
The Smart Contract role is to store basic information about the users and files stored in the app.
- Solidity for Smart Contract development on Ethereum.
- Truffle Suite for local infrastructure and SC deployment.
- Ganache as a local development blockchain.
- Metamask for in-browser user authentication.
- React.js (Next.js Framework).
- Tailwind CSS for styling components.
- Ant UI framework for prebuilt UI components.
- The users connect their account to Metamask after pressing Connect button (the app attempts to do this automatically if there is an existing account logged in in Metamask).
- Once there is a connected account in the app, the app enables the button for start uploading files on the Upload section.
- Once you uploaded your first file, you will be able to see the result in the Files section (Below the upload section).
First, configure .env
file for blockchain configuration
INFURA_PROJECT_ID = <Your Infura Project ID>
PRIVATE_KEY = <Your Infura private key>
ACCOUNT_ADDRESS = <Your Account Address>
First, initialize truffle project on the repo.
truffle init
Then migrate smart contracts to ganache.
truffle migrate --network development
Then, run the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 with your browser to see the result.