Colir — fast & secure messaging platform with end-to-end encryption.
🛠 FrontEnd in progress... 🛠
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.
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.
- Install Docker
- Clone this repo
>git clone https://github.com/MrQuackDuck/ColirBackend.git
- Jump into the folder
>cd .\ColirBackend\
- 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 tokensAuthentication:RefreshTokenKey
- a secret key used to sign refresh tokensOAuth2: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.
- Install .NET 8
- Clone this repo
- Run
dotnet run
command