Simple. Secure. Reliable messaging. With Message Hub, you'll get fast, simple, secure messaging for free*, available on the web all over the world. Data charges may apply. Contact your provider for details.
firebase's Realtime Database is used to store your encrypted
messages. This allows client's to communicate with each other in RealTime.
Firebase Cloud Storage is used to store profile pictures of your.
Firebase Authentication is used to identify user's so in this way your email is shared with firebase aka google for registration purpose. *plannig to add more way to authenticate.
Thanks to Seald-Io-SDK end-to-end encryption
is possible for this chat app.
chat's are encrypted with Seald-Io-SDK by creating a your identity on Seald-Io-SDK allowing the app and sdk to identify who send the messages and make sure only the intendent resiptent be able to decrypt it and no one else not even the admin of the seald sdk or firebase database because only encrypted message is sent from frontend to backend and this encrypted message get stores in the database. So your private messages remain private.
- Database
- Sotrage
- Authentication
The Web app is powered by React Js frontend Library. various library are used along with React Js. react routers are used to make single page application and hassel free and smooth page load. consuming less data
Chakra-Ui is used as css framework along with react js . In short Chkra-ui is component based css framework for ReactJs.
Axios used to make api request with backend .
Firebase client library is used to acces firebase database,storage and authentication.
Seald-Io-SDK @seald-io/sdk-web
Library is used for the end-to-end encryption of the private messages and @seald-io/sdk-plugin-ssks-password
is used to protect and store identity of user on SSKS-Server
the identity on the server is protected by password used to login, the password is hashed
so there is no leaking of password either.
The server is powered by NODEJS to use javascript on the backend .
epxress is used to make server for api request .
firebase admin sdk is used for verifying and writing to database .
your Identity is stored in the database in your browser's IndexDb
or most suitable database depending on your browser
, Database is protected by a databaseKey generated by the server and send to the client each time you login or signup so only the app can access your identity to decrypt the messages for you. Database Path includes your sessionId so it's unique to each session. Storing Identity on Your Browser allow you to remain login to the app and the Seald-SDK.
- first fork this repo and then clone it on your local machine run
yarn install
ornpm install
(use any one) in the root folder and in the/message-frontend
- First register a app on firebase copy the code key
- create a
./message-frontend/.env
file and set environment variable.REACT_APP_apiKey
,REACT_APP_authDomain
,REACT_APP_databaseURL
,REACT_APP_projectId
,REACT_APP_storageBucket
,REACT_APP_messagingSenderId
,REACT_APP_appId
- assing the copied value to the variables for ex assign value copied from
apiKey
toREACT_APP_apiKey
- create a firebase service account and download the generated the json file.
- create
.env
file in the root of the project and add these variablesproject_id
,private_key_id
,client_email
, ,client_id
,auth_uri
,token_uri
,storageBucket
,auth_provider_x509_cert_url
,client_x509_cert_url
,private_key
you will find value of this variable in the downloaded json file just assign the value respectively. forstorageBucket
use the value ofREACT_APP_storageBucket
. - create a seald-Io account .
- Add this env variable to the
.env
file in the root :-seald_appId
,seald_validationKeyId
,seald_validationKey
, - you will get vaule for this variable after creating the seald-io accoutn just copy and paste the values Respectively
- create on last variable named
serverSession_secret
and assign any random string to it. Recommendation usecrypto.randomBytes
to genrate a random string or use your own does not matter - change directory to message-frontend using command
cd ./message-frontend
and run commandyarn build
after build complete go back to parent directory using commandcd ..
- Use command
yarn start
to start the server. - open
locahost:8081
in your browser and now your can see the websie running in your browser.
use this for developing your own chat app project with new and cool fetures or you can contribute to this project and help me growing and developing this project.