Skip to content

An instant messaging service with authentication via social media, such as Facebook. The service allows users to send text messages and share links.

Notifications You must be signed in to change notification settings

evgenii-petukhov/LetsTalk.Server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LetsTalk Chat App @ back-end

C# .Net MySQL MongoDB Apache Kafka Redis Nginx Visual Studio Debian

🔔 Please, also see the front-end repository 🙏

scheme

🔴 Live demo

Description

This is an instant messaging service with authentication via social media, such as Facebook. It allows users to send text messages, images, and share links.

This project is a showcase of my technical skills and talent for potential IT recruiters, employers, customers, etc. It demonstrates that

  • I can
    • create a single-page web application with Angular
    • implement reactive state management with NgRx store in Angular applications
    • implement caching with both Redis and the MemoryCache class
  • I understand
    • basic principles of the OpenAPI Specification
    • microservice communication patterns and protocols, such as GRPC
    • main principles of microservice architecture, event-driven development, and experienced in Apache Kafka
    • Domain-driven design data consistency aspects (please, read my article about DDD on LinkedIn)

Architecture

scheme

The front-end is an Angular single-page application which uses NgRx for reactive state management.

The back-end implements microservice architecture. The table below describes each of them.

Microservice name Protocol Description
Chat API REST Responsible for sending messages and account management
Authentication GRPC Generates and validates JSON Web Tokens
Notification Apache Kafka | SignalR Sends out notifications about new messages
Link preview Apache Kafka Decorates messages with a website's name and a picture preview, if a message contains links
File storage GRPC Web Saves avatars and images uplodaed by users on the file system and serves them when requested
Image processing Apache Kafka Generates image previews, uses SkiaSharp

Deployment

The back-end can be deployed on Linux. For this you need to make the following steps

  • Clone the repository
  • Install dotnet
  • Install and configure nginx as reverse proxy
  • Set up SSL certificates. I prefer using Certbot + Let's Encrypt.
  • Register microservices as Linux daemons

About

An instant messaging service with authentication via social media, such as Facebook. The service allows users to send text messages and share links.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Languages