<?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: Tamas Szoke</title>
    <description>The latest articles on DEV Community by Tamas Szoke (@tamasszoke).</description>
    <link>https://dev.to/tamasszoke</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%2F151846%2Ff9371ab3-83a0-45c6-9cd0-73376aefe9e2.jpg</url>
      <title>DEV Community: Tamas Szoke</title>
      <link>https://dev.to/tamasszoke</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tamasszoke"/>
    <language>en</language>
    <item>
      <title>New MERN Stack Boilerplate</title>
      <dc:creator>Tamas Szoke</dc:creator>
      <pubDate>Wed, 30 Nov 2022 11:39:54 +0000</pubDate>
      <link>https://dev.to/tamasszoke/a-seed-for-your-next-project-327f</link>
      <guid>https://dev.to/tamasszoke/a-seed-for-your-next-project-327f</guid>
      <description>&lt;p&gt;I'm introducing MERN-SEED, an advanced boilerplate using Node, React, and TypeScript inside Docker containers. It takes advantage of the latest technologies and best practices to make your development process as efficient as possible.&lt;/p&gt;

&lt;p&gt;I released the original project in 2019 as MERN Boilerplate. Since then, there have been a lot of changes to the frameworks and packages it uses, so I decided to rewrite it to be more recent. In the following, I will discuss the features and benefits of the release.&lt;/p&gt;




&lt;h2&gt;
  
  
  Highlights
&lt;/h2&gt;

&lt;p&gt;It is built with clean and consistent code, keeping scalability and performance in mind. The advanced structure allows you to build applications of any size.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JWT Authentication&lt;/li&gt;
&lt;li&gt;TypeScript on both ends&lt;/li&gt;
&lt;li&gt;Modern EcmaScript features&lt;/li&gt;
&lt;li&gt;Clean, consistent code&lt;/li&gt;
&lt;li&gt;Folder by Features structure&lt;/li&gt;
&lt;li&gt;Simplified production builds&lt;/li&gt;
&lt;li&gt;Docker containers&lt;/li&gt;
&lt;li&gt;Automated setup&lt;/li&gt;
&lt;li&gt;End-to-end tests&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;The project has been written in TypeScript, a superset of JavaScript that adds static type checking and other features that can be useful in large-scale applications and make the code more maintainable.&lt;/p&gt;

&lt;p&gt;The Folder-by-Features structure increases scalability and ease of collaboration. It has complete End-to-End testing, which will help to ensure that the application is fully functional before release.&lt;/p&gt;

&lt;p&gt;It uses Docker containers to be portable and simple to set up all the tools needed for development and production.&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;p&gt;The backend includes global error handling with internal error codes and custom errors, as well as standardized request responses to maintain consistency. JWT is used for authentication and authorization to reduce the workload on the server. It uses Node v18 LTS, so the code is more stable and reliable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frontend
&lt;/h3&gt;

&lt;p&gt;The frontend uses hooks rather than class components. This approach is more efficient and will make the code easier to understand and maintain. It has light and dark themes prepared to use and extend. In addition, it uses React v18 and Redux Toolkit to make the application more modern.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;I have included a bash script to simplify the process of setting up and running the project in under 5 minutes by automating the process of installing the dependencies and setting up the configurations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Thank you for taking the time to read about my project. Any feedback or support is appreciated. I hope you find it useful!&lt;/p&gt;

&lt;p&gt;Read the detailed &lt;a href="https://github.com/tamasszoke/mern-seed#readme" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; for more.&lt;br&gt;
GitHub repo: &lt;a href="https://github.com/tamasszoke/mern-seed" rel="noopener noreferrer"&gt;https://github.com/tamasszoke/mern-seed&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>react</category>
      <category>typescript</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Boilerplate for MERN stack development</title>
      <dc:creator>Tamas Szoke</dc:creator>
      <pubDate>Tue, 02 Apr 2019 19:09:56 +0000</pubDate>
      <link>https://dev.to/tamasszoke/boilerplate-for-mern-stack-development-3o44</link>
      <guid>https://dev.to/tamasszoke/boilerplate-for-mern-stack-development-3o44</guid>
      <description>&lt;p&gt;&lt;strong&gt;Welcome&lt;/strong&gt;, this is my newest boilerplate module, it helps to start MERN stack development faster and uses features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker containers&lt;/li&gt;
&lt;li&gt;Clear separation of concerns (client, server, build)&lt;/li&gt;
&lt;li&gt;Folder by Feature structure&lt;/li&gt;
&lt;li&gt;Clean code with JavaScript Standard Style&lt;/li&gt;
&lt;li&gt;PM2 (cluster mode) for production&lt;/li&gt;
&lt;li&gt;Built-in local authentication with Passport&lt;/li&gt;
&lt;li&gt;Built-in Socket.IO connection&lt;/li&gt;
&lt;li&gt;Detailed description&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for stopping by,&lt;br&gt;
&lt;strong&gt;Have a nice day!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/tamasszoke/mern-seed/tree/legacy"&gt;Check out on GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update 2022&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There is a new TypeScript version, check the &lt;a href="https://dev.to/tamasszoke/a-seed-for-your-next-project-327f"&gt;article&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>react</category>
      <category>node</category>
      <category>javascript</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Neat-RTC: WebRTC wrapper for React and Vue</title>
      <dc:creator>Tamas Szoke</dc:creator>
      <pubDate>Tue, 02 Apr 2019 11:53:42 +0000</pubDate>
      <link>https://dev.to/tamasszoke/neat-rtc-webrtc-wrapper-for-react-and-vue-4n4a</link>
      <guid>https://dev.to/tamasszoke/neat-rtc-webrtc-wrapper-for-react-and-vue-4n4a</guid>
      <description>&lt;p&gt;&lt;strong&gt;Welcome&lt;/strong&gt;, this is my recently created module, it makes WebRTC easier to use with features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Built-in signaling&lt;/li&gt;
&lt;li&gt;Simplified mediastream, datachannel usage&lt;/li&gt;
&lt;li&gt;Ready to use React, Vue examples&lt;/li&gt;
&lt;li&gt;Detailed description&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/neat-rtc" rel="noopener noreferrer"&gt;Try the package at NPM&lt;/a&gt;&lt;br&gt;
&lt;a href="https://caniuse.com/#feat=rtcpeerconnection" rel="noopener noreferrer"&gt;Check browser compatibility&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  What is WebRTC?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://webrtc.org/" rel="noopener noreferrer"&gt;WebRTC&lt;/a&gt; is an HTML5 specification that you can use to add encrypted, real-time media/data communications directly between browsers or devices.&lt;/p&gt;
&lt;h3&gt;
  
  
  Have a nice day!
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tamasszoke" rel="noopener noreferrer"&gt;
        tamasszoke
      &lt;/a&gt; / &lt;a href="https://github.com/tamasszoke/neat-rtc" rel="noopener noreferrer"&gt;
        neat-rtc
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      WebRTC wrapper for peer-to-peer (P2P) communication with built-in signaling for React and Vue.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Neat-RTC&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/tamasszoke/neat-rtc" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/553daadc26d01005d6b9bd5f1dd24666a476b2b174145a73fad09d8b14bc8d74/68747470733a2f2f7472617669732d63692e6f72672f74616d6173737a6f6b652f6e6561742d7274632e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://badge.fury.io/js/neat-rtc" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ec123651951ecdd3acf3a8a1de56cc8f569a214a847a82c7bfd2687e6a23e2e1/68747470733a2f2f62616467652e667572792e696f2f6a732f6e6561742d7274632e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/982e8eac72d554f7e10fb8538008b41fa95cf68d7af4fe2e447a200eaa36be77/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f74616d6173737a6f6b652f6e6561742d7274632e737667"&gt;&lt;img src="https://camo.githubusercontent.com/982e8eac72d554f7e10fb8538008b41fa95cf68d7af4fe2e447a200eaa36be77/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f74616d6173737a6f6b652f6e6561742d7274632e737667" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;WebRTC wrapper with built-in signaling for React and Vue.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ko-fi.com/Z8Z7XSML" rel="nofollow noopener noreferrer"&gt;Support the project&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Roadmap&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;These are the planned updates of the project.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Choose device option&lt;/li&gt;
&lt;li&gt;File sharing example&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;1. Install the package
2. Import, configure, create an instance
3. Wire up signaling on client-side
4. Setup signaling on server-side
5. Using mediastream, datachannel
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;npm install neat-rtc
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Import&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;import NeatRTC from 'neat-rtc';
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Configure&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;const config = {
  devMode: true,
  videoIdLocal: 'localVideo',
  videoIdRemote: 'remoteVideo',
  connected: connected,
  mediaStreamConnected: mediaStreamConnected,
  mediaStreamRemoved: mediaStreamRemoved,
  mediaStreamRemoteRemoved: mediaStreamRemoteRemoved,
  datachannels: [
    {
      name: 'text',
      callbacks: {
        open: datachannelOpen,
        message: datachannelMessage,
        error: datachannelError,
        close: datachannelClose
      }
    }
  ]
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; you have to set up all of the callback functions above.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RTCPeerConnection configuration&lt;/strong&gt; (optional)&lt;/p&gt;
&lt;p&gt;Add the following properties to the above &lt;code&gt;config&lt;/code&gt; object.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;connectionConfig&lt;/code&gt;: set the STUN/TURN servers and other connection options, for more information check the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection#RTCConfiguration_dictionary" rel="nofollow noopener noreferrer"&gt;RTCConfiguration dictionary&lt;/a&gt;.
Default value:&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;{
  iceServers: [
    {&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tamasszoke/neat-rtc" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>webrtc</category>
      <category>react</category>
      <category>javascript</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
