filecoin-project / devgrants

👟 Apply for a Filecoin devgrant. Help build the Filecoin ecosystem!
Other
371 stars 308 forks source link

Open Grant Proposal: `PEER-CLI` - Swiss Army Knife for the IPFS #1164

Closed justmert closed 1 year ago

justmert commented 1 year ago

PEER-CLI: Swiss Army Knife for the IPFS

Proposal Category: app-dev

Proposer: justmert

(Optional) Technical Sponsor: No

Do you agree to open source all work you do on behalf of this RFP and dual-license under MIT, APACHE2, or GPL licenses?: Yes, MIT

Project Description

Applications built on the IPFS protocol generally tends to be Web applications built with a centralized client-server architecture with some price modeling and payment system. With these applications, interacting IPFS can be very cumbersome and time-consuming process.

If a simple user wants to save contents of a directory in IPFS to the local file system or navigate in the IPFS Mutable File System without the web applications, which is a very common use case, he/she has to interact with IPFS node directly with ipfs-cli. This is not a very user-friendly experience. A simple IPFS user should be able to interact with IPFS without any technical knowledge.

Also, there is no easy way to chat, or share files with other users through encrypted channels. Let's say that our simple user wants to share a file or a text with his/her friend, he/she has to use a centralized service like Telegram, or WhatsApp, etc. These services are not decentralized, and they are not built on the IPFS protocol.

PEER-CLI is a command-line tool that is the swiss army knife for the IPFS. It combines solutions to the problems mentioned above in one single CLI tool. It is a simple, easy-to-use, and user-friendly tool that lets you interact with IPFS without any technical knowledge with simple menu-based user interface. It can be used, to:

It is built with Node.js and uses the ipfs-core and libp2p libraries.

Project Github Page

Peer-CLI List

Value

PEER-CLI is a necessary tool for the IPFS ecosystem. It brings the simple user together with the great technical infrastructure of IPFS. Besides, developers or advanced users can use it to interact with IPFS quickly without any intermediate apps. PEER-CLI directly uses the IPFS node that is built in the application itself, so it is very fast and efficient. Uploading a directory to the IPFS with PEER-CLI or saving a directory from the IPFS to the local file system takes less than 8 seconds (download or upload time is not included).

It is built with Node.js and uses the ipfs-core for interacting IPFS and uses libp2p for interacting other users (peers). It is a very lightweight tool that is easy to install and use. It is also very easy to extend and add new features to it.

Using it wrong does not pose any risk to the IPFS ecosystem or for the user. Because there is no payment system or price modeling in the application (since it is free), it is not possible to lose any money. Also, it is not possible to lose any data because it is not possible to delete any data from the IPFS with this tool. All IPFS functionalities can be replicated with ipfs-cli tool, and all peer functionalities can be replicated with other peer-to-peer applications (with more compelling way, of course).

Deliverables

Development Roadmap

Milestone 1

Budget: $20,000 Estimated Time: 1-2 weeks

Completion Milestone
[X] Ability to upload files and directories to the IPFS.
[X] Providing a progress bar for the upload process.
[X] Supporting fuzzy search for the files and directories.
[X] Ability to get/show the contents of the files and directories
[X] Ability to save the contents of the files and directories from the IPFS to the local file system.
[X] Ability to list the contents of the files and directories in the IPFS and navigate each of them.
[X] Ability to manipulate IPFS Mutable File System with Unix like shell.
[X] Providing all IPFS supported file operations in MFS shell.
[X] Navigation through the IPFs network freely with any given CIDs or IPFS paths.
[X] Ability to direct Peer To Peer messaging using libp2p-webrtc-star protocol.
[X] Peer discovery mechanism using libp2p-webrtc-star protocol.
[X] Message encryption using libp2p-noise protocol.
[X] Establishing peer request validation. Peers are connected to each other through a secure mechanism. The connection is established only when both peers want to be connected to each other.
[X] Publishing application to the NPM registry.

Milestone 2

Budget: $20,000 Estimated Time: 6-8 weeks

Completion Milestone
[ ] Authentication based login system with restoring user data.
[ ] Entegrating OrbitDB database for storing user data.
[ ] File transfer between peers using libp2p-webrtc-star protocol.
[ ] Implementing chat room functionality with multiple peers using libp2p-pubsub functionality.
[ ] Saving chat history to the OrbitDB database.
[ ] Saving uploaded file and directory CIDs to the OrbitDB database and accessing them later.
[ ] Restoring OrbitDB database when the user logs in.

Total Budget Requested

$40,000

Maintenance and Upgrade Plans

I will maintain the project and publish version updates to the NPM registry as soon as possible. I will also provide support for the users who have problems with the application in issues section of the GitHub repository.

The PEER-CLI will stay as open source and free to use so, anyone can contribute to the project and make it better by fixing bugs or adding new features to it. In milestone 2, the upgrade plan explained in detail but, if someone wants to contribute other than these features, they can freely do it and make a pull request. I will review the pull requests and merge it if it is good enough.

After the project milestones are finished, the project will observe the libp2p or ipfs-core changes and update the project accordingly. libp2p will change its infrastructure in near future, so the project will be updated to support the new infrastructure as well.

Team

Team Members

Mert Köklü LinkedIn: https://www.linkedin.com/in/mertkoklu/ Github: https://github.com/justmert Stack Overflow: https://stackoverflow.com/users/10515117/mert-köklü

Relevant Experience

I am the founding vice-chair of ACM Student Chapter, Ambassador for many organizations like Microsoft and Certified Instructor of NVIDIA. In Web3 ecosystem, I am a Graph Advocate of The Graph and Aave Turkey Community Co-Manager. Interested in Web3 ecosystem projects with strong technical infrastructures like IPFS and FVM (Filecoin Virtual Machine). I have developed many projects under the Web3 ecosystem such as Aave API Telegram Bot and Kadena Chainweb Python Bindings with 3 years of work of professional experience in my career.

Team code repositories

https://github.com/justmert/peer-cli

Additional Information

I have learned about the Open Grants Program from the Filecoin Dev Grants page.

Email: kklumert@gmail.com Telegram: @mertkklu Discord: MertK#2634

ErinOCon commented 1 year ago

Hi @justmert, thank you for your proposal! We will not be moving forward with an open grant at this time, but would encourage you to submit a microgrant application for one focused functionality of this work. We would also be interested to learn about this project's initial target audience.

justmert commented 1 year ago

Hi @ErinOCon, thank you for your response. I have moved the proposal to the Microgrants section. You can find the new proposal #1203, thanks again.