This the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Get Started

The fastest way to get started developing on the @platform

The @platform was open-sourced in November of 2020 and we’ve been working hard to make your onboarding experience as smooth as possible ever since.

We’re excited to help you get your very own @platform environment up and running!

We believe that the best way to get started with the platform is to actually try and experience it first hand.

If you are new here, we recommend the following path

1 - Try your own @platform project

Watch the @platform in action with the Snackbar application

This tutorial will guide you through a 5 step process to install and run our demo snackbar sender application. Please follow the steps below:

Step 1: Install at_app

Run the following command to install at_app, our developer toolkit:
    flutter pub global activate at_app 
    
  

Step 2: Install the demo app

Next install the app like so:
    at_app create -d snackbar_sender your-folder 
    
  

(Read more on at_app here)

Note: Replace “your-folder” with the folder you created your project in.

Step 3: Run the demo app

Then run the demo app:
    

cd your-folder
flutter run

Note: Replace “your-folder” with the folder you created your project in.

Step 4: Onboard an @sign

Watch the GIF below to see how to get a free @sign within the app itself!

If you’d like to purchase an @sign or would simply like to create and receive any type of @sign on the website, feel free to visit atsign.com.

Step 5: Send a snack!

Enter an @sign that will receive the sent snack. Be sure that it is the same @sign that you have entered in the receiver below!

What’s next?

If you are looking for a more advanced version of our Snackbar demo, look no further! Follow the step-by-step guide to send end-to-end encrypted snacks (chocolate bars!) to another device here!

2 - What is the @platform?

The @platform overview

The @platform is designed to help developers create end-to-end encrypted mobile applications. A full stack platform written in Dart and Flutter, it includes a wide range of libraries, services and widgets specifically designed for creating privacy-first applications on any platform.

We have also build an SDK to make all of this super simple for developers so that you can get your apps up and running in no time.

Platform Definition

2.1 - Namespaces

An overview to namespaces and their importance

Namespace is a common term that may occur when reading about the @platform. Luckily for you, we briefly explain what a namespace is here!

As our CTO, Colin Constable, delicately described it, " A namespace is a place to put a set of strings or characters together." So how exactly is this relevant to our end-to-end encryption protocol?

Most people are familiar with DNS (Domain Name System): for example, if you type “cnn.com”, “fox.com”, or “bbc.com”, you get news sites. But you can’t just type in “news” and expect the Internet to tell you which particular flavor of news you want.

We need to create namespaces so that humans can remember the name and computers can translate it to Internet protocol. Once there is a namespace like “bbc.com,” you can reliably know that somebody owns that particular space, and it needs to be managed so that there are no clashes.

For instance, you don’t want to type “bbc.com” and get sent to Amazon’s home page. That’s why they have to be unique.

Feel free to read more on namespaces here.

2.2 - Privacy

Run your @platform secondary server on your own infrastructure

2.3 - Encryption

Run your @platform secondary server on your own infrastructure

The @protocol supports end-to-end encryption for all the data handled through it. This is difficult to do, especially for information that is shared with a large number of people and very frequently, so we had to come up with a clever mechanism to make the technology work.

Let’s describe a simple use case: @alice wishes to share her phone number with her friend @bob. To do this, @alice, who is on her own device, prompts her own secondary server to direct phone@alice at her friend @bob’s secondary server. From here, a shared key is generated for @bob (@bob:shared_key@alice).

This shared key uses the same encryption process as the Symmetric Key Encryption, which is called AES (Advanced Encryption Standard) and involves three block ciphers: AES-128, AES-192 and AES-256.

The @protocol specifically uses AES256 for Data Encryption Keys.

The RSA (Rivest–Shamir–Adleman) encryption algorithm is then used to encrypt the shared key from the above example with @bob’s public key. The @protocl specifically utilizes RSA 2048. Note, that because the RSA algorithm is an Asymmetric Key Encryption method, a public and private key are generated.

As this is a brief overview as to how encryption works on the @platform, you may read more here.

2.4 - Polymorphism

Understanding Polymorphism on the @platform

Polymorphism on the @platform is the ability to share different data depending on the context of who’s asking. @platform applications enable you to setup multiple personas for different areas of your life. When you share data with someone else, the value of that data may be different depending on the person receiving that data.

For example:

@alice’s work persona may have a different value for email than her personal persona. When she shares her email to her colleagues, they will receive her work email, however when she shares it to her friends and family, they will see her personal email. As she updates the data in each of her personas, the changes will be reflected to each person that she has shared the data with.

To learn more about polymorphism see this article post.