mirror of https://github.com/01-edu/public.git
2 changed files with 73 additions and 0 deletions
@ -0,0 +1,50 @@
|
||||
# Secure Messaging App |
||||
|
||||
### Introduction |
||||
|
||||
Messaging apps have become an essential part of our daily lives, allowing us to easily communicate with friends, family, and colleagues. Over the years, they evolved significantly, from simple text messaging to video calling and more. However, as messaging apps have become more popular, concerns about privacy and security have also increased. Many messaging apps have been criticized for their lack of security and the potential for users' private data to be compromised. |
||||
|
||||
|
||||
### Objective |
||||
|
||||
Build a secure mobile messaging app using Flutter and Firebase (or similar technologies). It should support either iOS, Android or both. The app should have biometric authentication, end-to-end encryption, and other security features to protect user data. Users should be able to send text messages, images, and videos, and create or join group chats. |
||||
|
||||
|
||||
### Instructions for Flutter and Firebase as a reference: |
||||
|
||||
Set up a new Flutter project and integrate Firebase authentication and Cloud Firestore as a backend. Use the Firebase Console to create a new Firebase project, add appropriate configuration files. |
||||
|
||||
To enable user authentication implement Firebase Authentication and secure sign-in. Users should be able to sign up, log in, and log out of the app using email and password authentication. Additionally, implement biometric authentication using the local_auth package to allow users to log in using their fingerprint or face ID. |
||||
|
||||
Implement end-to-end encryption for secret chats using the encrypt or webcrypto packages. Use a symmetric encryption algorithm like RSA, and generate a new public and private key pair for each pair of users for each secret chat. The public keys should be securely shared between the sender and receiver. |
||||
|
||||
|
||||
|
||||
### Implement the following features: |
||||
|
||||
- User profiles: Users should be able to create a profile with a profile picture, username, and other information. |
||||
- Search users: Users should be able to search for other users by username or other information. |
||||
- Add contacts: Users should be able to add contacts by searching for their username or scanning a QR code. |
||||
- Messaging: Users should be able to send text messages, images, and videos, with features such as read receipts, typing indicators, and the ability to edit or delete messages. |
||||
- Secret chats: Users should be able to start encrypted one-on-one chats with the same functionality as regular chats with one exception: all messages have to be encrypted using an end-to-end algorithm. |
||||
|
||||
|
||||
|
||||
### Bonus: |
||||
|
||||
Group messaging: Users should be able to create or join group chats with multiple users having at least the same functionality as regular chats. |
||||
|
||||
Push notifications: Users should receive notifications of new messages or friend requests using the firebase_messaging package. |
||||
|
||||
## Suggested Packages for Flutter and Firebase: |
||||
|
||||
- firebase_auth |
||||
- cloud_firestore |
||||
- firebase_storage |
||||
- cached_network_image |
||||
- image_picker |
||||
- video_player |
||||
- flutter_secure_storage |
||||
- encrypt |
||||
- local_auth |
||||
- firebase_messaging |
@ -0,0 +1,23 @@
|
||||
#### Functional |
||||
|
||||
> In order to run and hot reload app either on emulator or device, follow the [instructions](https://docs.flutter.dev/get-started/test-drive?tab=androidstudio#run-the-app) |
||||
|
||||
###### Was the app committed within the required time period? |
||||
|
||||
###### Does the app run without crashes? |
||||
|
||||
###### Sign up withing your email. After signing up, try to log in to the messenger, can you authenticate? |
||||
|
||||
###### After successful log-in, enable boimetric authentication via either fingerprint or face recognition and try to log in. |
||||
|
||||
###### Search for any other user and try messaging them. Do messages appear on other user's app? |
||||
|
||||
###### Check whether messages are encrypted using other user's public key. |
||||
|
||||
###### Can you update your profile information including name, picture, username? |
||||
|
||||
###### Generate QR code of your profile via app, does it contain information about you and your profile? |
||||
|
||||
###### Try sending video, audio, images via chat. Does the recipient get all the files correctly? |
||||
|
||||
###### Create secret chat. Messages should be encrypted end-to-end, meaning messages must only be visible to users, but not on the backend of the app. |
Loading…
Reference in new issue