Inspiration
My biggest inspiration was the Signal Foundation's messaging app called Signal. I love what they have created and actually use it myself, but there's a problem with it. Signal still uses centralized servers and users are forced to save their data locally if they want to have a message history. I figured that for this hackathon I would try and tackle the problem and make a solution for the new decentralized/distributed web, with a focus on data ownership.
What it does
Chime is a messaging application that allows you to directly send messages to your friends without ever touching a centralized server, and without relinquishing your control over your own data. It runs directly inside your web-browser, acting as both a Streamr and IPFS node. First the user needs to login with their Metamask wallet. The user can then create a new conversation after adding a friend's wallet address, and then clicking on their friend. This will load a new conversation and let the user send messages to their friends! (Make sure to turn on Streamr Node Storage for message history) Each message sent has a chance of rewarding the user with Chime tokens as a thanks for using the application (Message Guessing Participation must be toggled on). Users can seamlessly integrate with the in-built JS IPFS node and upload new files to show their friends (currently only images are supported). Users can also send price feed information directly from Chainlink to share the price of their favorite cryptocurrency with their friends. Once added to a message, a price feed has a toggle button in the top-left allowing the user to see the live price of their selected cryptocurrency. Chime also supports emojis with an entire menu of them to select from.
How we built it
Chime was built using Create-React-App for the front-end, and Solidity for the blockchain portion, alongside a few different NPM plugins like JS IPFS & Streamr Light Node.
Challenges we ran into
The biggest challenge for me was learning all of these new languages and technologies. I hardly ever touched Javascript before the hackathon started so I was quite literally diving in head-first. React, an extension of Javascript was incredibly complex for me, but with the help of some good stackoverflow questions and the great developer community, somehow I pulled through.
The second biggest challenge that I faced was finding a way to store the data or even just communicate peer to peer. In the month since the Chainlink Fall Hackathon began, I had already experimented with many different storage solutions, including BigchainDB, OrbitDB/IPFS, Ceramic, Local-Storage, etc. This took the bulk of my time and researching to find the correct one and then figuring out how to use it was no simple task as a beginner.
Accomplishments that we're proud of
I'm extremely proud of getting the messaging to work at all. I've never really done much with networking and didn't even know how socket.io worked before this, so that was hugely encouraging. Figuring out how to get my token contract functions to work inside the app was also a big accomplishment for me.
What we learned
Everything? No seriously, this has been a learning experience for me through and through. I have written down every lesson or kept every browser tab that has helped me. There are more than I can even count, even in languages like CSS3 that I already had a good grasp on.
What's next for Chime
I would like to give Chime a future by improving the design, adding more support to other types of IPFS files, and helping the soon-to-be Chime community grow. Additionally, one of the next major milestones will be adding encryption, so stay tuned!
Log in or sign up for Devpost to join the conversation.