<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mahesh MS</title>
    <description>The latest articles on DEV Community by Mahesh MS (@memoryinject).</description>
    <link>https://dev.to/memoryinject</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F815281%2F2dd2617a-4056-44b9-8fae-267172e31e18.png</url>
      <title>DEV Community: Mahesh MS</title>
      <link>https://dev.to/memoryinject</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/memoryinject"/>
    <language>en</language>
    <item>
      <title>Media-Review: Cloud based collaborative media review application</title>
      <dc:creator>Mahesh MS</dc:creator>
      <pubDate>Sat, 09 Apr 2022 20:28:24 +0000</pubDate>
      <link>https://dev.to/memoryinject/media-review-cloud-based-collaborative-media-review-application-44a4</link>
      <guid>https://dev.to/memoryinject/media-review-cloud-based-collaborative-media-review-application-44a4</guid>
      <description>&lt;p&gt;— &lt;/p&gt;

&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;Media-Review PWA (Progressive Web App) is a platform for review media by team collaboration in cloud, integrates reviewers, creators, content and tools needs to be more engaged and effective review process.&lt;br&gt;
I have been building this application for quite a long time, when I see the Deepgram x DEV Hackathon, I knew that I can use Deepgram in this application for practical use. &lt;br&gt;
In the Media-Review app user creates a feedback by typing text or draw annotation.&lt;br&gt;
Here Deepgram is a perfect match for feedback creation. Instead of typing feedback, user can use Speech-to-Text for creating feedback (especially user with an iPhone on the go).&lt;br&gt;
Under the hood it uses MediaRecorder Web API on front-end for recording audio then it sends to the back-end for Deepgram, once the Deepgram response with transcript, back-end send back the transcript to the front-end.&lt;br&gt;
This is a monolithic application and big, so below I have provided the right files on Github that point to the only Deepgram part of this application:&lt;/p&gt;
&lt;h5&gt;
  
  
  Front-end: React with Redux
&lt;/h5&gt;

&lt;p&gt;React component to record audio and send to back-end: &lt;br&gt;
&lt;a href="https://github.com/memoryInject/media-review-app/blob/main/frontend/src/components/TranscriptModal.js"&gt;https://github.com/memoryInject/media-review-app/blob/main/frontend/src/components/TranscriptModal.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MediaRecorder Web API integration:&lt;br&gt;
&lt;a href="https://github.com/memoryInject/media-review-app/blob/main/frontend/src/utils/captureAudio.js"&gt;https://github.com/memoryInject/media-review-app/blob/main/frontend/src/utils/captureAudio.js&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Back-end: Django and Django REST framework
&lt;/h5&gt;

&lt;p&gt;Deepgram view: &lt;br&gt;
&lt;a href="https://github.com/memoryInject/media-review-app/blob/main/backend/transcript/views.py"&gt;https://github.com/memoryInject/media-review-app/blob/main/backend/transcript/views.py&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  NOTE:
&lt;/h5&gt;

&lt;p&gt;I am a back-end developer, apologies for my messy front-end code (it's much harder for me to refactor React front-end code).&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Accessibility Advocates&lt;/p&gt;


&lt;h3&gt;
  
  
  Link to Code on GitHub
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/memoryInject"&gt;
        memoryInject
      &lt;/a&gt; / &lt;a href="https://github.com/memoryInject/media-review-app"&gt;
        media-review-app
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Media-Review PWA is a platform for review media by team collaboration in cloud, integrates reviewers, creators, content and tools needs to be more engaged and effective review process.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Media-Review App&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://circleci.com/gh/memoryInject/media-review-app/tree/main" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/6660f7fd30ab554ed7d293987ed46abe5f6308ac0cc6503eaf07ee5d6bd861f1/68747470733a2f2f636972636c6563692e636f6d2f67682f6d656d6f7279496e6a6563742f6d656469612d7265766965772d6170702f747265652f6d61696e2e7376673f7374796c653d737667" alt="CircleCI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Media-Review PWA (Progressive Web App) is a platform for review media by team collaboration in
cloud, integrates reviewers, creators, content and tools needs to be
more engaged and effective review process.&lt;/p&gt;
&lt;h3&gt;
Testing and CI/CD frameworks used:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Front-end: &lt;a href="https://testing-library.com/docs/react-testing-library/intro/" rel="nofollow"&gt;React Testing Library&lt;/a&gt; with &lt;a href="https://mswjs.io/" rel="nofollow"&gt;Mock Service Worker&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Back-end: &lt;a href="https://www.django-rest-framework.org/api-guide/testing/" rel="nofollow"&gt;Django REST framework test&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;End-to-end: &lt;a href="https://www.cypress.io/" rel="nofollow"&gt;Cypress&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;CI/CD: &lt;a href="https://circleci.com/" rel="nofollow"&gt;CircleCI&lt;/a&gt; with &lt;a href="https://www.heroku.com/" rel="nofollow"&gt;Heroku&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Demo&lt;/h2&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/586dbc3b3a856d44a185e53c364fb33271adb2c51d7799808815ab10f26849d0/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6d656d6f7279696e6a6563742f696d6167652f75706c6f61642f76313633383831303638312f6d656469615f7265766965775f6170702f696d616765732f657a6769662d332d3962646332336561363937375f78786a6a776c2e676966"&gt;&lt;img src="https://camo.githubusercontent.com/586dbc3b3a856d44a185e53c364fb33271adb2c51d7799808815ab10f26849d0/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f6d656d6f7279696e6a6563742f696d6167652f75706c6f61642f76313633383831303638312f6d656469615f7265766965775f6170702f696d616765732f657a6769662d332d3962646332336561363937375f78786a6a776c2e676966" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
YouTube:&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=-kcfAHRd4jM" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P79i1_yD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/72661846/162590289-805cd4dd-b440-424f-a15f-3a0195d92aa1.png" alt="Alt text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://media-review.herokuapp.com" rel="nofollow"&gt;https://media-review.herokuapp.com&lt;/a&gt;  👍&lt;br&gt;
More info: &lt;a href="https://memoryinject.io/" rel="nofollow"&gt;memoryinject.io&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Environment Variables&lt;/h2&gt;
&lt;p&gt;To run this project, you will need to add the following environment variables to your &lt;a href="https://direnv.net/" rel="nofollow"&gt;.envrc&lt;/a&gt; file&lt;/p&gt;
&lt;p&gt;Secrect key from django settings.py&lt;br&gt;
&lt;code&gt;DJANGO_SECRECT_KEY='django-insecure-#key'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Django mode anything other than development will set DEBUG to False in settings.py&lt;br&gt;
&lt;code&gt;DJANGO_ENV='development'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Redis cache - for test use 'dummy' insted of 'redis'&lt;br&gt;
&lt;code&gt;DJANGO_MEMCACHE='redis'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;REDIS_URL='redis://127.0.0.1:6379/1'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Email config - here setup email client to send email,&lt;br&gt;
mailtrap and console output are used for test,&lt;br&gt;
use 'console' insted of 'smtp' for console output for email&lt;br&gt;
&lt;code&gt;EMAIL_BACKEND='smtp'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;EMAIL_HOST='smtp.mailtrap.io'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;EMAIL_HOST_USER='mailtrap-user'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;EMAIL_HOST_PASSWORD='mailtrap-password'&lt;/code&gt;&lt;br&gt;
&lt;code&gt;EMAIL_PORT='2525'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Databse Management…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/memoryInject/media-review-app"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;Full product demo:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/-kcfAHRd4jM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Deepgram feature demo:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/eIB7KKYd2H0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;—&lt;/p&gt;

</description>
      <category>hackwithdg</category>
      <category>python</category>
      <category>webdev</category>
      <category>django</category>
    </item>
  </channel>
</rss>
