<?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: Pavel Ershov</title>
    <description>The latest articles on DEV Community by Pavel Ershov (@paveler).</description>
    <link>https://dev.to/paveler</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%2F374626%2Fbda500fa-5faa-44b1-b5b4-5d6cff35bdf3.jpg</url>
      <title>DEV Community: Pavel Ershov</title>
      <link>https://dev.to/paveler</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paveler"/>
    <language>en</language>
    <item>
      <title>Directual no-code for Web3</title>
      <dc:creator>Pavel Ershov</dc:creator>
      <pubDate>Mon, 11 Jul 2022 17:19:56 +0000</pubDate>
      <link>https://dev.to/paveler/directual-no-code-for-web3-2gam</link>
      <guid>https://dev.to/paveler/directual-no-code-for-web3-2gam</guid>
      <description>&lt;p&gt;Hey folks!&lt;/p&gt;

&lt;p&gt;Seven years of work, and now this moment has come! We’ve &lt;a href="https://www.producthunt.com/posts/directual-for-web3"&gt;launched on Product Hunt&lt;/a&gt;! If you’re not familiar with our platform, here’s what Directual is all about&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Directual
&lt;/h2&gt;

&lt;p&gt;It’s a full-stack no-code platform, the first one out there for full development of web3-products. You can create any kind of app, and you don’t need programming experience to do that (although it’s certainly helpful to have). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zhXHG-wp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4z5el83jhmhewzass7nn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zhXHG-wp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4z5el83jhmhewzass7nn.jpg" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Directual has really strong backend capabilities: cloud database setup, API configuration, easy creation of backend logic, and integration. Frontend is easy to create with Directual just as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web3
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DpKluXE4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vg58qs8lran10h0nhb5o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DpKluXE4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vg58qs8lran10h0nhb5o.jpg" alt="Image description" width="880" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A crypto wallet? You can build that. A crypto exchange? Be our guest. Do we have documentation on how to do that? Yes. Did we build our billing section on our own platform? Also yes. Long story short, Directual has quite a number of web3.0 integrations in place, so it’s quite easy to build your own crypto products, including NFT-related.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wanna build some stuff?
&lt;/h2&gt;

&lt;p&gt;Try Directual yourself, it’s completely free to get started. Be sure to check out our documentation as well, and our templates! If you like it, we’ll really appreciate if you share what you think about it, here or on &lt;a href="https://www.producthunt.com/posts/directual-for-web3"&gt;our Product Hunt page&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Thank you for reading, update on how it went coming in soon.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>blockchain</category>
      <category>nocode</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Feedback for the new Low-code platform is needed</title>
      <dc:creator>Pavel Ershov</dc:creator>
      <pubDate>Thu, 02 Jul 2020 10:52:16 +0000</pubDate>
      <link>https://dev.to/paveler/feedback-for-the-new-low-code-platform-is-needed-ldf</link>
      <guid>https://dev.to/paveler/feedback-for-the-new-low-code-platform-is-needed-ldf</guid>
      <description>&lt;p&gt;Hi all!&lt;/p&gt;

&lt;p&gt;Recently we've went public with a low-code platform &lt;a href="https://directual.com"&gt;Directual&lt;/a&gt;. This is a cloud tool where you can setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database;&lt;/li&gt;
&lt;li&gt;Role-based access model and Authentication;&lt;/li&gt;
&lt;li&gt;REST-interface for your app (secure APIs);&lt;/li&gt;
&lt;li&gt;Backend logic, including scheduled and real-time scenarios.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Low-code market is skyrocketing today, but there is one significant issue—one can hardly go beyond MVP with low-code. So, we tried to create a tool which was suitable for building and running sophisticated apps, not only MVPs.&lt;/p&gt;

&lt;p&gt;We are looking for the product-market-fit at the moment. So, I would love to ask you to have a look and give me some feedback on the value proposition, product, on-boarding etc.&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>React + Low-code backend. The way to skip infrastructure messing up</title>
      <dc:creator>Pavel Ershov</dc:creator>
      <pubDate>Sat, 30 May 2020 13:45:50 +0000</pubDate>
      <link>https://dev.to/paveler/react-low-code-backend-the-way-to-skip-infrastructure-messing-up-25o1</link>
      <guid>https://dev.to/paveler/react-low-code-backend-the-way-to-skip-infrastructure-messing-up-25o1</guid>
      <description>&lt;p&gt;Hey all! Almost any web app needs both a frontend and a backend parts. React seems to be the best choice for building a user interface. It's clean, flexible and fast. From my experience, development often &lt;em&gt;gets stuck due to the backend&lt;/em&gt; part. It takes too long to setup a database, update API-methods, configure RBAC and mess up with an infrastructure. &lt;/p&gt;

&lt;p&gt;There is a way how to make it simpler. I'd like to show you the process of developing a React app with backend based on &lt;a href="https://directual.com" rel="noopener noreferrer"&gt;Directual&lt;/a&gt;—the visual backend constructor. First, I'll give the general approach overview. Then, you'll find the full live-demo of development (I've built this example app: &lt;a href="https://mymovielist.directual.app/" rel="noopener noreferrer"&gt;MyMovieList&lt;/a&gt; in 2h 53m). The video may also be considered as a tutorial for beginners.&lt;/p&gt;

&lt;h2&gt;
  
  
  General overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Ffa250115-523b-441d-ac08-8a33a4feb12e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Ffa250115-523b-441d-ac08-8a33a4feb12e.png" alt="React-Directual"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  User Interface
&lt;/h3&gt;

&lt;p&gt;Feel free to develop your UI as you like–with hooks, classes, etc. Having connected Directual backend you can use the following patterns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Directual&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;directual-api&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useAuth&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../auth&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// we will look at auth.js further in post&lt;/span&gt;
&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Directual&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiHost&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useAuth&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;dataStructure&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt; &lt;span class="c1"&gt;// todo: insert here Sysname of your data structure&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt; &lt;span class="c1"&gt;// todo: insert here Method name of your API-endpoint&lt;/span&gt;
&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="c1"&gt;// Auth context:&lt;/span&gt;
&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="c1"&gt;// returns user ID&lt;/span&gt;
&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessionID&lt;/span&gt; &lt;span class="c1"&gt;// returns user session ID&lt;/span&gt;
&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isAutorised&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// returns true if user is authorised&lt;/span&gt;
&lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;hasRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;role&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// returns true if user.role == 'role' (see user management further)&lt;/span&gt;
&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="c1"&gt;// GET request:&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;api&lt;/span&gt;
      &lt;span class="c1"&gt;// Name of Data structure (table) in the Database&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;structure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dataStructure&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="c1"&gt;// GET request + query params (sessionID)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;sessionID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessionID&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="c1"&gt;// other possible query params: page, pageSize, sort and any custom parameter for Filtering&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// handling response&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// handling errors&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;span class="c1"&gt;// POST-request:&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt; &lt;span class="c1"&gt;// Request payload&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;postData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;api&lt;/span&gt;
      &lt;span class="c1"&gt;// Name of Data structure (table) in the Database&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;structure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;dataStructure&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="c1"&gt;// POST request + payload + query params&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;sessionID&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessionID&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// handling response&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// handling errors&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;//...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Low-code cloud backend
&lt;/h3&gt;

&lt;p&gt;Let's figure out how we can setup database, backend logic and APIs on Directual. You can use the platform for free. There are limits on the load produced by an app in free plan (10k requests per month).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;br&gt;
Here it is—a UI for managing database. Folders and tables (data structures):&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Fa4437660-9a7b-42ad-be91-e9fc60a6ba59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Fa4437660-9a7b-42ad-be91-e9fc60a6ba59.png" alt="Directual database"&gt;&lt;/a&gt;&lt;br&gt;
This is the page for configuring a table (data structure):&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Ff87963cd-4f7e-4fb5-9331-a93c85eab627.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Ff87963cd-4f7e-4fb5-9331-a93c85eab627.png" alt="Directual database, Configuring fields"&gt;&lt;/a&gt;&lt;br&gt;
Also, there is a system structure – &lt;strong&gt;App users&lt;/strong&gt; (system name &lt;code&gt;WebUser&lt;/code&gt;). Its objects are users. These objects from &lt;code&gt;WebUser&lt;/code&gt; have the following properties: &lt;code&gt;id&lt;/code&gt; (username), &lt;code&gt;password&lt;/code&gt;(encrypted) and &lt;code&gt;role&lt;/code&gt;:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2F5c50ed33-016c-443f-bbfe-6d9b3acab0bc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2F5c50ed33-016c-443f-bbfe-6d9b3acab0bc.png" alt="App user"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API-builder&lt;/strong&gt;&lt;br&gt;
Go to section API, and here you can configure API-endpoint:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Ff1b3626d-3b60-4836-9394-5461adf0a3c9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Ff1b3626d-3b60-4836-9394-5461adf0a3c9.png" alt="API-endpoint"&gt;&lt;/a&gt;&lt;br&gt;
Setting up an API method we can add user-based security, filters and sorting. Also we can indicate which fields will be available for GET- and POST-requesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend logic (scenarios)&lt;/strong&gt;&lt;br&gt;
There are workflows (&lt;em&gt;Directual scenarios&lt;/em&gt;) for processing the data (both in real-time and in scheduled manner). Basic scenario steps are just actions under objects, so these steps are quite universal.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2F927fb359-d5ed-4fdb-b6be-ad8c9a8ba161.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2F927fb359-d5ed-4fdb-b6be-ad8c9a8ba161.png" alt="Directual scenario"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Directual React module
&lt;/h3&gt;

&lt;p&gt;There are two useful files from &lt;a href="https://github.com/directual/directual-react-boilerplate" rel="noopener noreferrer"&gt;Directual React Boilerplate&lt;/a&gt;:&lt;br&gt;
&lt;a href="https://github.com/directual/directual-react-boilerplate/blob/master/src/auth.js" rel="noopener noreferrer"&gt;auth.js&lt;/a&gt; provides methods: &lt;code&gt;.user&lt;/code&gt;, &lt;code&gt;.sessionID&lt;/code&gt;, &lt;code&gt;.isAutorised()&lt;/code&gt;, &lt;code&gt;.hasRole()&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://github.com/directual/directual-react-boilerplate/blob/master/src/setupProxy.js" rel="noopener noreferrer"&gt;setupProxy.js&lt;/a&gt; creates middleware proxy to &lt;code&gt;directual-api&lt;/code&gt;, for resolving the problem linked with CORS. We need to &lt;code&gt;install http-proxy-middleware&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Also you need to edit the &lt;code&gt;.env&lt;/code&gt; file for connecting with Directual app:&lt;br&gt;
&lt;code&gt;APP_ID=_YOUR_APP_ID_&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can find (or create) your App ID in API section:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Fba670c8d-e682-4ac6-b6b4-38ecc4301b0e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapi.alfa.directual.com%2FfileUploaded%2Fdirectual-site%2Fba670c8d-e682-4ac6-b6b4-38ecc4301b0e.png" alt="api-key"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Live-demo&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The idea of the example app
&lt;/h3&gt;

&lt;p&gt;I wanted my friends to be able to recommend me movies. So, the app solved that problem. There are 'watched' and 'to watch' movie lists and the form for submitting a recommendation (signing in is required). The result is here &lt;a href="https://mymovielist.directual.app/" rel="noopener noreferrer"&gt;MyMovieList&lt;/a&gt;, find its code &lt;a href="https://github.com/paveler/mymovielist" rel="noopener noreferrer"&gt;on GitHub&lt;/a&gt;. &lt;/p&gt;
&lt;h3&gt;
  
  
  We'll cover:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Bootstrapping React app based on Directual &lt;a href="https://github.com/directual/directual-react-boilerplate" rel="noopener noreferrer"&gt;boilerplate-code&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Using React hooks for handling state;&lt;/li&gt;
&lt;li&gt;Building authentication and private routing;&lt;/li&gt;
&lt;li&gt;Configuring database and required APIs in Directual;&lt;/li&gt;
&lt;li&gt;Getting/Posting data from/to the database;&lt;/li&gt;
&lt;li&gt;Connecting a third-party API for enriching data;&lt;/li&gt;
&lt;li&gt;Building and packing our product into Docker container.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've recorded the whole development process. It took 2 hours 53 minutes, without any fuzz. Have a look! I tried to compose it as a tutorial for beginners. I didn't cut anything. If you are an experienced frontend-dev, you may consider watching all the details a bit boring, so, use the timestamps on Youtube. :)&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/vVZD1AeQZFE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;If you, guys, like such a live-tutorial, I can compose more—this simple site may be be developed into movies-related social network with profiles, individual lists, likes, shares, etc. It will be a good exercise. I suppose, it'll take a couple of hours more.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>react</category>
      <category>webdev</category>
      <category>database</category>
    </item>
  </channel>
</rss>
