metamask turn on is required (done this way for easy check, "nostyle"-style)
https://block-soft.github.io/privateChats/
Members Contract (all chats members should store here public keys) https://ropsten.etherscan.io/address/0x26f7faf720ef7d9fd2e6fee1ef1df3a7a44ef9f3
ChatRooms Fabric Contract (all chats are generated from here) https://ropsten.etherscan.io/address/0x38ead9d6b5ce82839cba03503b42b2f5e062f1ac
Logic of chatroom enter / approve etc, logic of creation new chatrooms (could be linked to some othe objects, for example - selling items)
IPFS storage could be changed on some cloud storage - anyway its encrypted)
And design/frontend could be changed any way you need - its simplified with "no complex" libraries for easy usage, but could be React or any)