Обзор моего проекта
Chattergram — это POC-приложение для чата, которое переводит ваши голосовые сообщения другим людям в письменный текст. Я создал его во время предыдущего хакатона & оно стало одним из моих любимых побочных проектов. Я не заработал денег, но узнал много нового о Typescript, Vue 3 и функциях Speech To Text.
Теперь я с гордостью представляю его усовершенствованного преемника:
Представляю Chattergram — на базе стека Redis.
Раньше проект не казался завершенным. Оглядываясь назад, я пришел к выводу, что некоторые варианты архитектуры были в лучшем случае неоптимальными:
- Я не использовал кэширование на стороне сервера
- Некоторые компоненты бэкенда были тесно связаны (например, обработчик чата имел жесткую зависимость от сервера Websocket).
- PostgreSQL казался неподходящим выбором для такой тривиальной структуры данных. Я потратил много времени, чтобы правильно настроить структуру данных & воспользоваться преимуществами TS intellisense.
На следующем рисунке вы можете видеть структуру приложения до Redis:
Я рад сказать, что использование Redis позволило мне решить все эти проблемы достаточно просто:
- Redis теперь действует как база данных фронтенда
- Он синхронизирует записи чата и пользователей с MongoDB и обратно.
- Функциональность pub/sub Redis позволила мне отделить обработчик чата от Websocket-сервера.
- Хотя MongoDB не кажется более легкой в навигации, я обнаружил, что это более простая и быстрая постоянная база данных для быстрого запуска.
Ниже показана новая структура приложения. Почти точная копия того, как я ее планировал (запись файлов в кодировке base64 оказалась не самой лучшей идеей):
Использование Redis также значительно повысило производительность. Вы можете найти некоторые простые результаты бенчмарков в readme Github Repos
Chattergram использует фронтенд-компонент, построенный на Vue3. Он также предлагает спецификацию OpenAPI, чтобы помочь разработчикам понять его функциональность.
Спецификацию OpenAPI можно найти в разделе
http://localhost:8080/api/docs
после локального запуска приложения.
Категория представления:
MEAN/MERN Mavericks
Собственно, MFVN — Mavericks (MongoDB, Fastify, Vue, Node)
[Дополнительно: Видео объяснение моего проекта]
Используемый язык
- Node.js + Typescript
Ссылка на код
tq-bit / chattergram-redis
Chattergram + Redis
Приложение для чата, транскрибирующее голосовые сообщения в текст — на базе стека Redis.
Chattergram работает на двух отдельных приложениях — фронтенде и бэкенде. Для доступа к чату необходимо создать учетную запись. Все ваши данные будут храниться на локальном экземпляре Redis (& MongoDB).
После регистрации вы можете начать общаться с другими пользователями. Если вы решите отправить им голосовое сообщение, Deepgram попытается расшифровать его для вас и вашего отправителя. При желании вы можете прослушать записанное сообщение.
Я создал Chattergram-Redis как POC-проект для Redis Hackathon на dev.to. Пожалуйста, не используйте его в продуктивной среде.
Как это работает
Видео объяснение
Вы можете найти видеоверсию моей презентации на Youtube:
Как хранятся данные:
- Это приложение использует два основных типа данных:
User
и…
Дополнительные ресурсы / информация
- Оригинальный (=легальный) файл readme Chattergram
- Вход в консоль Deepgram
- Инструментарий для тестирования производительности Apache Jmeter
Коллабораторы
Solo — проект
- Проверьте Redis OM, клиентские библиотеки для работы с Redis как многомодельной базой данных.
- Используйте RedisInsight для визуализации данных в Redis.
- Зарегистрируйтесь для получения бесплатной базы данных Redis.