Inspiration

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

  1. Saving Objects in a ReactJS state
  2. Using the appropriate testnet SDK
  3. ReactJS rerender loop
  4. æ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

  1. Making use of AECLI tool to create a new wallet
  2. Using the AEproject tool to test our contracts
  3. Using the AEproject React shape as our æpp boilerplate.
  4. Adding a testnet network to the Superhero Desktop extension.
  5. Registering a .chain name programmatically(superchat.chain)
  6. Using GitHub Action to communicate with Firebase thereby making the deployment of our chat æpp to the live server smooth.
  7. Using the æternity JS SDK to convert AE domination from one to another
  8. Using redux in ReactJS Framework
  9. 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

  1. Implementation of the group functionalities, to enable a user to send tokens and messages to members of the created group.
  2. 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

Built With

  • aecli
  • aeproject
  • firebase
  • github-action
  • react
  • sophia
  • superhero-backend-api
Share this project:

Updates