Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ruppysuppy/smartsapp
💬📱 An End to End Encrypted Cross Platform messenger app.
https://github.com/ruppysuppy/smartsapp
cross-platform desktop-app electron end-to-end-encryption firebase flutter mobile-app react redux typescript webapp
Last synced: 2 months ago
JSON representation
💬📱 An End to End Encrypted Cross Platform messenger app.
- Host: GitHub
- URL: https://github.com/ruppysuppy/smartsapp
- Owner: ruppysuppy
- License: mit
- Created: 2020-11-23T06:29:01.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-01-07T03:52:04.000Z (about 1 year ago)
- Last Synced: 2024-10-15T17:53:38.124Z (3 months ago)
- Topics: cross-platform, desktop-app, electron, end-to-end-encryption, firebase, flutter, mobile-app, react, redux, typescript, webapp
- Language: TypeScript
- Homepage: https://smartsapp-ba40f.web.app/
- Size: 4.99 MB
- Stars: 117
- Watchers: 9
- Forks: 30
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Smartsapp
A fully **cross-platform messenger** app with **End to End Encryption (E2EE)**.
## Demo
**NOTE:** The features shown in the demo is not exhaustive. Only the core features are showcased in the demo.
## Platforms Supported
1. **Desktop:** Windows, Linux, MacOS
2. **Mobile:** Android, iOS
3. **Website:** Any device with a browser## Back-end Setup
The back-end of the app is handled by `Firebase`.
### Basic Setup
1. Go to firebase console and create a new project with the name `Smartsapp`
2. Enable `Google Analylitics`### App Setup
1. Create an `App` for the project from the overview page
2. Copy and paste the configurations in the required location (given in the readme of the respective apps)### Auth Setup
1. Go to the project `Authentication` section
2. Select `Sign-in method` tab
3. Enable `Email/Password` and `Google` sign in### Firestore Setup
1. Go to the project `Firestore` section
2. Create firestore provisions for the project (choose the server nearest to your location)
3. Go to the `Rules` tab and use the following rules:
```c++
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /contacts/{uid} {
allow read, create, update: if request.auth != null;
}
match /keys/{uid} {
allow read, create: if request.auth != null && request.auth.uid == uid;
}
match /messages/{msg} {
allow read, create: if request.auth != null;
}
match /users/{uid} {
allow read: if request.auth != null;
allow create, update: if request.auth != null && request.auth.uid == uid;
}
}
}
```
4. Go to the `Indexes` tab and create the following index:
```javascript
{
collection: "messages",
fields: {
users: Ascending,
timestamp: Descending,
},
queryScope: Collection
}
```### Storage Setup
1. Go to the project `Storage` section
2. Create storage provisions for the project (choose the server nearest to your location)
3. Go to the rules tab and use the following rules:
```c++
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /profilepic/{uid} {
allow read: if request.auth != null;
allow create, update: if request.auth != null
&& request.auth.uid == uid
&& request.resource.size < 1024 * 1024
&& request.resource.contentType.matches('image/.*');
}
match /media/{media} {
allow read: if request.auth != null;
allow create: if request.auth != null
&& request.resource.size < 1024 * 1024
&& request.resource.contentType.matches('image/.*');
}
}
}
```### Note
Running the E2EE Key Generator Server is necessary for all Platforms