Over the last couple months, I took the ideas presented in my article about building an IPFS API and built a JavaScript library (ipfs-coord) and instant-messenger chat app (chat.fullstack.cash).
The technical ideas behind building an uncensorable, private, p2p API are complex. I've learned from experience that it's always better to show rather then tell, when it comes to complex ideas. I spent a couple days thinking about the simplest app possible, that would still demonstrate the basic concepts. The best idea I could come up with was an instant-messenger chat app. People have an intuitive sense of how such an app should work. And a chat app contains all the basic ideas behind an API. If two computers can exchange text, then they are one step away from an RPC for exchanging commands and data.
This first video is a non-technical demo of chat.fullstack.cash. It shows how to use the user interface, how to chat publicly and privately, and the command terminal for interrogating the ipfs-coord library.
This second video is intended for developers who want a walkthrough of the component parts, and how they fit together. I walk through each of the JavaScript libraries, talk about the primary features, and how the subcomponents are composed together.
Parallel Research
Through the course of building this proof of concept, I continued to reach out to other developers, technologists, and open source teams. I've been concerned with reinventing the wheel. I don't want to spend energy solving a problem that has already been solved.
- I created this thread and this thread on the IPFS discussion forum.
- I talked to the Textile team and they have been doing some similar research, captured in this GitHub Issue.
- Also, reading through the OrbitDB documentation and they hint at an IPFS-based API, but don't indicate anything as advanced as what I've built.
So far I haven't found any robust solution to the problem of building a generic, uncensorable API. But it is vindicating to see that this idea has occurred to other developers, and we're all converging on nearly identical ideas.
There are a couple major features that need to be added, and more unit tests need to be written, to turn the ipfs-coord library into a production-ready, uncensorable API. But at least 80% of the work to go from concept to production is now completed, with this simple IPFS-based chat-app proof of concept.