muke1908 / chat-e2ee

End-to-end encrypted disposable chat sessions, exchange sensitive information with peer safely and securely.

Home Page:https://chat-e2ee-2.azurewebsites.net/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

General features suggestion

Narasimha1997 opened this issue · comments

Provide a Dockerfile that will help users/contributors to quickly setup and test the app locally as a complete package. Providing a Dockerfile will also help us deploy the application on any machine, on cloud or on native metal.

Also try to separate frontend and backend as much as possible so that the frontend can be served by any static hosting solution and backend can be deployed as a managed container on any cloud.

Scalability can be difficult because the entire backend is a monolith. Try separating them and package individual in their own containers, so that they can be scaled independently. (Also try to add Kubernetes support in future, make it cloud native)

Assymetric encryption can be slow for large files, provide alternative solution for encrypting images, encrypt the byte stream or base64 representation of the image.

Use managed object storage service like minio to store image data in encrypted format as objects. Minio can scale well and can be used as a gateway for Azure Storage, AWS S3 or GCP GCS, it can also be deployed as a Object storage abstraction on local storage hardware.

@Narasimha1997 Thanks for your suggestions!
Dockerizing - definitely it's something to work on.

Also try to separate frontend and backend as much as possible so that the frontend can be served by any static hosting solution and backend can be deployed as a managed container on any cloud.

Scalability can be difficult because the entire backend is a monolith. Try separating them and package individual in their own containers, so that they can be scaled independently. (Also try to add Kubernetes support in future, make it cloud native)

The scope of this project is highly defined and limited (BFF architecture suits well), separating into FE and BE will create additional overhead. Based on the project scope, the backend doesn't fit in the microservice architecture.

Assymetric encryption can be slow for large files, provide alternative solution for encrypting images, encrypt the byte stream or base64 representation of the image.

There is some alternative idea for image sharing - https://github.com/muke1908/chat-e2ee/wiki/Idea:-Secure-image-sharing

Use managed object storage service like minio to store image data in encrypted format as objects. Minio can scale well and can be used as a gateway for Azure Storage, AWS S3 or GCP GCS, it can also be deployed as a Object storage abstraction on local storage hardware.

The data is not being stored anywhere. It's just relayed to the client.

Any plans to implement electron.js client for desktop??

@Narasimha1997 That would be a nice thing to have. But need to carefully plan a build process. Is there anything you already thought?

As the first step, we can use ipcRenderer to render the react app in electron window. Later we can think of building a electron specific app.

As a quick setup we can use nativefier while we build the electron app.

nativefier looks pretty cool! Did you try it before?
In case you tried with this project, let's write a doc (in readme / wiki page) on: How to do it - Instruction, Setup, Installation etc.

Sure! I had tried nativefier for one of my projects. It worked pretty well. It just creates an electron native window and links to our website.

Able to generate the native binary. Made a PR as well.
#147