Chat Service Backlog

Chat Service Backlog

โœจ Requirements

General

  • allow users to have a private conversation
  • allow users to have a group conversation
  • each user can have their own contact list

Websocket

  • handle stickiness of the user's session
  • allow users to connect with multiple sessions
  • return count of unread messages on connect
  • notify users when their messages are read
  • send message
  • delete message
  • receive events from the server
  • send actions to the server
GraphQL
  • mark messages as read
  • query messages
  • handle blocking users

Rules

  • cannot contain uncensored word
  • cannot message anyone if you get reported 10 times

๐Ÿ”ฎ Future Features

  • admin panel
    • UI interface to interact with settings like banned users, banned usernames, and such
  • detect spammers
  • ability to send files
  • when adding people to a chatroom send invitation first

๐Ÿช„ Actions

Action Function Detail
create chatroom test test
add people to a chatroom test test
delete chatroom test test
join chatroom test test
send message test test
delete message test test
notify receiver/s test test
message is read test test

๐Ÿ’พ The Database ๐Ÿณ The Containers ๐Ÿ™ The Deployment
MongoDB Docker GitHub actions
Postgres (as persistent storage) Docker Swarm
Redis (storing sessions and queue)
more info about databases in this page

scale

for scaling, there is no need for multiple GraphQL services and you only need multiple WebSocket services with a gateway to handle the load balancing.


๐Ÿ“Ž Resources

My template for projects in 2023 using Go (Fiber and MongoDB) ๐Ÿ‘จ๐Ÿฝโ€๐Ÿ’ป
Do you Speak Spanish? Visit Spanish version in my blog
16 Best Container Orchestration Tools And Services In 2022
In this 2022 updated guide, I have covered the best 16 container orchestration tools and services used by many organizations in production.
Running end-to-end tests in GitHub Actions - Octopus Deploy
As part of our series about Continuous Integration, learn how to run end-to-end tests in GitHub Actions and capture the results.