Connectify is a real-time chat app offering one-to-one messaging and a range of features, all within a user-friendly interface for a seamless communication experience.
-
Flutter (Dart) for the frontend, utilizing sqflite for local storage to save user chats and messages.
-
Python - Django for the backend, with PostgreSQL for storing users and profiles information of logged-in users.
-
WebSockets for enabling real-time messaging.
-
Firebase cloud messaging for sending notifications
-
Http restful APIs
-
Singleton design pattern ensures that only one instance of the database is created throughout the application’s lifecycle.
-
Proxy pattern acts as an intermediary layer between the authentication system and the application, managing login and signup requests.
-
Chain of Responsibility pattern handles authentication and authorization by choosing the appropriate handler according to the current state, such as verifying the email, phone number, and authentication code.
-
Builder pattern is used to construct complex objects, such as messages and chats, step by step. It allows for flexible configuration and customization, making it easier to build different parts of a message or chat.
-
Observer pattern notifies all pages when a mode switch occurs, ensuring that any changes in the theme are automatically updated across the application.
-
Mediator pattern is employed to reduce the direct dependencies between APIs and other application logic, promoting loose coupling. It centralizes communication, ensuring that different components interact through the mediator.
-
Secure Login and Signup Authentication and Authorization
- featuring email verification by sending a code to the user's email account expired after five minutes.
- After successful login, a session code or token is provided to enhance security throughout the process.
-
One-to-one messaging
- supports image sharing.
- real-time communication.
- Send Notifications to users when they are not active in the chat or when the application is running in the background.
-
The self-chat functionality
- allows users to create a personal chat space where they can message themselves.
- This feature serves as a private notepad.
-
Contact Access Permission
- Granting access to your contacts enables Connectify to identify which of your contacts are also using the app.
-
Messages queued on the server if the receiver is offline
- The server delivers these queued messages once the receiver reconnects.
-
Replying to messages
- enhances communication
- allowing for more engaging and interactive conversations.
-
Starred messages allow users to highlight and prioritize specific messages for easy access.
-
Users can upload profile photos to personalize their accounts and enhance their presence within the app.
-
Search feature for messages enables easy access and retrieval of specific conversations.
-
Pagination for loading chats
- along with auto-scrolling to the bottom.
- boosts efficiency and enhances the overall user experience.
-
Chats are sorted on the home page based on the most recent message, ensuring users can easily find their latest conversations.
-
A mode switch feature
- allows users to toggle between light and dark themes
- providing a customizable.
- comfortable viewing experience based on their preferences.
-
Favorite contacts enable users to prioritize specific individuals for quicker access and enhanced communication.
-
Delete chats to optimize storage efficiency by removing unimportant conversations.
-
Message indicators
- seen indicator.
- delivered indicator.
- enhance communication by providing users with visibility on whether their messages have been read.
- Show the count of message alerts on the home screen to provide users with a quick overview of their unread messages.
-
Delete Account option allows users to remove their account and all associated data.
-
Logout
clone the repo
git clone https://github.com/porvah/Connectify
for Backend
1 - install python
2 - install PostgreSQL, you should create your database and add the database username and password to a .env file in the project's root directory. This file has been created but is not included in the GitHub repository.
2 - install django
pip install django
3 - make migrations
python manage.py makemigrations
4 - migrate
python manage.py migrate
5 - run Server
daphne -b 127.0.0.1 -p 8000 connectifyServer.asgi:application
for Frontend
1 - install android studio and flutter
2 - create an emulator
3 - install packages
flutter pub get
4 - Create a .env file to store the IP host address.
5 - start debugging