Skip to content

Telegram Clone - is a clone of Telegram Messenger where you can chat with your contacts individually or create a whole conversation with your colleagues

Notifications You must be signed in to change notification settings

arrKhange1/TelegramClone

Repository files navigation

Telegram Clone

To start with, Telegram is a cross-platform messenger for sending text messages, making audio and video calls
(https://en.wikipedia.org/wiki/Telegram_(software))
The project was built to learn new to me websockets, improve skills in system design, interface design

Project description

Private chats

A private chat is initialized when sending a message from the contact list
The first sent message creates a new chat within the message
If a message receiver doesn't have a chat opened, unread messages will be collecting in the chat list

The dialog between 2 people is presented below:

Group chats

A group chat can have from 1 to many chatting people in it
A group chat is initialized by creating it via filling the form with the chat name and members
If one of the members has a chat closed, unread messages will be collecting in the chat list

The conversation between Simon, Brian and Alice is presented below:

Database scheme

Additional features

  • JWT authentication with access & refresh tokens
  • Pretty similar to Telegram interactive interface

Technologies

Backend

  • C# (ASP.NET Core)
  • SignalR Core
  • Entity Framework Core
  • Insomnia

Frontend

  • HTML & CSS
  • TypeScript
  • React TS
  • Redux Toolkit
  • CSS Modules

Challenges

  • At the start of learning JWT authentication the problem was to find out why is the refresh token needed and
    why isn't the access token enough
  • Designing database for both private and group chats
  • It was challenging to make SignalR work properly on the frontend with simultaneous connections to the hub in different components
  • A lot of challenging moments in interface design like a scroll for overflowing messages and etc

How to run

  • Clone the repo
  • Change database (DBMS) in appsettings.json or leave as MSSQL in the following line:
    "DefaultConnection": "Data Source=(localdb)\MSSQLLocalDB;Database=Telegram;Trusted_Connection=True;"
  • Open Package Manager Console in Visual Studio and run update database
  • Go to telegram_client folder and run npm install to install packages from packages.json
  • Run the project via IIS Express
  • See you at https://localhost:44351

About

Telegram Clone - is a clone of Telegram Messenger where you can chat with your contacts individually or create a whole conversation with your colleagues

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published