<?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: Gilbert</title>
    <description>The latest articles on DEV Community by Gilbert (@kirk).</description>
    <link>https://dev.to/kirk</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%2F348687%2F6bde1d4a-b701-4a5e-b89f-a00e3b163a02.jpg</url>
      <title>DEV Community: Gilbert</title>
      <link>https://dev.to/kirk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kirk"/>
    <language>en</language>
    <item>
      <title>why</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Tue, 22 Apr 2025 16:20:12 +0000</pubDate>
      <link>https://dev.to/kirk/why-599f</link>
      <guid>https://dev.to/kirk/why-599f</guid>
      <description></description>
      <category>discuss</category>
    </item>
    <item>
      <title>Why I Decided to Offer a Free Version of My GreenOps Solution</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Tue, 22 Apr 2025 13:58:46 +0000</pubDate>
      <link>https://dev.to/oxygenit/why-i-decided-to-offer-a-free-version-of-my-greenops-solution-561</link>
      <guid>https://dev.to/oxygenit/why-i-decided-to-offer-a-free-version-of-my-greenops-solution-561</guid>
      <description>&lt;p&gt;Sustainability is the next challenge for IT teams: understand, anticipate and act on carbon footprint. But these KPIs are far from their day to day goals to get systems on-line and available for customers which matters for business.&lt;/p&gt;

&lt;p&gt;When we first launched OxygenIT, our focus was crystal clear: build a GreenOps solution tailored for large enterprises. We knew these companies could benefit significantly from optimizing their cloud and datacenter usage—not just from a cost standpoint, but from a sustainability one as well.&lt;/p&gt;

&lt;p&gt;But as we dug deeper into the day-to-day reality of IT teams, we realized something important: FinOps just wasn’t inspiring most people. Sure, saving costs is important for the business, but when your average engineer, DevOps contractor, or platform team member hears “save money for the boss,” it doesn’t exactly get them fired up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Carbon, on the other hand, does
&lt;/h3&gt;

&lt;p&gt;Reducing emissions is a goal that resonates across every level of an organization. It speaks to the shared values of our time—especially for the younger generation entering the workforce, who are not only asking for change, but expecting it. And they want to play a role.&lt;br&gt;
That’s when we had our moment of clarity.&lt;/p&gt;

&lt;p&gt;We realized that to truly drive behavioral change inside organizations, we needed to make carbon the new currency of IT performance. And that meant we had to go beyond the usual surface-level metrics.&lt;/p&gt;

&lt;p&gt;We built OxygenIT to provide granular, real-time measurements of carbon impact across a wide spectrum of services—from traditional compute and storage to cloud-native architectures like containers, serverless functions, DbaaS, and beyond. No more static reports. No more abstract carbon calculators based on billing data. Real-time. Actionable. Comprehensive. And then came the market reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  Two painful truths became clear:
&lt;/h3&gt;

&lt;p&gt;The default reaction from IT leaders was: “Oh, another carbon calculator. You probably just pull in billing data or use some public reports from cloud providers.”&lt;/p&gt;

&lt;p&gt;Many companies had already “checked the GreenOps box”—a small consulting gig here, an open-source script from 2020 there—but results were marginal, visibility was low, and business impact was unclear.&lt;/p&gt;

&lt;p&gt;That’s when we realized the real challenge wasn’t technical. It was awareness. CIOs and CTOs knew they had to do something, but few truly understood the business case behind GreenOps. Fewer still had seen solutions capable of delivering real-time, actionable insights relevant to all tiers of their organization.&lt;/p&gt;

&lt;h3&gt;
  
  
  We needed to change that, that’s why I decided to go free.
&lt;/h3&gt;

&lt;p&gt;By offering a free version of OxygenIT, anyone—from an IT sustainability lead in a Fortune 500, to a platform engineer in a fast-scaling startup, or even an independent techie passionate about climate—can get started in minutes. Connect to your cloud tenant of choice. See the data. Explore the impact. Reframe the conversation.&lt;/p&gt;

&lt;p&gt;I’m convinced that radical transparency and accessibility are what this space needs. Especially today, when we’re all questioning our digital sovereignty and dependence on US cloud providers. GreenOps is not just about emissions—it’s about control, intelligence, and relevance.&lt;/p&gt;

&lt;p&gt;So yes, we’re giving it away. Not because we’re naïve. But because we believe that once you see what’s possible, you’ll want more. And that’s when the real journey starts.&lt;/p&gt;

&lt;p&gt;We are making GreenOps a leverage for IT efficiency and value.&lt;/p&gt;

&lt;h3&gt;
  
  
  Start free
&lt;/h3&gt;

&lt;p&gt;Want to start? It’s free&lt;/p&gt;

&lt;p&gt;If you’re curious to try it out, the free version of OxygenIT is live and ready. No sales call, no credit card. Just click, connect, and explore. Have a look to &lt;a href="https://console.oxygenit.io/auth/start-free" rel="noopener noreferrer"&gt;https://console.oxygenit.io/auth/start-free&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>greenops</category>
      <category>greenit</category>
      <category>finops</category>
      <category>devops</category>
    </item>
    <item>
      <title>Develop your Vue.js app faster with this MEVN template</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Thu, 17 Jun 2021 13:12:45 +0000</pubDate>
      <link>https://dev.to/oxygenit/develop-your-vue-js-app-faster-with-this-mevn-template-52jd</link>
      <guid>https://dev.to/oxygenit/develop-your-vue-js-app-faster-with-this-mevn-template-52jd</guid>
      <description>&lt;p&gt;Coding in Full Stack seems cool, but that requires a lot. For instance, just setting up tools, frameworks, and database tiers already takes you hours. &lt;/p&gt;

&lt;p&gt;We know it’s painful to wait while you’re excited with your new ideas 😉 That is why we came up with &lt;a href="https://dev.to/scaledynamics/no-need-to-handle-express-js-with-this-mern-stack-project-template-1bm6"&gt;MERN&lt;/a&gt; and &lt;a href="https://dev.to/scaledynamics/build-your-mean-project-with-automatic-express-js-management-3a79"&gt;MEAN&lt;/a&gt; templates to help you start your projects in no time, with a less and simple configuration. &lt;/p&gt;

&lt;p&gt;And today, regarding some of your request, we would love to bring you another template for the MEVN stack 😉 Quite similar to the other two templates, you can shift your focus on MongoDB, Vue.js, and Node.js only as Express.js is managed automatically by magic 🤯&lt;/p&gt;

&lt;p&gt;Clone it right here  👉 &lt;a href="https://github.com/ScaleDynamics/vue-mongodb-template" rel="noopener noreferrer"&gt;MEVN ready-to-deploy template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s get to know how the template can help you!&lt;/p&gt;

&lt;h2&gt;
  
  
  A faster and effortless way to code in MEVN 🤯
&lt;/h2&gt;

&lt;p&gt;Basically, how this MEVN template works is exactly similar to the MERN and MEAN templates that we have just published recently. However, for anyone who doesn’t have any idea about it yet, here’re some key points for you. &lt;/p&gt;

&lt;p&gt;This MEVN template is configured for the ScaleDynamics Cloud Platform, which provides not just  everything you need to code in Full Stack but even more:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One command to develop with live-reload&lt;/li&gt;
&lt;li&gt;Another one to deploy, make your app/service available on a URL&lt;/li&gt;
&lt;li&gt;No Express.js layers management, the platform takes care of them automatically &lt;/li&gt;
&lt;li&gt;No HTTP/JSON coding, as our compiler automatically generates its stubs required to call a Node.js function using JS objects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You will need a ScaleDynamics platform account to deploy your project. Take 1 minute and create your FREE  Community account &lt;br&gt;
&lt;a href="https://console.scaledynamics.com/auth/signup/" rel="noopener noreferrer"&gt;right here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Get the template ready in no time 🚀
&lt;/h2&gt;

&lt;p&gt;clone the template here:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;git&lt;/span&gt; clone https://github.com/ScaleDynamics/vue-mongodb-template.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find 2 principal parts in this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The frontend, a &lt;code&gt;vue-app&lt;/code&gt; web template created with &lt;code&gt;vue-cli&lt;/code&gt;. To update it, open the &lt;code&gt;src&lt;/code&gt; folder where you can add, modify or delete components.&lt;/li&gt;
&lt;li&gt;The backend contains a node module and a MongoDB module. You can update the frontend/backend as you need to build your own app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To start developing with the template, go in &lt;code&gt;vue-app&lt;/code&gt; folder and run those commands below:&lt;/p&gt;

&lt;h3&gt;
  
  
  Install easily
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To log in to the ScaleDynamics Platform
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npx&lt;/span&gt; warp login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Develop both front &amp;amp; backend with live-reload
&lt;/h3&gt;

&lt;p&gt;Use the command below to enter a live-reload development session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run serve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can always update the frontend or the backend code, it will be rebuilt at each modification.&lt;/p&gt;

&lt;p&gt;Please note that you’ll need to select an existing project or create a new one as you want before running this command. On the ScaleDynamics platform, a project identifies an application or a microservice. For more details on projects, see the &lt;a href="https://docs.scaledynamics.com" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy dynamically
&lt;/h3&gt;

&lt;p&gt;Now, to deploy, you will need to compile and minimize your project for production:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then use the simple deploy command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will have to select or create an environment that identifies the cloud execution environment to run your app. You can create as many as you want, each environment has its own URL. &lt;br&gt;
For more details, check out the &lt;a href="https://docs.scaledynamics.com" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Configure MongoDB driver
&lt;/h3&gt;

&lt;p&gt;In terms of MongoDB, you already have a template module in the &lt;code&gt;src/mongodb.js&lt;/code&gt;. Replace the URI constant to use your own MongoDB instance:&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;URI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  You’re all set, start your MEVN project now!
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Functions in ScaleDynamics Platform
&lt;/h3&gt;

&lt;p&gt;With the ScaleDynamics Platform, new functions can be called by the frontend. Add them in &lt;code&gt;index.js&lt;/code&gt; or into another module and export them. The platform manages the Express.js layers automatically.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="o"&gt;=&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;// your code here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To access your new functions on the frontend side, adapt this code:&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Backend&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;./.backend/hello.js&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;}&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;Backend&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Other info
&lt;/h3&gt;

&lt;p&gt;And that’s it! Hope you find it helpful and if you need more information, check out these documentations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.scaledynamics.com/docs/frameworks" rel="noopener noreferrer"&gt;ScaleDynamics Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/docs" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.mongodb.com/guides/" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are always here if you have any questions or feedback! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/scaledynamics" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/scaledynamics.tech" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/scaledynamicstech/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cheers!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Build your MEAN project with automatic Express.js management</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Fri, 11 Jun 2021 12:20:34 +0000</pubDate>
      <link>https://dev.to/oxygenit/build-your-mean-project-with-automatic-express-js-management-3a79</link>
      <guid>https://dev.to/oxygenit/build-your-mean-project-with-automatic-express-js-management-3a79</guid>
      <description>&lt;p&gt;Hi there, some of you guys might already know that we built a &lt;a href="https://dev.to/scaledynamics/no-need-to-handle-express-js-with-this-mern-stack-project-template-1bm6"&gt;MERN stack template&lt;/a&gt; earlier that helps you skip Express.js.&lt;/p&gt;

&lt;p&gt;Regarding some of your requests, we would like to bring you a new open-source template. And this time, it is for MEAN stack 😉&lt;/p&gt;

&lt;p&gt;And you know what, you can still develop both front &amp;amp; backend with live-reload and deploy with a simple command-line while the Express.js part is managed 100% automatically, isn’t that great? 🤯&lt;/p&gt;

&lt;p&gt;Clone it right here 👉 &lt;a href="https://github.com/ScaleDynamics/angular-mongodb-template" rel="noopener noreferrer"&gt;MEAN ready-to-deploy template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s get to know how the template can help you!&lt;/p&gt;

&lt;h2&gt;
  
  
  A MEAN stack but you only code MAN 🤯
&lt;/h2&gt;

&lt;p&gt;Besides the MERN stack that stands for MongoDB, Express, React and Node.js, we still have the MEAN stack for people who use Angular instead of React. It is also considered as a quite popular one for Full Stack JavaScript developers.&lt;/p&gt;

&lt;p&gt;Quite similar to the MERN template, this MEAN template is also configured specifically for the ScaleDynamics cloud platform on MIT license. It offers all you need to start developing your MEAN based apps/services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One command to develop with live-reload&lt;/li&gt;
&lt;li&gt;Another one to deploy, make your app/service available on a URL&lt;/li&gt;
&lt;li&gt;No Express.js layers management, the platform takes care of them automatically &lt;/li&gt;
&lt;li&gt;No HTTP/JSON coding as our compiler automatically generates its stubs required to call a Node.js function using JS objects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When it comes to deployment, you will need a ScaleDynamics account, you can create your FREE  Community account &lt;a href="https://console.scaledynamics.com/auth/signup/" rel="noopener noreferrer"&gt;right here&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use the template
&lt;/h2&gt;

&lt;p&gt;First of all, clone the template by:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;git&lt;/span&gt; clone https://github.com/ScaleDynamics/angular-mongodb-template.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then you’ll have both frontend and backend template ready:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the frontend, you’ll have a &lt;code&gt;angular-app&lt;/code&gt; web template app created with &lt;code&gt;angular-cli&lt;/code&gt;. To update it, open the &lt;code&gt;src&lt;/code&gt; folder where you can add, modify or delete components.&lt;/li&gt;
&lt;li&gt;The backend contains a node module and a MongoDB module. You can update the frontend/backend as you need to build your own app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To start developing with the template, go in &lt;code&gt;frontend/angular-app&lt;/code&gt; folder and run those commands below:&lt;/p&gt;

&lt;h3&gt;
  
  
  Install the project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Log in to the ScaleDynamics Platform
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npx&lt;/span&gt; warp login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Develop with live-reload
&lt;/h3&gt;

&lt;p&gt;Start a live-reload development session by using this command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can always update the frontend or the backend code, it will be rebuilt at each modification.&lt;/p&gt;

&lt;p&gt;Please note that you’ll need to select an existing project or create a new one as you want before running this command. On the ScaleDynamics platform, a project identifies an application or a microservice. For more details on projects, see the &lt;a href="https://docs.scaledynamics.com" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy with ScaleDynamics
&lt;/h3&gt;

&lt;p&gt;When it comes to deployment, you’ll need to compile and minimize your project for production by using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the deploy command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, beside selecting a project, you’ll also have to select or create an environment which identifies the cloud execution environment to run your app. You can create as many as you want like ‘staging’, ‘demo’, ‘prod’... Each environment has its own URL. &lt;/p&gt;

&lt;p&gt;For more details on projects or environments, see the &lt;a href="https://docs.scaledynamics.com" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure MongoDB driver
&lt;/h3&gt;

&lt;p&gt;In &lt;code&gt;src/mongodb.js&lt;/code&gt;. There is a template module that you can replace its &lt;code&gt;URI&lt;/code&gt; constant with your own.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;URI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  You’re all set!
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating new functions
&lt;/h3&gt;

&lt;p&gt;With ScaleDynamics Platform, new functions can be called by the frontend. Add them in &lt;code&gt;index.js&lt;/code&gt; or into another module and export it. The platform manages the Express.js layers automatically.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="o"&gt;=&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;// your code here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To access your new functions on the frontend side, adapt this code:&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Backend&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;./.backend/hello.js&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;}&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;Backend&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Other info
&lt;/h3&gt;

&lt;p&gt;And that’s it! If you need more information, check out these documentations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.scaledynamics.com/docs/frameworks" rel="noopener noreferrer"&gt;ScaleDynamics Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/docs" rel="noopener noreferrer"&gt;Angular&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.mongodb.com/guides/" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We hope you liked it, please let us know if you have any questions or feedback! &lt;br&gt;
Stay tuned for the Vue.js template coming up! you can subscribe, or follow us on &lt;a href="https://twitter.com/scaledynamics" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.facebook.com/scaledynamics.tech" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt; and even &lt;a href="https://www.instagram.com/scaledynamicstech/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; for more updates!&lt;br&gt;
Cheers!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>MERN ready-to-deploy template, to skip Express.js</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Tue, 11 May 2021 15:28:26 +0000</pubDate>
      <link>https://dev.to/oxygenit/no-need-to-handle-express-js-with-this-mern-stack-project-template-1bm6</link>
      <guid>https://dev.to/oxygenit/no-need-to-handle-express-js-with-this-mern-stack-project-template-1bm6</guid>
      <description>&lt;p&gt;At ScaleDynamics we have one recurrent passion: to make web developers’ life easier 🙈.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F398f8mdg1jfb9tviho7k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F398f8mdg1jfb9tviho7k.gif" alt="bam" width="320" height="232"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;BAM! And we strike again! We built a fully open source MERN template ready to use for our platform. &lt;/p&gt;

&lt;p&gt;One command to develop with frontend and backend live reload... &lt;br&gt;
One command to deploy on the cloud...&lt;/p&gt;

&lt;p&gt;Let’s get started! &lt;/p&gt;

&lt;p&gt;It is located here (&lt;a href="https://github.com/ScaleDynamics/react-mongodb-template" rel="noopener noreferrer"&gt;https://github.com/ScaleDynamics/react-mongodb-template&lt;/a&gt;) - use it as you wish and start coding your projects with it! We hope you’ll find it helpful! 🤗&lt;/p&gt;
&lt;h2&gt;
  
  
  A MERN template with a fully managed Express
&lt;/h2&gt;

&lt;p&gt;Quick reminder — MERN stands for MongoDB, Express, React and Node.js, and is one of the several variations of the MEAN stack (MongoDB, Express, Angular, Node.js). It is one of the standard “Full Stack” stack for JavaScript developers.&lt;br&gt;
This template is configured for the ScaleDynamics web platform. It is on MIT license and ready to be used to build your own MERN based apps/services!&lt;br&gt;
Everything is preconfigured: we provide one command to develop with live reload (frontend and backend) and one to deploy to make it live on a URL.&lt;br&gt;
One particularity of our platform is that you don’t have to manage the Express.js layers, the platform manages them for you automatically, so you can focus only on the MongoDB/Node/React coding.&lt;br&gt;
You can stop coding HTTP/JSON as it is now automatic, thanks to our compiler. It generates the HTTP/JSON stubs required to call a Node.js function using JS objects.&lt;br&gt;
Please note that you need a ScaleDynamics platform account only to deploy your project, you can create your FREE  Community account &lt;a href="https://console.scaledynamics.com/auth/signup/" rel="noopener noreferrer"&gt;right here&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;
  
  
  Diving into the template
&lt;/h2&gt;

&lt;p&gt;To start using the MERN template you can clone it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;git&lt;/span&gt; clone https://github.com/ScaleDynamics/react-mongodb-template.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This project is divided in two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the frontend, where you can find a &lt;code&gt;react-app&lt;/code&gt; web template app (located in the &lt;code&gt;frontend/react-app&lt;/code&gt; folder). It has been created with &lt;code&gt;create-react-app&lt;/code&gt;. To update it, open the &lt;code&gt;src&lt;/code&gt; folder where you can add, modify or delete components.&lt;/li&gt;
&lt;li&gt;the backend contains a &lt;code&gt;hello&lt;/code&gt; node module and a MongoDB module. You can update the frontend/backend as you need to build your own app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To start developing with the template, go in &lt;code&gt;frontend/react-app&lt;/code&gt; folder and run those commands:&lt;/p&gt;

&lt;h3&gt;
  
  
  To set up the project
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  To log onto the ScaleDynamics Platform
&lt;/h3&gt;

&lt;p&gt;Then use your ScaleDynamics account credential to log onto the platform (feel free to create a free community account &lt;a href="https://console.scaledynamics.com/auth/signup/" rel="noopener noreferrer"&gt;here&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npx&lt;/span&gt; warp login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Develop with live-reload
&lt;/h3&gt;

&lt;p&gt;To enter a live-reload development session, use the command below. Feel free to update the frontend or the backend code, it will be rebuilt at each change.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please note that when running this command, you have to select a project. On the ScaleDynamics platform, a project identifies an application or a microservice. Select an existing project or create a new one. &lt;br&gt;
For more details on projects, see the &lt;a href="https://docs.scaledynamics.com" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Deploying with ScaleDynamics
&lt;/h3&gt;

&lt;p&gt;To deploy your project you’ll have first to compile and minify your project for production.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then use the deploy command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;npm&lt;/span&gt; run deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that when running this command, you have to select a project and an environment. On the ScaleDynamics platform a project identifies an application or a microservice. &lt;/p&gt;

&lt;p&gt;Select an existing project or create a new one. An environment identifies the cloud execution environment to run your app. You can create as many as you want like ‘staging’, ‘demo’, ‘prod’... Each environment has its own URL. &lt;/p&gt;

&lt;p&gt;To deploy, select an existing environment or create a new one. For more details on projects or environments, see the &lt;a href="https://docs.scaledynamics.com" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure MongoDB driver
&lt;/h3&gt;

&lt;p&gt;Regarding MongoDB, we provide a template module  in the &lt;code&gt;src/mongodb.js&lt;/code&gt;. To use your own MongoDB instance, replace the &lt;code&gt;URI&lt;/code&gt; constant by your own.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;URI&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  You’re all set!
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating new functions
&lt;/h3&gt;

&lt;p&gt;You can create new functions that can be called by the frontend. Add them in &lt;code&gt;index.js&lt;/code&gt; or into another module and export it. The platform manages the Express.js layers automatically.&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="o"&gt;=&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;// your code here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To access your new functions on the frontend side, feel free to adapt this code:&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="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Backend&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;./.backend/hello.js&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;myFunction&lt;/span&gt; &lt;span class="p"&gt;}&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;Backend&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Other info
&lt;/h3&gt;

&lt;p&gt;And that’s it! If you need more information, you can refer to the documentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.scaledynamics.com/docs/frameworks" rel="noopener noreferrer"&gt;ScaleDynamics Platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/docs/getting-started.html" rel="noopener noreferrer"&gt;React&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.mongodb.com/guides/" rel="noopener noreferrer"&gt;MongoDB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We hope you liked it, please let us know if you have any questions or feedback! &lt;br&gt;
We have more template variations coming up for React, so you can subscribe, or follow us on &lt;a href="https://twitter.com/scaledynamics" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.facebook.com/scaledynamics.tech" rel="noopener noreferrer"&gt;Facebook&lt;/a&gt; and even &lt;a href="https://www.instagram.com/scaledynamicstech/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt; if you wish!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Discover the 1st Full stack playground, in early access</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Fri, 22 Jan 2021 14:00:34 +0000</pubDate>
      <link>https://dev.to/oxygenit/discover-the-1st-full-stack-playground-in-early-access-3k60</link>
      <guid>https://dev.to/oxygenit/discover-the-1st-full-stack-playground-in-early-access-3k60</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;For those that are following me, they already know that.&lt;/p&gt;

&lt;p&gt;This is the first playground that allows coding directly in the browser for both front-end JavaScript and back-end Node.js. It renders a preview to see the results in real time. Full Stack developers can show their work, build test cases, learn and find inspiration. Teams can build their snippet database and share knowledge or best practices.&lt;/p&gt;

&lt;p&gt;You can test right away &lt;a href="https://playground.scaledynamics.cloud" rel="noopener noreferrer"&gt;JavaScript Full Stack Playground&lt;/a&gt; and let me know what you think about it.&lt;/p&gt;

&lt;p&gt;In this post, I would like to announce that the Full Stack playground is now accessible in early access on invitation for developers who want to contribute to our snippets public database (feel free to &lt;a href="https://scaledynamics.com/rqt-early-access" rel="noopener noreferrer"&gt;request for an invitation&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Designed for the web developers &amp;amp; Node.js community!
&lt;/h2&gt;

&lt;p&gt;When I designed the playground I had in mind to provide a new tool for web developers, Node.js and JavaScript developers. This is why the playground is dedicated to HTML, CSS, JavaScript and a Node.js backend. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwthe32rhfeop1ur53mpk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwthe32rhfeop1ur53mpk.gif" alt="Alt Text" width="600" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For developers, it’s a perfect tool to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn, discover, or become a Full Stack - By default, all snippets are public. Access to the core code: MongoDB queries, proxy, authentication, REST APIs... Explore all the backend possibilities and discover new things ;&lt;/li&gt;
&lt;li&gt;Share your work - Whether you want to brag with your last piece of code, or show a prototype to your boss, just share your snippet with the editor or deploy on a custom domain to make it live to the world ;&lt;/li&gt;
&lt;li&gt;Prototype and test - Try and fail with your code, for both front and back ends. Test an isolated piece of your project code. Prototype new ideas quickly without installing anything ; &lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Let me describe the current features of the playground&lt;/p&gt;

&lt;h3&gt;
  
  
  For the editor
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Edition of the frontend HTML, CSS and JavaScript files&lt;/li&gt;
&lt;li&gt;Edition of a Node.js module with npm module dependencies
-Create and tag your own snippets&lt;/li&gt;
&lt;li&gt;Edition of a Readme markdown file to describe snippet details&lt;/li&gt;
&lt;li&gt;Change editor layout as you want&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For the snippet management
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create new snippet, Save, Fork or Delete a snippet&lt;/li&gt;
&lt;li&gt;Access Snippet list with basic search&lt;/li&gt;
&lt;li&gt;Share the snippet or search options using the URL&lt;/li&gt;
&lt;li&gt;Create public or private snippets&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  For the Preview
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Instant run of the Node.js module on a public cloud&lt;/li&gt;
&lt;li&gt;Preview of the Frontend and Backend in real-time&lt;/li&gt;
&lt;li&gt;Access to Frontend and Node.js backend console logs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also plan to add new features soon, such as a ‘Deploy’ button to make live the snippet on a URL, adding Custom domain support. Also, I’ll add extend the snippet sharing feature. For now, a private snippet can only be viewed by its owner. Having a way to share a private snippet with several users seems to be a cool upgrade.&lt;/p&gt;

&lt;h2&gt;
  
  
  Help me build the community
&lt;/h2&gt;

&lt;p&gt;I want the Full Stack playground to remain FREE for public code snippets. &lt;br&gt;
I need your help to communicate around it to get more visitors, so I can find some advertisement sponsoring to maintain a free version for all. You can help us by sharing the playground in your social networks or friends.&lt;br&gt;
Also, feel free to provide me feedback, so I can improve it!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building the “React Hover cards with a REST API” snippet on the JavaScript Full Stack Playground</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Wed, 16 Dec 2020 15:24:08 +0000</pubDate>
      <link>https://dev.to/oxygenit/building-the-react-hover-cards-with-a-rest-api-snippet-on-the-javascript-full-stack-playground-1kfi</link>
      <guid>https://dev.to/oxygenit/building-the-react-hover-cards-with-a-rest-api-snippet-on-the-javascript-full-stack-playground-1kfi</guid>
      <description>&lt;p&gt;&lt;em&gt;Update 22th of January 2021:&lt;/em&gt;&lt;br&gt;
The Full Stack Playground is now available in &lt;a href="https://playground.scaledynamics.cloud" rel="noopener noreferrer"&gt;early access&lt;/a&gt;! &lt;br&gt;
You can read the detailed features on my &lt;a href="https://dev.to/scaledynamics/discover-the-1st-full-stack-playground-in-early-access-3k60"&gt;last article&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;For those that are following me, they already know that &lt;a href="https://dev.to/scaledynamics/how-i-created-the-1st-full-stack-playground-ehf"&gt;I built the 1st JavaScript Full Stack Playground&lt;/a&gt;. &lt;br&gt;
In this new post, I wanted to share some details on how I built the snippet named “React Hover cards with a REST API” that you can access on the playground &lt;a href="https://playground.scaledynamics.cloud/?snippet=2bf46217-a2d7-47da-aba0-af67f57836ff" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;br&gt;
I will show you how to fetch some data using a REST API, with a “proxy” that sends back to the front end only data required to render the page.&lt;br&gt;
Tag along if you’re interested! &lt;/p&gt;
&lt;h2&gt;
  
  
  About the snippet
&lt;/h2&gt;

&lt;p&gt;The snippet named &lt;a href="https://playground.scaledynamics.cloud/?snippet=2bf46217-a2d7-47da-aba0-af67f57836ff" rel="noopener noreferrer"&gt;React Hover cards with a REST API&lt;/a&gt; shows user cards with a hover effect. It is based on a user database coming from a REST API used on the backend, in this case &lt;a href="http://jsonplaceholder.typicode.com/users" rel="noopener noreferrer"&gt;jsonplaceholder.typicode.com/users&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp20zf6b8thlgbo7u7abc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fp20zf6b8thlgbo7u7abc.gif" alt="Alt Text" width="600" height="328"&gt;&lt;/a&gt;&lt;br&gt;
This API returns a lot of data about every user, but obviously we don’t need them all, and we want to filter the results to send only the data required to render the page. This is generally called a proxy.&lt;/p&gt;
&lt;h2&gt;
  
  
  Let’s start coding!
&lt;/h2&gt;

&lt;p&gt;Our proxy back end defines a &lt;code&gt;fetchData&lt;/code&gt; function that will fetch the REST API call (I’m using &lt;a href="https://github.com/axios/axios" rel="noopener noreferrer"&gt;Axios&lt;/a&gt; in this case). It will then filter the data using a &lt;code&gt;filter&lt;/code&gt; function, to send the selected information to the front end.&lt;br&gt;
So here’s the back end code:&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fetchData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://jsonplaceholder.typicode.com/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let’s dig in the &lt;code&gt;filter&lt;/code&gt; function. The API returns these data for each user (you can use a console.log right after the axios call on the backend side to dump them if you want).&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="p"&gt;{&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Leanne Graham&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;username&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bret&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sincere@april.biz&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;address&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;street&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Kulas Light&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;suite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Apt. 556&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;city&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Gwenborough&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;zipcode&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;92998-3874&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;geo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
           &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lat&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;-37.3159&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lng&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;81.1496&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
       &lt;span class="p"&gt;}&lt;/span&gt;
   &lt;span class="p"&gt;},&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;phone&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1-770-736-8031 x56442&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;website&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hildegard.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Romaguera-Crona&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;catchPhrase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Multi-layered client-server neural-net&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;harness real-time e-markets&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the front end side, only these ones are required:&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="p"&gt;{&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Leanne Graham&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;username&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Bret&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sincere@april.biz&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;phone&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1-770-736-8031 x56442&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;website&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hildegard.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Romaguera-Crona&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So, let’s do a filter function to remove unused fields!&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="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;address&lt;/span&gt;
       &lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;catchPhrase&lt;/span&gt;
       &lt;span class="k"&gt;delete&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;company&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bs&lt;/span&gt;
   &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;exports&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fetchData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async &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="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://jsonplaceholder.typicode.com/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here you go, you just created a first proxy back end 👏!&lt;br&gt;
At last, we’re now ready to call the back end from the front end. To get the back end, call it and enter &lt;code&gt;react&lt;/code&gt; to render the user cards:&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="c1"&gt;// Get the backend&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;fetchData&lt;/span&gt; &lt;span class="p"&gt;}&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;Warp&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;// Call it then render hover cards&lt;/span&gt;
&lt;span class="nf"&gt;fetchData&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;data&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="nx"&gt;mockData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;
   &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;appNode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feel free to adapt the code to your needs. Thanks! 🤗&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How I created the 1st Full Stack playground - now in early access</title>
      <dc:creator>Gilbert</dc:creator>
      <pubDate>Fri, 11 Dec 2020 13:07:37 +0000</pubDate>
      <link>https://dev.to/oxygenit/how-i-created-the-1st-full-stack-playground-ehf</link>
      <guid>https://dev.to/oxygenit/how-i-created-the-1st-full-stack-playground-ehf</guid>
      <description>&lt;p&gt;&lt;em&gt;Update 22th of January 2021:&lt;/em&gt;&lt;br&gt;
The Full Stack Playground is now available in &lt;a href="https://playground.scaledynamics.cloud" rel="noopener noreferrer"&gt;early access&lt;/a&gt;! &lt;br&gt;
You can read the detailed features on my &lt;a href="https://dev.to/scaledynamics/discover-the-1st-full-stack-playground-in-early-access-3k60"&gt;last article&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;My name is Gilbert, I’m an engineer for +30 years (and CEO for +10 years). I designed a technology called WarpJS to integrate JavaScript Front end &amp;amp; Back end, and I wanted people to be able to try it without installing anything… so I developed an online JavaScript editor with WarpJS, and I ended up creating the first real time JavaScript Full Stack playground! &lt;/p&gt;

&lt;p&gt;This is the story of its creation. Hope you’ll find it interesting and inspiring. &lt;br&gt;
You can test right away the live demo of the &lt;a href="https://playground.scaledynamics.cloud" rel="noopener noreferrer"&gt;JavaScript Full Stack Playground&lt;/a&gt; and let me know what you think about it. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrl5mbvzw6s3gox6wst6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzrl5mbvzw6s3gox6wst6.gif" alt="playground-modify-backend-v2.gif" width="600" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Existing in-browser code sandbox: front end only!
&lt;/h2&gt;

&lt;p&gt;When creating a website, you generally have to code a front end &amp;amp; a back end connected and working with one other. &lt;/p&gt;

&lt;p&gt;For the front end, I often used developers sandbox to get code snippets that I adapted to the UI of the website. It’s really cool and it makes coding so much easier. As the web dev community is so rich, you basically can find anything you’re looking for! &lt;br&gt;
Though, for the back end, it’s really another story! Blog posts articles, getting started guides, GitHub projects… is your new credo 😨. &lt;/p&gt;

&lt;p&gt;And that’s only to select the right back end stack for your project! That’s why I thought it would be so much more efficient to have a back end playground. It would show you examples and code snippets to get to throw a quick prototype. &lt;br&gt;
I could have created a back end only playground, but I thought it would not be as effective. Also, my team and I created a technology called WarpJS. It integrates JavaScript Front and Back ends, so I wanted developers to be able to test it without having to install anything. That’s why I decided to build a front end AND back end playground, to code them at the same time, and to see the results in real time. &lt;/p&gt;

&lt;p&gt;So let’s get started. &lt;/p&gt;

&lt;h2&gt;
  
  
  Design
&lt;/h2&gt;

&lt;p&gt;I’ve chosen to focus only on web development languages: HTML, CSS, JavaScript for the front end, and Node.js for the back end. &lt;/p&gt;

&lt;p&gt;Here’s what we get: the development environment is composed of the front end, back end editor panels, sitting side-by-side to code faster. I’ve also added a preview window on the right side to see the rendered page in real time. &lt;/p&gt;

&lt;p&gt;On the left side, I wanted a code snippet search area, so developers can search in the code snippet database. I really wanted everything to be in a single page, so developers can create new snippets, and explore available ones quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnp3o2kprwxuoh5kdfbov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnp3o2kprwxuoh5kdfbov.png" alt="playground-design.png" width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made every window adjustable, so you can customize your experience as you wish: resize any panel, allow full screen view… It’s handy to focus on some codes, or to make sure web components are responsive… &lt;/p&gt;

&lt;h2&gt;
  
  
  A playground with a unique recipe
&lt;/h2&gt;

&lt;p&gt;There’s a catch, right? How can we write a back end and use it in the front end without creating endpoints, routing for APIs and HTTP requests? The secret recipe is the technology I mentioned above, WarpJS, which I wanted people to be able to test really easily. It automatically transforms an exported function of a Node.js module into an HTTP server API. On the client side, you no longer need to use HTTP to call the back end module, it just basically calls its functions.&lt;/p&gt;

&lt;p&gt;So this means that, in the back end, you just need to create functions and to export them. In the front end, you just call it. &lt;br&gt;
As you avoid writing HTTP layers, this playground offers you more time to only focus on the core logic of the snippet. It enables any JavaScript developer, even junior one, to use it easily! You no longer need to be an HTTP expert to work as a Full Stack 😬! Icing on the cake, the Playground is connected with the ScaleDynamics Virtual Cloud, which means it also takes care of deployment processes: you can deploy and run on any cloud. &lt;/p&gt;

&lt;h2&gt;
  
  
  Building
&lt;/h2&gt;

&lt;p&gt;To lay the first stone, I chose &lt;a href="https://golden-layout.com/" rel="noopener noreferrer"&gt;GoldenLayout&lt;/a&gt; as window layout management. For the editors’ views, I selected the &lt;a href="https://microsoft.github.io/monaco-editor/" rel="noopener noreferrer"&gt;Monaco code editor&lt;/a&gt; that powers Visual Studio Code. It takes care of error detection, auto identification, code completion… &lt;/p&gt;

&lt;p&gt;The preview is an iframe to inject code snippets, which are stored in a MongoDB database, and to provide a live-reload feature for the preview window. &lt;/p&gt;

&lt;p&gt;For the search area, I choose to made it pretty simple: instead of being classified by categories, I choose to sort them with hashtags (for instance #react, #fauna, #AI and so on). Developers can add title and a 250 characters description.&lt;/p&gt;

&lt;p&gt;The back-end panel is connected to the &lt;a href="https://scaledynamics.com/deploy-javascript-microservices-any-cloud" rel="noopener noreferrer"&gt;ScaleDynamics code-to-cloud Suite&lt;/a&gt; to redeploy instantly and to support the full stack live-reload.&lt;/p&gt;

&lt;p&gt;Finally, I’ve naturally coded the whole playground back end with WarpJS itself: I’ve got my first fully functional prototype within two days 😎. &lt;/p&gt;

&lt;h2&gt;
  
  
  The result: a JavaScript Full Stack Playground
&lt;/h2&gt;

&lt;p&gt;It’s live! You can test right the &lt;a href="https://playground.scaledynamics.cloud" rel="noopener noreferrer"&gt;JavaScript Full Stack Playground&lt;/a&gt;.&lt;br&gt;
Feedbacks are much appreciated so I can improve it!&lt;/p&gt;

&lt;h4&gt;
  
  
  📖 New article on Building the “React Hover cards with a REST API” snippet on the JavaScript Full Stack Playground 📖
&lt;/h4&gt;

&lt;p&gt;You can read it &lt;a href="https://dev.to/scaledynamics/building-the-react-hover-cards-with-a-rest-api-snippet-on-the-javascript-full-stack-playground-1kfi"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
