Основная сложность это реализовать онлайн обновление сообщений. Для этого необходимо использовать технологию Web Socket.
В наше время собрать бэкенд с поддержкой Web Socket можно очень просто с
serveless технологией.
Но перед этим необходимо создать пул пользователей с аутентификацией. Как это делать можно понять из
этого туториала.
После создаете базу данных и разворачиваете бэк
как здесь.
И подключаете например
эту либу для чата.
Если
оформите подписку на моем патреоне, то могу вас консультировать на протяжении создании вашего чата, так как у меня есть опыт его создания и не только.