Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mrquackduck/colirbackend
Fancy messaging platform with client end-to-end encryption and ability to speak in voice channels
https://github.com/mrquackduck/colirbackend
aspnet csharp dotnet signalr
Last synced: 13 days ago
JSON representation
Fancy messaging platform with client end-to-end encryption and ability to speak in voice channels
- Host: GitHub
- URL: https://github.com/mrquackduck/colirbackend
- Owner: MrQuackDuck
- License: bsd-2-clause
- Created: 2024-07-01T15:33:48.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2024-12-14T23:41:49.000Z (21 days ago)
- Last Synced: 2024-12-15T00:23:50.731Z (21 days ago)
- Topics: aspnet, csharp, dotnet, signalr
- Language: C#
- Homepage: https://colir.net
- Size: 671 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
Colir (BackEnd)
Colir — fast & secure messaging platform with end-to-end encryption.
Web Client can be found here.
## 🌈 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 --project Colir.WebApi` command