crud app for async chat app works only that far. when you start getting a lot of customers (companies, etc), big chat rooms, etc - things get complicated.
i saw this kind of system that started as simple crud app, and many years later developers still try to resolve some of the originals sins.
"original sins" happened way before i joined the company. so i don't know the exact chronology, but app was started as very simple crud app. new features were added as client base increased. client base became more enterprisy. mobile apps + desktop apps appeared. new features were added to support them.
so something that started as simple node.js + nosql crud app written by not that experienced developers became over span of few years little shop of horror that was failing to scale without all kinds of crazy workarounds
i saw this kind of system that started as simple crud app, and many years later developers still try to resolve some of the originals sins.