conversation between two users
emmanueljet.chain friend list
aeternityekiti.chain friend request list
aeternityekiti.chain user profile
contract confirmation message with loader
aeternityekiti.chain search screen
aeternityekiti.chain empty friend list
aeternityekiti.chain friend list after accepting friend request
aeternityekiti.chain sending funds to emmanueljet.chain in form of a message
aeternityekiti.chain new profile details after sending funds
emmanueljet.chain new friend request list
We were inspired by the idea of building a secure chat platform, on the blockchain where tokens can be sent with minimal loss and optimum security in the form of a message.
What it does
Superchat sends AE tokens from one user to another easily as they chat with friends and family thereby reducing the loss of funds in AE tokens transfer. Superchat runs with three smart contracts that help it perform and build a solution for our inspiration. The contracts are SuperChatProfile, SuperChatFriend, and SuperChatMessage.
The SuperChatProfile contract starts the authentication flow by registering a user and getting the user details. The SuperChatFriend contract connects remotely with the ProfileContract to send a friend request, accept or reject friend requests, get friend requests, and finally get each user friend list.
Lastly, the SuperchatMessage contract performs the work of sending messages and even AE tokens to friends as a message
How we built it
Superchat is built on æternity blockchain and it uses ReactJS for its Front-End implementation. It's an open-source platform on GitHub at https://github.com/aekiti/superchat
The repository contains source codes that sum up Superchat. It has its smart contracts written and tested with the AEproject tool. It has its wallet created using the AECLI tool.
The react Front-End implementation uses the AEproject React shape that follows the theme and layout of the voting section of the Superhero.com platform.
Challenges we ran into
- Saving Objects in a ReactJS state
- Using the appropriate testnet SDK
- ReactJS rerender loop
- æpp working only on a desktop with the Superhero.com wallet extension
Accomplishments that we're proud of
A perfectly working unit test script that tests our contract functions and entrypoints, using Google Firebase and GitHub Action to seamlessly deploy our æpp to the live server at https://superchat.aekiti.com, and users being able to perform the following activities on the æpp:
- Register profile using the Superhero.com Backend API
- Getting User Profile Details
- Sending Friend Request Functionality
- Rejecting or Accepting a friend request from users
- Friends Functionality
- Chatting with Friends functionality that includes sending of funds
What we learned
- Making use of AECLI tool to create a new wallet
- Using the AEproject tool to test our contracts
- Using the AEproject React shape as our æpp boilerplate.
- Adding a testnet network to the Superhero Desktop extension.
- Registering a .chain name programmatically(superchat.chain)
- Using GitHub Action to communicate with Firebase thereby making the deployment of our chat æpp to the live server smooth.
- Using the æternity JS SDK to convert AE domination from one to another
- Using redux in ReactJS Framework
- Teamwork amplified the smooth development of our idea. Some of the results can be seen in the Idea Box Sheet and the Team Research Document
What's next for Superchat
- Implementation of the group functionalities, to enable a user to send tokens and messages to members of the created group.
- Implementing a group saving feature to allow users to save AE tokens for some time.
YouTube Demo Playlist: https://www.youtube.com/playlist?list=PLVz98HTQCJzRRVJpQMGh5RwPtajr4wH5o