My experience building a Flutter app using @protocol

Souvik Biswas
Flutter Community
Published in
5 min readJan 15, 2021

I stumbled upon the @protocol during the Flutter Vikings Conference and participated in the @challenge organized by them.

DISCLAIMER: The @challenge was a 3 day-long contest, though due to prior engagements I got just one day. So, in whatever position you see the app, it was created in mere 11 hours of time (including the concept, planning, set up, and implementation).

It was amazing and quite a different experience to work on this highly privacy-concerned architecture, I’ll talk more about it in a bit.

What is @protocol?

The @protocol is an Open-source, P2P (Peer to Peer, or in their terms People-to-People) Internet protocol that allows users to have complete privacy and control over their data.

Each person on the @protocol is identified using their @sign and will have their own personal server, allowing them to communicate with any other person’s server directly.

You can get your @sign from here, and customize your profile using the @persona app.

To learn more about the @protocol check out this article.

How to get started?

The @protocol is written in pure Dart, so in order to use it as a prerequisite, you will need Flutter/Dart installed on your system. Also, you should have some experience building apps using Flutter.

Next, you will need to set up your virtual environment, so that you can run the @protocol offline and use the test @signs. The full instruction guide is available here.

You are now ready to build Flutter apps using the @protocol.

App concept

This app is created by keeping privacy at its core. The main concept of the app is to keep your chats protected even in public places. Like during commuting in any public transport, the person sitting/standing beside might be able to look over and read your private chats (which most of us don’t like). For solving this exact problem, I have created a masking layer over the normal text chats using Morse.

I believe this will make chatting a lot secure. Apart from privacy, PRI@morse will also provide an additional element of humor to the traditional chat, making it more fun.

Also, this isn’t traditional Morse. Read on to know more.

A bit about Custom Morse Standard

First of all, let’s see why do we even need a Custom Morse Standard for our purpose.

The International Morse Standard only supports alphabets (can’t differentiate between lower and uppercase) and numbers.

But, the Custom Morse Standard created by me supports:

  • Alphabets (both lower and uppercase)
  • Numbers
  • All special characters
  • Emojis

Also, it can encode an entire string of text message (maybe containing emojis) to Morse, by parsing each character and using word & letter separator.

The entire picture: Difference between International Morse and Custom Morse Standard

You still might have a question, how does it actually parse emojis and encode them to Morse? 🤔

So, here you go:

You can see in the above image, there are three steps in total for parsing emojis present in a string. The first two steps are already implemented in flutter_emoji package (has support up to emoji v11.0), so you can directly use it. And, for the last step, I have just used the encoding technique that I created for converting it to Morse.

Future Roadmap

The app was created in a very limited period of time, so there are a lot of improvements that can be done. Some of them are as follows:

  • Morse to audio output
  • Add chat rooms ( for group chat )
  • Support for moments, images, GIFs, etc.
  • Include a Morse translator page ( where users can translate text string to Morse and vice versa )
  • Optimize emoji parsing technique
  • Support for other languages

Try it out

The app is completely open sourced on GitHub, you can check it out here:

If you like this project, please give a Star (⭐️) to my GitHub repo.

Conclusion

If you have only worked with apps having traditional user authentication (using username and password, or using other service providers) and database, the @protocol will definitely feel like an out-of-the-box approach. There’s a lot to say and experience using the @protocol, but the most significant points why I like it are:

  • Doesn’t need to handle traditional user authentication, and no need to manage a database (as users have servers of their own)
  • Gives people full control over their own data
  • As a Flutter developer, it’s amazing to see the @protocol written in pure Dart

If you are a Flutter or Dart Developer, I highly recommend checking out the @protocol from The @ Company. Here are some of the useful links to get started:

If you want to support me and want me to continue writing Flutter articles and building some interesting Flutter projects, please contribute to my Patreon page below:

You can follow me on Twitter and find some of my projects on GitHub. Also, don’t forget to checkout my Website. Thank you for reading, if you enjoyed the article make sure to show me some love by hitting that clap (👏) button!

Happy coding…

Souvik Biswas

Follow Flutter Community on Twitter: https://www.twitter.com/FlutterComm

--

--

Souvik Biswas
Flutter Community

Mobile Developer (Android, iOS & Flutter) | Technical Writer (FlutterFlow) | IoT Enthusiast | Avid video game player