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.
