🔔 Please, also see the front-end repository 🙏
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)
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 |
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