Not long ago at ETH Denver I had the idea of building a better POS (point-of-sale) system for vendors to accept crypto inspired by all the adoption that Burner wallet had brought. I joined a team where we hacked on an MVP of what it would look like but as always it’s easier said than done.
We were trying to solve a few pain points that I gathered from the vendors at the event with order management and payment tracking which the Burner wallet didn’t fulfill. However we soon realized that a lot of the infrastructure needed would require a backend server to manage it which wouldn’t make for a truly decentralized solution. But for the sake of simplicity at the hackathon we kept the scope simple and hard-coded most of the data to build this interface.
However after the hackathon I still wanted to tackle this project and make it work as a decentralized application without a backend that any vendor around the world could easily setup with their wallet to accept crypto and have fully featured POS that they felt comfortable with.
This when I came across 3Box, a distributed user data network that supports both public and private data using Ethereum accounts. Using their SDK I was able to create a profile for the vendors and use their storage solution called Spaces to store all the app-specific data.
Basically 3Box provides you with a simple API that authenticates and encrypts data on IPFS that can be easily queried using just an Ethereum account. This is really powerful as it provides you with a full-stack solution for your app without having to maintain your own backend.
So I started refactoring the old hackathon project to move all the hard-coded data into 3box and allowed it to be easily managed with the vendor’s Ethereum account.
I was able to create a dashboard for the vendor to manage their inventory, to add or update items, track orders, check the revenue and even manage settings. This all very simple to setup using their API and if you have built web applications before you will find it very similar to localStorage, except it’s available globally and encrypted for a specific user.
The most fun part was adding more and more customization for vendors to control the storefront for their customers. You can save the settings on 3Box and provide a simple UI for the settings to change the user experience based on the contact information, taxes and even different payment methods.
But we are not done yet, 3Box introduced not long ago a feature called Threads which provides you with a live-feed to be shared between multiple users which can be used for adding a comment box, a forum or live chat to your application. In my case I used it to create a live-feed of the orders on the vendor’s dashboard. Every time a customer created a new order, the vendor will be able to see it in real-time on their dashboard and see the payment status update too.
I can see this SDK changing the way we build decentralized applications, storing data on IPFS has never been easier and not only it provides you with a great developer experience, you are also guaranteed that the data is controlled by the user. I look forward to see more Dapps integrating with 3Box which allow more personal and content-rich user experiences on Ethereum.