W3Share is a decentralized application (dApp) that leverages IPFS (InterPlanetary File System) and Blockchain technology to provide a secure, tamper-proof data storage solution. Built with modern web technologies, W3Share allows users to upload files, store them on IPFS, and register the IPFS hash on the blockchain for immutable proof of storage.
- Decentralized Storage: Securely store files on IPFS via web3.storage.
- Blockchain Integration: Immutably record file hashes on the blockchain for transparency and security.
- User-Friendly Interface: Built with React for a seamless user experience.
- JWT Authentication: Secure API interactions with JSON Web Tokens (JWT).
- Tamper-Proof Records: Ensure data integrity and ownership verification.
- React: Frontend framework for building the user interface.
- IPFS: Decentralized storage solution for distributed data storage.
- Blockchain: Smart contracts for recording and verifying data storage.
- JWT: Secure authentication for API interactions.
- Client: The user interface where users interact with the application.
- API Request: Users send requests to upload or retrieve data.
- Next.js: Handles the backend logic and processes API requests.
- POST Request: Data is sent to the
/api/uploadData
endpoint. - API Response: The server responds with the IPFS hash and blockchain transaction details.
- web3.storage: Stores the data on IPFS and generates a unique hash.
- Smart Contract: Records the IPFS hash on the blockchain for immutable proof.
Here’s the architecture diagram for W3Share:

This diagram illustrates how data flows through the system, from the client to IPFS and the blockchain.
- Node.js (version 16.x or higher)
- MetaMask or any compatible Web3 wallet
- JWT Token: Required for secure API interactions.
- Gateway Address: Dedicated gateway address for IPFS.
-
Clone the repository:
git clone https://github.com/Kamal007OLica/W3share.git cd W3share
-
Install dependencies:
npm install
-
Set up your environment:
- Add your JWT token and dedicated gateway address in the appropriate configuration files.
-
Run the application:
npm start
- Open the application in your browser (typically
http://localhost:3000
). - Connect your Web3 wallet (e.g., MetaMask).
- Upload a file to store it on IPFS.
- The IPFS hash will be recorded on the blockchain.
- Retrieve and verify your stored data using the IPFS hash.
We welcome contributions! Here’s how you can get involved:
- Fork the repository.
- Create a new branch (
feature-name
). - Commit your changes (
git commit -m "Add feature"
). - Push your branch (
git push origin feature-name
). - Open a pull request.
This project is licensed under the The Unlicense. This means you can freely use, modify, and distribute the content without any restrictions. For more details, see the LICENSE file.