Building a Chat System Without Azure Chat – Part 1


| November 1, 2023 | in

In a previous blog post series, we built an entire chat system on top of Azure Communication Services. We focused on a lot of the details in building the system using Azure Chat.

While Azure Chat helps solve a lot of the problems with these kinds of projects, it still took a lot of effort to implement.

This series will look at building a chat solution without Azure Chat. While not impossible, it does require a lot more work, especially on the back end.

Azure Chat provides a large part of the solution, so building a chat system without it requires building several other pieces. I have two GitHub repositories that show a chat solution using Angular, NodeJS, Fastify, and SQLite. You can find these repos at Frontend Angular Repo and Backend Node Repo.

The frontend is very similar to the one we used in our Azure Chat solution. From a presentation perspective, they are basically the same. But the backend is very different.

In this backend, we have to do everything manually. I wrote the backend to be a REST-like interface for interacting with chat. You can see the interface configuration in the index.ts file in the backend solution.

The backend chat processing is handled mainly by the ChatManager.ts file. The code in that file is responsible for handling user requests. The requests are handled by reading and writing data to a SQLite database. The SQLite database access is handled by the sqlite-util.ts and database-access.ts files.

There isn’t a lot of code. Feel free to dig in and learn what you can. In my next blog post, I will explain how I expanded this example to use web sockets for live updates.