People rarely reread books they have already completed. Rather than let such great access to knowledge sit and collect dust on lonely shelves while others suffer from limited access to these materials, what if there was a platform that enabled and encouraged people to connect and grow with each other. This would have even greater impact on communities without library infrastructure.
What it does
BookMate allows users to upload, find, and exchange books all through the Facebook Messenger platform. Users with available books can interact with the bot to add them to our virtual library. Users who need books, can easily search by title, author, or genre and the bot will return the best matching books. Upon selecting a book from the list, the bot returns a list of users who have the book available. The user can finally click "Reach Out" to make the connection. There is full chat based CRUD interface for user personal library management. We also created a wed dashboard for users to easily check and edit their virtual library.
How we built it
BookMate is a Messenger chat bot. It triggers webhooks on an external server built with Node.js and Express. Library data is retrieved using the Open Library API and stored in MongoDB. The frontend dashboard which has similar capabilities to the bot is written using React.js and Facebook login authentication.
Challenges we ran into
- The Messenger platform doesn't directly communicate conversation context. When a user replies, there isn't necessarily a clear way to see what they are replying to. A message sent to a bot is a one way transaction so we had to manage user state on the webhook server ourselves. This let us maintain a coherent and easy flowing conversation.
- The Facebook Graph API requires an app review to gain access to user profile URLs. As such, we had to hard code some of the profile URLs to enable us to more easily connect users to each other.
- We wanted to accept barcode images from users in order to enable seamless book submissions. Unfortunately, we did not have enough time to implement a barcode recognition library on the backend. Instead, we simply narrowed our scope to allow only text based ISBN submissions.
Accomplishments that we're proud of
We are proud of being able to build a fully functional application on a platform that we have never used before. The Messenger API was super fun to learn and made us feel more powerful as developers.
What we learned
Messenger API Full Text Search on MongoDB
What's next for BookMate
Barcode based book submissions Group suggestions based on book genre