Try it now!
Have an iPhone? Worms is available for testing through Apple's TestFlight service! Just click the link below, download the TestFlight app, and join some book clubs.
*** The app must go through Apple's review process before being available to the public through the above link. The app was submitted on Sunday evening, so it should be out on Monday for testing through TestFlight. If for some reason it is not, there are alternative steps to install the app on your device in the projects GitHub readme file. But the app should be approved at some point Monday.
The goal of Worms was to create a social platform for good; good books, good conversation, and a good cause. We love books and wanted to make a mobile application that brings other bookworms together to socialize and support charities that help the next generation of readers and authors.
What it does
Worms allows users to join book clubs that focus on common themes, from curations of inspirational public figures to advice on living your best life. Users can purchase the listed books however they choose, but Worms provides an affiliate link through Amazon that helps support specified educational charities. Clubs have a start date for when members should begin reading the current book (dates will change for each book as the club progresses) and members can chat with fellow bookworms in real-time.
How we built it
Native iOS App
The front-end of Worms is a natively developed iOS app. The App was built using Xcode and Swift. We used Cocoapods for dependency management and pulling in the Okta AppAuth and Twilio Chat Client SDKs. We used the Okta SDK to incorporate user login/registration and Twilio's Programmable Chat API to support the real-time group chat for each book club.
Heroku Hosted Server
The backend that supports the Worms iOS app is a Node.js/Express.js project hosted using the Heroku Cloud Platform. The server connects to a cloud-hosted MongoDB NoSQL database that it uses to serve resources to the app. Before serving up any information to clients, the server requires the Okta access token generated through the app's authentication process. After the server validates this access token with Okta, it will return resources to clients.
Challenges we ran into
During this hackathon, we took advantage of technologies that we have never used before. With this came many challenges in learning now only how to work with each of these technologies separately, but integrating them altogether into one system.
Accomplishments that we are proud of
The Worms app is the first time we have ever worked with real-time messaging. We actually began implementing this on our own using our backend server, MongoDB, and Socket.io to keep it all in sync. But then Twilio came along and after investigating their APIs, we decided to build our chat feature on top of their Programmable Chat API. Using this together with Okta's authentication made the task much more manageable. In the end we are very proud of how well the chat feature works with the multiple channels and users.
What we learned
We dove into many new technologies during this hackathon that we normally never have the chance to work with. Some of these include Node.js/Express.js, MongoDB, Heroku, and of course Okta and Twilio. Normally at shorter hackathons we only get the chance to work hard on the front end, but with the longer time we had for this hackathon we learned a ton about creating and deploying a cloud hosted backend to support our iOS app.
What's next for Worms
More books is a must for Worms, but we would also like to get in contact with educational charities and Amazon to get working affiliate links. It would also be great to collaborate with some charities to create a club with books curated by the charities themselves. We would also want to expand the social functionality of Worms by allowing users to 'friend' other users and see what clubs they are joining.
Check out the code
There are two GitHub repositories for this project. One is the native iOS app built using Xcode and Swift. The other is the Heroku hosted server built using Node.js and Express.js. Check them both out below!