Hive is a robust and user-friendly IPFS (InterPlanetary File System) file manager that provides a seamless interface for interacting with the decentralized web. This project offers a set of powerful features for managing files on IPFS, including uploading, downloading, and managing nodes.
- File Upload: Easily upload files to IPFS.
- File Management: View, download, and delete files stored on IPFS.
- Node Information: Get detailed information about connected IPFS nodes.
- Node Connectivity: Ping and manage connections to other IPFS nodes.
- Web Interface: A clean and intuitive web interface for easy interaction.
- Go 1.16 or higher
- IPFS daemon running locally or a remote IPFS node
- Clone the repository:
git clone https://github.com/zde37/Hive.git
- Navigate to the project directory:
cd Hive
- Build the project:
go build ./cmd/main.go
- Run the application:
./main
The application uses environment variables for configuration. Set the following variables:
IPFS_RPC_ADDR: Address of the IPFS RPC APIIPFS_WEB_UI_ADDR: Address of the IPFS Web UIIPFS_GATEWAY_ADDR: Address of the IPFS GatewaySERVER_ADDR: Address for the Hive server to listen on
After starting the application, navigate to <SERVER_ADDR>/v1/home e.g http://localhost:7000/v1/home in your web browser to access the Hive web interface.
- Click on the "Upload" tab in the navigation menu.
- Click to select a file from your device.
- The file will be uploaded to IPFS, and you'll receive the IPFS hash (CID) for future reference.
- Click on the "My Files" tab to view your uploaded files.
- Use the provided options to download, delete, or view file details.
- Click on the "Nodes" tab to view information about connected IPFS nodes.
- You can ping nodes(indirectly) and view detailed node information.
Hive provides a RESTful API for programmatic interaction:
GET /v1/hello-world: Check the health status of the applicationPOST /v1/file: Upload a file to IPFSGET /v1/file?cid={CID}: Download a file from IPFSDELETE /v1/file/{CID}: Delete a file from IPFSGET /v1/pins: List all pinned filesGET /v1/peers: List all connected peersGET /v1/info/{peerid}: Get information about a specific node
cmd/: Contains the main application entry pointinternal/: Internal packagesconfig/: Configuration managementhandler/: HTTP request handlersipfs/: IPFS client implementationfrontend/: Web interface files
To run the test suite:
make test
Contributions to Hive are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- IPFS team for their amazing work on decentralized storage
- Go community for the excellent tooling and libraries

