Skip to content

Fancy messaging platform with client end-to-end encryption and ability to speak in voice channels

License

Notifications You must be signed in to change notification settings

MrQuackDuck/ColirBackend

Repository files navigation

Colir (BackEnd)

Colir — fast & secure messaging platform with end-to-end encryption.

🛠 FrontEnd in progress... 🛠

🌈 The idea

The main goal of Colir is to provide an ability to communicate securely.

To implement that, end-to-end encryption was chosen. Before using the application, users should discuss a secret key that will be used to encrypt & decrypt the data.

Note

The encryption keys for rooms are stored on the client only. They're not being sent to the server.

This API's role is to transfer and store the encrypted data.

🌠 Features

Besides that, Colir has a couple of features, which can interest you in:

  • Rooms are places where the encrypted communication happens. When a user creates a room, he/she chooses an encryption key (which will be stored at the client) and receives a room GUID. They can share that GUID with someone else so they can join that room. Anyone who has the GUID of a certain room can join it, but it will be impossible to decrypt the data if the wrong encryption key was provided.
  • Expiry date can be provided for rooms. When the expiry date comes, all data won't be accessible and will be deleted forever.
  • There's only one voice channel per room.
  • Passwordless authentication. There are three ways to authenticate: anonymous (gives you a one-time JWT), GitHub account, and Google account.
  • Each user has a unique "Colir ID", which is a 6 symbol-length hexadecimal number to identify a user.

Caution

If you authenticate as anonymous, you won't be able to login into that account again.
Therefore, use 3rd party providers such as GitHub and Google to be able to login as much as you want.

🐳 Deployment

  1. Install Docker
  2. Clone this repo
    > git clone https://github.com/MrQuackDuck/ColirBackend.git
  3. Jump into the folder
    > cd .\ColirBackend\
  4. Run the container
    > docker compose up

Important

When you've cloned the repository, make sure to configure these variables in appsettings.json:

  • Authentication:JwtKey - a secret key used to sign JWT tokens
  • Authentication:RefreshTokenKey - a secret key used to sign refresh tokens
  • OAuth2:GitHubClientId - GitHub Client Id (see Authorizing OAuth apps)
  • OAuth2:GitHubSecret - GitHub Client Secret (see Authorizing OAuth apps)
  • OAuth2:GoogleClientId - Google Client Id (see Using OAuth 2.0 to Access Google APIs)
  • OAuth2:GoogleClientSecret - Google Client Secret (see Using OAuth 2.0 to Access Google APIs)
  • OAuth2:GoogleRedirectLink - Google Redirect Link (the callback-link after Google OAuth2 consent you've configured in Google Cloud Console)
  • DatabaseEncryption:EncryptionPassword - The 16-char password that will be used to encrypt some data on writing/reading into/from the database.
  • DatabaseEncryption:InitializationVector - The 16-char initialization vector that will be used to encrypt some data on writing/reading into/from the database.

🖥 Development server

  1. Install .NET 8
  2. Clone this repo
  3. Run dotnet run command

About

Fancy messaging platform with client end-to-end encryption and ability to speak in voice channels

Topics

Resources

License

Stars

Watchers

Forks