@mospherePro: End-To-End Encrypted File Transfer App

@mospherePro: End-To-End Encrypted File Transfer App

An advanced end-to-end encrypted file transfer app created by the visionaries of @Company in collaboration with GeekyAnts

About @‎mospherePro

@‎mospherePro is a fully encrypted, end-to-end file transfer app. What makes it unique in its domain is that it is also peer-to-peer, meaning only the sender and the recipient have the required encryption keys to decrypt the content. No one else can access your encryption keys and there is zero visibility into your shared files, assuring you the privacy you seek on the internet.

Other file-sharing services route files from the sender to their servers, and then on to the recipient's server. This means they can access your transferred files, and so can hackers because the service provider has access to the encryption keys! With @‎mospherePro, which is created by GeekyAnts in collaboration with the visionaries who came up with the idea of the app, you are protected because you hold the encryption keys and your files are not stored on a server as well.

@‎mospherePro is simple, private and secure being an example of how we are "#flippingtheinternet".

About the code

@‎mospherePro is built on top of @platform, which is an SDK developed using Dart. @platform lets us focus on the front-end side of the app without having to worry about having back-end services like authentication, notification, encryption/decryption, and public and private data storage.

How does file share happen?

When we share a file, it is first encrypted using an encryption key. Then, this encrypted file is stored in the filebin, which generates a URL that contains the respective encrypted file. All of the information related to the file, along with the filebin URL and the encryption key, is stored in a key (we call it the AtKey ). This shared AtKey's value is further encrypted using the recipient's public key which shared with all recipients for added privacy and security.

Upon getting the AtKey’s value, the user gets the file(s) information along with the encryption key to decrypt them which are then available to download for six days until they get deleted from the filebin.

We have also developed a beautiful and intuitive UI to interact with the logic of sending and downloading files. One of the main screens, where most of the action happens, is the history screen which keeps track of sent and received files over the last thirty days. We also show the status of the shared files as delivered, downloaded, or failed on the sender's side to keep them in the loop about the status of the shared data. Refer to the image given below to see how @‎mospherePro does this:

A3F71AE9-F9E7-4264-9B15-59A7E8E9D0EA.JPEG

Packages used

Many of the app's functionalities, like authentication, contacts, groups, and backing up data using atKeys, are fulfilled by packages that are open source and built on the @platform. These foundational widgets set up the basic needs of an app and let the developer focus on the business logic of the app.

These are some of the widgets used by the @‎mospherePro application:

  • at_onboarding_flutter
  • at_contacts_flutter
  • at_contacts_group_flutter
  • at_backupkey_flutter
  • FileBin2

at_onboarding_flutter

at_onboarding_flutter provides an Onboarding() widget that handles the authentication part of @‎mospherePro , from verifying atKeys to generating new @‎signs. You can see how the app handles the authentication in the image given below:

9D9D31FB-1528-47AE-9CB0-E184BD2D9E09.JPEG

Read more about this package here.

at_contacts_flutter

at_contacts_flutter provides the ContactsScreen() and BlockedScreen() widgets, which provide an easy way of managing contacts for an @‎sign. You can see a representation of the screens in the image given below:

D300FFE1-A289-4FA6-BFC7-1A309CE596C7.JPEG

Read more about this package here.

at_contacts_group_flutter

at_contacts_group_flutter provides grouping functionalities with the contacts that were added using the widget. This makes it easier and faster to share files with more @‎signs. It also provides additional widgets like GroupList() and GroupContactView() to making the grouping of information better. The functionalities of the two widgets are given below:

  • GroupList() provides all the services required to manage groups.
  • GroupContactView() is similar to ContactsScreen(), the only difference is that unlike GroupContactView, it fetches all contacts and groups and displays them together on one screen.

Read more about this package here. See how the @‎mospherePro app groups data in the image given below for your reference. 28992D4D-1178-4ACA-BA9F-E3080EF78572.jpg

at_backupkey_flutter

The at_backupkey_flutter package provides the BackupKeyWidget(), which keeps a backup of the secret keys of an onboarded @‎sign.

Read more about this package here.

FileBin2

FileBin2 is a web application that facilitates convenient file sharing over the web without registration. @‎mospherePro stores the encrypted files in a uniquely generated URL using the FileBin2 widget.

Read more about this package here

Want to contribute to @‎mospherePro ?

If you find this app exciting and want to add or improve any feature, you can do it through our open-source channels. Here's the link for both channels:

  • @mospherePro : This is link to the @‎mospherePro app's repository.
  • at_widgets : All the packages that were explained in this article are available in the at_widgets repository.

To try @‎mospherePro, download it on iOS or Android.