Mentors
- Abhishek Satpathy
- Siddharth Bhat
Members
- Akshat Chaturvedi
- Swati Bhat
- Shreesha M Budhya
- Har
Acknowledgements
We are deeply grateful to IEEE, CompSoc and for giving us an opportunity to work with juniors!
Aim
We aim to build a reliable and user friendly Flutter based app to act as a client, and enable users to connect to servers running on the decentralised Matrix protocol.
Introduction
The Matrix protocol is an open-source, decentralised protocol that enables real time communication between users, devices and services, and was created as an alternative to centralised communication services such as WhatsApp, Telegram and Slack.
The Matrix protocol essentially defines a set of open APIs for decentralised communication which anyone can implement, subscribing to a global open federation of servers with no single point of control. Servers and clients which support this API in essence are running on the Matrix protocol.
We have implemented a Flutter based chat app, where users can connect to a Matrix homeserver using an username, and send End to End Encrypted text messages to each other. The implementation of the Matrix API is simplified by the Matrix Dart SDK
Design
Logging In
Every user is initially asked to log in with a username and password, and choose a particular Matrix “Homeserver” where all their credentials are stored. When a user sends a messgae to another user on a different homeserver, the senders homeserver is responsible to send the message to the reciever’s homeserver.
Home Screen
After logging in, the user is met with a homescreen where all the chats with users will be visible as cards.
User Chat
Messages exchanged between users are displayed in message bubbles.
Invite user page
To start chats with new users, a button to add new users with the help of their Matrix ID is available at the bottom of the screen. A QR code is also generated and displayed, which when scanned shows the Matrix ID if the user! The QR code can also be shared/copied to clipboard as well!
Profile page
The profile page will display the user’s profile picture, username. It will also allow the user to edit the abovementioned details. The Log Out button can also be found here.
Future plans
- Add support to send images and videos, and file sharing in general.
- Add support to form groups. Matrix servers already support the creation and moderation of groups.
- Add support to view Statuses.
- Possibly add support read-recipt, and the enabling and disabling of it.
References
- Matrix protocol specifications here
- Matrix protocol Dart package here
- Flufflychat, and open source Flutter based Matrix client
- Synapse server setup information
- Resources to learn Flutter
- More resources to learn Flutter
- Want to setup your own Matrix server? Look no farther!