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
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
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
- JWT authentication with access & refresh tokens
- Pretty similar to Telegram interactive interface
- C# (ASP.NET Core)
- SignalR Core
- Entity Framework Core
- Insomnia
- HTML & CSS
- TypeScript
- React TS
- Redux Toolkit
- CSS Modules
- 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
- 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