BookLocal needs to allow customers to communicate with a concierge before, during, and after their stay.

What it does

ChatCompent allows guests and concierge services to communicate over an in-app, off-chain chat API. Truffle Develop must be running on the client's computer. Also, the user will also have to click the "This page is trying to load scripts from unauthenticated sources" warning in the address bar in order grant ChatComponent permission to do it's thing.

How I built it

I incorporated a react chat app tutorial into an old proof of concept for BookLocal. I also had to set up a node.js server on AWS to handle the chat API calls.

Challenges I ran into

I originally intended to build an Application Blockchain Interface using the Cosmos stack. But in the course of attempting to implement it, I learned that Cosmos is not ready yet and only really succeeds in communicating between Tendermint blockchains.

When I pivoted to ChatComponent, the source code that I used was only designed to run the chat API locally. I chose to host the chat API on AWS, but I had never used AWS or Heroku to host an API.

Accomplishments that I'm proud of

I was able to pivot from a project that did not yet have functional tooling in time to complete a whole new project that I was able to complete before the end of the hackathon.

What I learned

  • Cross-blockchain ABCI is not yet production ready.
  • How to host a server on AWS
  • How to configure security settings and open up ports on AWS
  • Homebrew does not work on Linux, but there is a version called Linuxbrew that does

What's next for BookLocal ChatComponent

ChatComponent needs to be incorporated into the current version of BookLocal and receive identity information from uPort. The chat API server needs to be refactored to silo conversations to just two parties. There is a lot of work to be done in styling in order have ChatComponent present an enjoyable UI. The scripts need to be secured. And integration with a voice-to-text API would be dandy.

Share this project: