<?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: Vitor Amaral</title>
    <description>The latest articles on DEV Community by Vitor Amaral (@vacom).</description>
    <link>https://dev.to/vacom</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%2F41108%2F820ea07d-a110-4988-93bd-fa828565cfea.jpg</url>
      <title>DEV Community: Vitor Amaral</title>
      <link>https://dev.to/vacom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vacom"/>
    <language>en</language>
    <item>
      <title>Feature Flags in Action: 13 Real-World Scenarios</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Fri, 06 Oct 2023 16:36:25 +0000</pubDate>
      <link>https://dev.to/basestack/feature-flags-in-action-13-real-world-scenarios-57k8</link>
      <guid>https://dev.to/basestack/feature-flags-in-action-13-real-world-scenarios-57k8</guid>
      <description>&lt;p&gt;Feature flags have a wide range of use cases in software development and product management. They provide flexibility and control over feature releases and can be applied in various scenarios to improve development processes and user experiences. &lt;/p&gt;

&lt;p&gt;Here are some common use cases for feature flags:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Phased Rollouts&lt;/strong&gt;: Gradual feature rollouts are one of the primary use cases for feature flags. By releasing a feature to a small subset of users initially and gradually expanding access, you can closely monitor its performance and gather feedback, which helps identify and fix issues before a full-scale release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A/B Testing&lt;/strong&gt;: Feature flags enable A/B testing, where different variations of a feature are tested with distinct user groups to determine which version performs better in terms of user engagement, conversion rates, or other key metrics. This approach helps make data-driven decisions about feature design and functionality.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Canary Releases&lt;/strong&gt;: Canary releases involve deploying a new feature to a subset of your production environment. Feature flags make it easy to create canary releases, allowing you to test new features in a real-world environment with reduced risk. If issues arise, you can quickly disable the feature for the affected users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hotfixes and Rollbacks&lt;/strong&gt;: In the event of a critical bug or security vulnerability, feature flags can be used to quickly disable the problematic feature without requiring a full software redeployment. This ensures that the issue is mitigated while a fix is implemented.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Toggles for SaaS Products&lt;/strong&gt;: SaaS (Software as a Service) providers can use feature flags to control access to premium features or provide early access to new functionality for specific customers or user groups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Permissions and Entitlements&lt;/strong&gt;: Feature flags can be used to manage user permissions and entitlements dynamically. They allow you to control which users or user groups have access to specific features based on subscription levels, user roles, or other criteria.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuration Management&lt;/strong&gt;: Feature flags can be used for dynamic configuration management, enabling you to adjust application behavior without requiring code changes or redeployment. This is valuable for configuring application settings, external service endpoints, or feature parameters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Feature Gating for Beta Programs&lt;/strong&gt;: When running beta programs, feature flags can control which participants have access to beta features. This allows you to gather feedback from a select group of users before a wider release.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dark Launching&lt;/strong&gt;: Dark launching involves deploying a feature to production but keeping it hidden from users. Feature flags are essential for this use case, as they allow you to activate the feature for internal testing or monitoring while keeping it hidden from external users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Geo-Targeting and Localization&lt;/strong&gt;: Feature flags can be used to deliver region-specific or language-specific features to users in different geographical locations or language preferences. This is especially useful for global applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Onboarding and Feature Tours&lt;/strong&gt;: Feature flags can control the visibility of onboarding experiences and feature tours for new users, ensuring that they receive a guided introduction to the application's key features.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Optimization&lt;/strong&gt;: Feature flags can be used to enable or disable resource-intensive features dynamically to optimize application performance during peak usage times or on devices with limited capabilities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Emergency Kill Switches&lt;/strong&gt;: In the case of a critical issue or security breach, feature flags can serve as emergency kill switches, allowing you to instantly disable specific features across all instances of your application to mitigate the problem.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These use cases illustrate the versatility and power of feature flags in modern software development, enabling teams to manage features, test hypotheses, and respond to changing circumstances with agility and control.&lt;/p&gt;




&lt;h4&gt;
  
  
  Basestack Platform
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://basestack.co/"&gt;Basestack&lt;/a&gt;&lt;/strong&gt; is an open-source stack designed specifically for developers and startups. It offers a suite of tools, including Feature Flags, with additional tools such as Feedback, Forms, and more on the horizon. Our goal is to empower you to build great products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://basestack.co/"&gt;🌐 Website&lt;/a&gt; | &lt;a href="https://docs.basestack.co/"&gt;📘 Docs&lt;/a&gt; | &lt;a href="https://github.com/basestack-co/basestack"&gt;💻 Github&lt;/a&gt; | &lt;a href="https://twitter.com/basestack_co"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w4-NuGnD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.imgur.com/Oq3YxXR.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w4-NuGnD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.imgur.com/Oq3YxXR.gif" alt="Basestack Feature Flags Demo" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>September 🧑‍💻 Changelog</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Thu, 28 Sep 2023 17:19:44 +0000</pubDate>
      <link>https://dev.to/basestack/september-changelog-17np</link>
      <guid>https://dev.to/basestack/september-changelog-17np</guid>
      <description>&lt;p&gt;This month, our focus was on enhancing deployment options for the platform and introducing the ability to access the complete project activity history.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here are some of the key highlights from this month's updates:
&lt;/h3&gt;

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

&lt;h4&gt;
  
  
  🚢 Deploy to Render
&lt;/h4&gt;

&lt;p&gt;We have recently added a deployment guide to our &lt;a href="https://docs.basestack.co/feature-flags/deployment/deploy-render" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; that provides step-by-step instructions on how to deploy the platform on &lt;a href="https://render.com/" rel="noopener noreferrer"&gt;Render&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To simplify the process, we have included a &lt;code&gt;render.yaml&lt;/code&gt; file at the root of the project, which contains all the essential services required to run the entire platform seamlessly within Render. These services include the Database, the PgBouncer Service, and the Feature Flags Platform.&lt;/p&gt;

&lt;p&gt;When you fork and clone the &lt;a href="https://github.com/basestack-co/basestack" rel="noopener noreferrer"&gt;repository&lt;/a&gt; and import it into your Render Account, Render will automatically detect the configuration file and provide guidance on filling in the necessary details.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  🪐 Deploy to Netlify
&lt;/h4&gt;

&lt;p&gt;Much like &lt;a href="https://vercel.com/" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;, &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; simplifies the deployment of front-end applications for developers. We've now included a comprehensive guide in our &lt;a href="https://docs.basestack.co/feature-flags/deployment/deploy-netlify" rel="noopener noreferrer"&gt;documentation&lt;/a&gt; on deploying the Feature Flags Platform with Netlify. The platform leverages Netlify Functions to deploy serverless code efficiently. &lt;/p&gt;

&lt;p&gt;Please note that you will still require an external Postgres Database Service (such as &lt;a href="https://neon.tech/" rel="noopener noreferrer"&gt;Neon&lt;/a&gt;) for seamless operation.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  ⌛ Project Activity Page
&lt;/h4&gt;

&lt;p&gt;We initially introduced the Feature Flags Platform with the capability to track Flag Activity, which proved invaluable for team collaboration. However, we noticed that once a Flag was deleted, the associated activity was no longer visible. &lt;/p&gt;

&lt;p&gt;To address this, we've now introduced a General Activity Modal for the Project. This enhancement allows any developer or team member to access a comprehensive activity log, even when a flag has been deleted. It's a valuable addition to tracking project changes and maintaining transparency within your team.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  ⛓️ Upgrade to Node 18
&lt;/h4&gt;

&lt;p&gt;We were using Node.js version 16, but to stay up-to-date with security enhancements and Node.js features, we upgraded to Node.js version 18. As a result, the required version to run the project or deploy is now Node.js 18.&lt;/p&gt;

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

&lt;h4&gt;
  
  
  🎯 Improvements and fixes
&lt;/h4&gt;

&lt;p&gt;As part of our routine maintenance, we've cleaned up, fixed, and improved various aspects of the platform. Additionally, we've upgraded the packages used to ensure we stay current with the latest features and security patches.&lt;/p&gt;




&lt;h4&gt;
  
  
  Basestack Platform
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://basestack.co/" rel="noopener noreferrer"&gt;Basestack&lt;/a&gt;&lt;/strong&gt; is an open-source stack designed specifically for developers and startups. It offers a suite of tools, including Feature Flags, with additional tools such as Feedback, Forms, and more on the horizon. Our goal is to empower you to build great products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://basestack.co/" rel="noopener noreferrer"&gt;🌐 Website&lt;/a&gt; | &lt;a href="https://docs.basestack.co/" rel="noopener noreferrer"&gt;📘 Docs&lt;/a&gt; | &lt;a href="https://github.com/basestack-co/basestack" rel="noopener noreferrer"&gt;💻 Github&lt;/a&gt; | &lt;a href="https://twitter.com/basestack_co" rel="noopener noreferrer"&gt;🐦 Twitter&lt;/a&gt;&lt;/p&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%2Fi.imgur.com%2FOq3YxXR.gif" 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%2Fi.imgur.com%2FOq3YxXR.gif" alt="Basestack Feature Flags Demo"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
      <category>github</category>
    </item>
    <item>
      <title>Feature Flags with JavaScript Proxies</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Tue, 12 Sep 2023 18:20:20 +0000</pubDate>
      <link>https://dev.to/basestack/feature-flags-with-javascript-proxies-34la</link>
      <guid>https://dev.to/basestack/feature-flags-with-javascript-proxies-34la</guid>
      <description>&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy"&gt;JavaScript Proxies&lt;/a&gt; are objects that can intercept and customize the behavior of fundamental operations on other objects, such as getting and setting properties, invoking functions, and much more.&lt;/p&gt;

&lt;p&gt;With JavaScript Proxies, you can create "virtual" objects that behave like real objects. This is achieved by intercepting calls to certain methods and functions and allowing you to customize the behavior of those calls.&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;targetObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;28&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;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;get&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Getting &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&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;target&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;set&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Setting &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&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;proxyObject&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Proxy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;targetObject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;proxyObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Logs "Getting name" and "Alice"&lt;/span&gt;
&lt;span class="nx"&gt;proxyObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;29&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Logs "Setting age to 29"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Proxies can be used to implement feature flags in JavaScript in a flexible and powerful way. Here are some of the benefits of using proxies for feature flags:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic feature flag evaluation&lt;/strong&gt;: Using proxies, you can dynamically evaluate whether or not a particular feature flag is enabled or disabled. This allows you to change the behavior of your application in real-time, without having to restart the application or update the code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customizable flag behavior&lt;/strong&gt;: Proxies allow you to customize the behavior of a feature flag based on the context of the application. For example, you could enable a feature flag for a particular user or group of users, or enable a feature flag only in a particular environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Separation of concerns&lt;/strong&gt;: By using proxies to implement feature flags, you can separate the concerns of feature flag management and application logic. This allows you to more easily manage your feature flags and update them without having to modify the application code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Testing and experimentation&lt;/strong&gt;: Using proxies, you can experiment with different feature flag configurations and test the impact of those changes on your application. This allows you to make data-driven decisions about feature flag behavior and optimize the user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Examples of how you can use JavaScript proxies to implement feature flags:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Dynamic flag evaluation
&lt;/h3&gt;

&lt;p&gt;In this example, we use a proxy to dynamically evaluate the &lt;code&gt;newFeatureEnabled&lt;/code&gt; feature flag based on the current date. The &lt;code&gt;get&lt;/code&gt; method of the proxy intercepts calls to the &lt;code&gt;newFeatureEnabled&lt;/code&gt; property and returns &lt;code&gt;true&lt;/code&gt; if the current date is after September 1, 2023. This allows us to enable the new feature dynamically without having to restart the application or update the 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;featureFlags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Proxy&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;newFeatureEnabled&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&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;date&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2023-09-01&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="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;featureFlags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Code for new feature goes here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Customizable flag behavior
&lt;/h3&gt;

&lt;p&gt;In this example, we use a proxy to customize the behavior of the &lt;code&gt;newFeatureEnabled&lt;/code&gt; feature flag based on the current user. The &lt;code&gt;get&lt;/code&gt; method of the proxy intercepts calls to the &lt;code&gt;newFeatureEnabled&lt;/code&gt; property and returns &lt;code&gt;true&lt;/code&gt; if the current user has access to the new feature. This allows us to enable the new feature for certain users or groups of users.&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;featureFlags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Proxy&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;newFeatureEnabled&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getCurrentUser&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;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;hasAccessToNewFeature&lt;/span&gt;&lt;span class="p"&gt;;&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;target&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;featureFlags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Code for new feature goes here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Separation of concerns
&lt;/h3&gt;

&lt;p&gt;In this example, we use a proxy to separate the concerns of feature flag management and application logic. The &lt;code&gt;get&lt;/code&gt; method of the proxy intercepts calls to any property and fetches the corresponding feature flag value from the server. This allows us to update the feature flag values without having to modify the application 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;featureFlags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Proxy&lt;/span&gt;&lt;span class="p"&gt;({},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Fetch feature flag value from server&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fetchFeatureFlagValue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;property&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;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;featureFlags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Code for new feature goes here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Testing and experimentation
&lt;/h3&gt;

&lt;p&gt;In this example, we use a proxy to experiment with the &lt;code&gt;newFeatureEnabled&lt;/code&gt; feature flag. The &lt;code&gt;get&lt;/code&gt; method of the proxy intercepts calls to the &lt;code&gt;newFeatureEnabled&lt;/code&gt; property and returns &lt;code&gt;true&lt;/code&gt; for users in the experimental group. This allows us to test the impact of the new feature on a small group of users before rolling it out to everyone.&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;featureFlags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Proxy&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;newFeatureEnabled&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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;experimentGroup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;getCurrentExperimentGroup&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;experimentGroup&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;experimentalGroup&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="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&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;target&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;property&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;featureFlags&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;newFeatureEnabled&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Code for new feature goes here&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Overall, using proxies for feature flags can provide a more flexible and powerful way to manage feature flag behavior in your JavaScript application. By separating the concerns of feature flag management and application logic, you can more easily manage your feature flags and optimize the user experience of your application.&lt;/p&gt;




&lt;h4&gt;
  
  
  Basestack Platform
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://basestack.co/"&gt;Basestack&lt;/a&gt;&lt;/strong&gt; is an open-source stack designed specifically for developers and startups. It offers a suite of tools, including Feature Flags, with additional tools such as Feedback, Forms, and more on the horizon. Our goal is to empower you in building great products.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w4-NuGnD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.imgur.com/Oq3YxXR.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w4-NuGnD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://i.imgur.com/Oq3YxXR.gif" alt="Basestack Feature Flags Demo" width="800" height="502"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://basestack.co/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.basestack.co/"&gt;Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/basestack-co/basestack"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/basestack_co"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Hello, World!</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Thu, 31 Aug 2023 19:04:27 +0000</pubDate>
      <link>https://dev.to/basestack/hello-world-37g5</link>
      <guid>https://dev.to/basestack/hello-world-37g5</guid>
      <description>&lt;p&gt;This simple "Hello, World!" is here to introduce you to &lt;a href="https://basestack.co/"&gt;Basestack&lt;/a&gt; and let you know that we're developing this project transparently and in the open.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Exactly is Basestack?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basestack is an open-source stack designed specifically for developers and startups. It offers a comprehensive suite of tools, including Feature Flags, with additional tools such as Feedback, Forms, and more on the horizon. Our goal is to empower you in building great products.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Choose Our Feature Flags Platform?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Basestack Feature Flags is a self-hosting platform that provides an effortless method to host your very own Feature Flags management platform. By leveraging services like &lt;a href="https://vercel.com"&gt;Vercel&lt;/a&gt;, any developer, whether an indie or startup, gains full control over their features and data. Ultimately, the platform is housed in your account, under your management, giving you complete control over your data.&lt;/p&gt;

&lt;h4&gt;
  
  
  Tools
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;⛳ Feature Flags (&lt;em&gt;Beta&lt;/em&gt;) &lt;a href="https://docs.basestack.co/feature-flags"&gt;Docs&lt;/a&gt; | &lt;a href="https://basestack.co/"&gt;Website&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📄 Forms (Planned)&lt;/li&gt;
&lt;li&gt;💬 Feedback (Planned)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Check more at:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/basestack-co/basestack"&gt;Github Repo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/basestack_co"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flags</category>
      <category>opensource</category>
      <category>github</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Sudoku Neumorphism Design</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Mon, 10 Jan 2022 18:33:50 +0000</pubDate>
      <link>https://dev.to/vacom/sudoku-neumorphism-design-1lai</link>
      <guid>https://dev.to/vacom/sudoku-neumorphism-design-1lai</guid>
      <description>&lt;p&gt;Sudoku Neumorphism Design&lt;/p&gt;

&lt;p&gt;This CodePen was created by &lt;a class="mentioned-user" href="https://dev.to/amaralflavio"&gt;@amaralflavio&lt;/a&gt; (aka my little brother), it shows a take on Neumorphism Design, the code is on codepen to try it out and the credit to the author of the design. The code and demo &lt;a href="https://codepen.io/flavio_amaral/pen/oNGPqEN"&gt;https://codepen.io/flavio_amaral/pen/oNGPqEN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sharing here to give him some love.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/flavio_amaral/embed/oNGPqEN?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Credits:

- Design based: &lt;a href="https://dribbble.com/shots/11097923-Sudoku-Redesign-Neumorphism-UI"&gt;https://dribbble.com/shots/10474707-Experimental-UI-animation&lt;/a&gt;

- Font: &lt;a href="https://fonts.google.com/"&gt;https://fonts.google.com/&lt;/a&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>html</category>
      <category>css</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Dropdown Menu with effect of replacing system cursor through hover</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Mon, 14 Jun 2021 13:20:36 +0000</pubDate>
      <link>https://dev.to/vacom/dropdown-menu-with-effect-of-replacing-system-cursor-through-hover-4kci</link>
      <guid>https://dev.to/vacom/dropdown-menu-with-effect-of-replacing-system-cursor-through-hover-4kci</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;p&gt;Dropdown Menu with effect of replacing system cursor through hover&lt;/p&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This CodePen was created by &lt;a class="mentioned-user" href="https://dev.to/amaralflavio"&gt;@amaralflavio&lt;/a&gt;, it shows a dropdown with a different take on the hover effect. When hovering on each item, the icon of each social network appears, replacing the system cursor. &lt;/p&gt;

&lt;p&gt;The code and demo &lt;a href="https://codepen.io/flavio_amaral/pen/xxqQLoa"&gt;https://codepen.io/flavio_amaral/pen/xxqQLoa&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/flavio_amaral/embed/xxqQLoa?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>html</category>
      <category>css</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Diary (Free) by Storytics / Journal with Pin</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Sat, 29 May 2021 13:11:33 +0000</pubDate>
      <link>https://dev.to/vacom/diary-free-by-storytics-journal-with-pin-j8i</link>
      <guid>https://dev.to/vacom/diary-free-by-storytics-journal-with-pin-j8i</guid>
      <description>&lt;p&gt;&lt;a href="https://storytics.pt/diary"&gt;Diary (Free) by Storytics&lt;/a&gt; is a diary/journal where you can use to reflect on the past or plan for the future. Focused on simplicity, keep your thoughts organized by several diaries/journals with unlimited pages securely through a pin code.  &lt;/p&gt;

&lt;p&gt;With a simple and clear design, you can easily focus on writing and if you write your diaries/journals at night, take the opportunity to switch to the dark theme and write in a beautiful text-focused editor. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secure and Private:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Write your diaries in a safe environment where only you have control over the content that is created, and if you want you can enable a pin code/biometry layer to your Diaries or Journal.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customizable, Easy, and Minimalist:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simple and minimalist, Diary by &lt;a href="https://storytics.pt"&gt;Storytics&lt;/a&gt; offers a simple experience of writing journals, diaries with support for light and dark themes. Finally, organize your diaries through color customization, a simple way to organize your memories. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatic Database Backup:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If you want to keep your diaries and journals in a safe place without losing them in case something happens to your phone, then the premium plan is perfect for you. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Included in your &lt;a href="https://storytics.pt/diary"&gt;Diary&lt;/a&gt;:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple and beautiful design; &lt;/li&gt;
&lt;li&gt;Text-focused editor; &lt;/li&gt;
&lt;li&gt;Private and with support for Pin Code; &lt;/li&gt;
&lt;li&gt;Dark and light themes; &lt;/li&gt;
&lt;li&gt;Customization of diaries/journals through colors; &lt;/li&gt;
&lt;li&gt;Automatic Database Backup with Premium (optional)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Useful links&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/vacom/our-first-app-on-google-play-and-is-a-diary-journal-app-ljk"&gt;How I build this App&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://storytics.pt/diary"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=pt.storytics.diary.lite"&gt;Free Version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=pt.storytics.diary"&gt;Pro Version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.facebook.com/storytics.pt"&gt;Facebook&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Storytics"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>showdev</category>
      <category>android</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Our First App on Google Play and is a Diary/Journal App</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Tue, 11 May 2021 16:21:26 +0000</pubDate>
      <link>https://dev.to/vacom/our-first-app-on-google-play-and-is-a-diary-journal-app-ljk</link>
      <guid>https://dev.to/vacom/our-first-app-on-google-play-and-is-a-diary-journal-app-ljk</guid>
      <description>&lt;p&gt;&lt;strong&gt;First of all, a little description about the App&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://storytics.pt/diary"&gt;Diary by Storytics&lt;/a&gt; is a private and offline-first diary where you can use to reflect on the past or plan for the future. Focused on simplicity, keep your thoughts organized by several diaries/journals with unlimited pages securely through a pin code.&lt;/p&gt;

&lt;p&gt;With a simple and clear design, you can easily focus on writing and if you write your diaries/journals at night, take the opportunity to switch to the dark theme and write in a beautiful text-focused editor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;About Us&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My brother (&lt;a class="mentioned-user" href="https://dev.to/amaralflavio"&gt;@amaralflavio&lt;/a&gt;) and I we create web templates under the &lt;a href="https://storytics.pt"&gt;Storytics&lt;/a&gt; brand and we proposed to challenge ourselves by creating our first &lt;a href="https://play.google.com/store/apps/details?id=pt.storytics.diary&amp;amp;pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1"&gt;Android App&lt;/a&gt;, we have worked in this area (programming) for some time and we have always made web and mobile apps for others (companies) but never something of ours, with our vision and design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why another Diary App?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Everything I would say about Diary apps already exists and probably hundreds of them. Our goal was not to reinvent the wheel or create the next big thing. We just wanted to develop and launch something that was ours.&lt;/p&gt;

&lt;p&gt;So, our focus was: &lt;/p&gt;

&lt;p&gt;No need for internet connection, no trackers, no ads and if you want you can enable a pin code/biometry layer. Simple and minimalist, with a simple experience of writing journals, diaries with support for light and dark themes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What was our tech stack?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below, only the libraries that stand out are mentioned, what we can get out of here is that the app was developed with Expo.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.expo.io/"&gt;From the Expo Docs&lt;/a&gt;: "Expo is a framework and a platform for universal React applications. It is a set of tools and services built around React Native and native platforms that help you develop, build, deploy, and quickly iterate on iOS, Android, and web apps from the same JavaScript/TypeScript codebase."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Expo &amp;amp; React Native&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Styled-Components&lt;/li&gt;
&lt;li&gt;i18n-js&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;DayJS&lt;/li&gt;
&lt;li&gt;React Navigation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why is it paid and no support for iOS?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The app is paid because in this way it supports our work and keeps the app in development (new features, fixes and updates). When it comes to iOS it is due to the same reason, because the app is ready to be launched for iOS and all this thanks to Expo.&lt;/p&gt;

&lt;p&gt;We did not want to follow this path, but we want to give the same experience to users who prefer free apps and for this we are creating a version of the app with all the features but in this case, there will be ads&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can you help us?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the ways you can support us is by downloading the app on &lt;a href="https://play.google.com/store/apps/details?id=pt.storytics.diary&amp;amp;pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1"&gt;Google Play&lt;/a&gt;. But all contributions are welcome, contributions such as: Share the App on social networks or comment below with your feedback.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>android</category>
      <category>reactnative</category>
      <category>react</category>
    </item>
    <item>
      <title>Amazing Tab Bar (Animated)</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Sun, 11 Apr 2021 12:44:17 +0000</pubDate>
      <link>https://dev.to/vacom/amazing-tab-bar-animated-1nhc</link>
      <guid>https://dev.to/vacom/amazing-tab-bar-animated-1nhc</guid>
      <description>&lt;p&gt;Animated Mobile Tab Bar&lt;/p&gt;

&lt;p&gt;This CodePen was created by &lt;a class="mentioned-user" href="https://dev.to/amaralflavio"&gt;@amaralflavio&lt;/a&gt; (aka my little brother), it shows a cool tab bar animation that can be used for a mobile navigation. The code and demo &lt;a href="https://codepen.io/flavio_amaral/full/xxgYGrR"&gt;https://codepen.io/flavio_amaral/full/xxgYGrR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sharing here to give him some love.&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/flavio_amaral/embed/xxgYGrR?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Credits:
- Design based: &lt;a href="https://dribbble.com/shots/10474707-Experimental-UI-animation"&gt;https://dribbble.com/shots/10474707-Experimental-UI-animation&lt;/a&gt;
- Icons: &lt;a href="https://icons.getbootstrap.com"&gt;https://icons.getbootstrap.com&lt;/a&gt;
- Colors: &lt;a href="https://material.io/resources/color"&gt;https://material.io/resources/color&lt;/a&gt;
- Font: &lt;a href="https://fonts.google.com/"&gt;https://fonts.google.com/&lt;/a&gt;
- Image: &lt;a href="https://www.pexels.com/"&gt;https://www.pexels.com/&lt;/a&gt;
- Jello Animation: &lt;a href="https://animista.net/play/basic"&gt;https://animista.net/play/basic&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codepen</category>
      <category>html</category>
      <category>css</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Just launched UpStamps on ProductHunt 🚀</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Sun, 28 Jun 2020 14:36:46 +0000</pubDate>
      <link>https://dev.to/vacom/just-launched-upstamps-on-producthunt-4848</link>
      <guid>https://dev.to/vacom/just-launched-upstamps-on-producthunt-4848</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kobOH_c_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tct1a9jgusqhn47afjed.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kobOH_c_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tct1a9jgusqhn47afjed.gif" alt="UpStamps Demo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is &lt;a href="https://upstamps.com"&gt;UpStamps&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;UpStamps is a Feature Flag Management Platform that lets you manage every feature with a central visibility and control user interface. Teams and developers are managing their projects using feature management to progressively deliver features to users with confidence.&lt;/p&gt;

&lt;p&gt;UpStamps helps you test in production without deployments and offers easy to use SDKs and Components for development teams to quickly build and deploy applications.&lt;/p&gt;

&lt;p&gt;Key Features:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Projects:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Integrate different Feature Flags across multiple projects and manage across the web, mobile, and server-side applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Organize by Environments:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Separate features deployment across different environments and control their feature lifecycles.&lt;br&gt;
Easily Deploy with Feature &amp;amp; Remote Flags:&lt;/p&gt;

&lt;p&gt;Use flags to test faster in Production, eliminating the risk by maintaining control of the deployments. Use Remote Flags to change in real-time behavior of features through response data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run A/B Tests:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use A/B Tests to randomized experiments with two variants and compare them with the user's response. Decide by your user's feedback which variant is more effective to launch.&lt;br&gt;
Target Specific Segments:&lt;/p&gt;

&lt;p&gt;Control who has access to new features with Segments and define Targets based on Users Device or Location.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why I created UpStamps?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why did I create UpStamps? In the projects where I work professionally, I started to notice a fear of launching new features for production. The old method delayed the launch of new features and this was not even the most relevant point. Sometimes there were situations where it was necessary to have certain features in production for specific users and we (the developers) had to use localStorage and variables to manipulate the visibility of the feature, then we always had to work on the code to disable or activate it.&lt;/p&gt;

&lt;p&gt;So I developed a simple platform to help teams and developers to launch production features more confidently&lt;/p&gt;

&lt;p&gt;Let me know what you think and comment below if you’d like! ❤️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.producthunt.com/posts/upstamps"&gt;ProductHunt Link&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>producthunt</category>
    </item>
    <item>
      <title>Web Friday: Hunt 2</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Fri, 05 Jun 2020 17:29:55 +0000</pubDate>
      <link>https://dev.to/vacom/web-friday-hunt-2-46mf</link>
      <guid>https://dev.to/vacom/web-friday-hunt-2-46mf</guid>
      <description>&lt;p&gt;&lt;strong&gt;Web Friday Hunt&lt;/strong&gt; is new series of publications that I will start doing every Friday, sharing here links to articles, applications, tools, tutorials or anything related to developers that I will find on the internet.&lt;/p&gt;

&lt;p&gt;In context, I am always looking for new things on the internet related to programmers, this can be new tools, libraries or even frameworks. Most I keep in my bookmarks to be able to use or even experiment in the future&lt;/p&gt;

&lt;p&gt;I hope you like the list below, contribute or discuss any of the links mentioned by leaving a comment. &lt;/p&gt;

&lt;p&gt;Previous hunts: &lt;a href="https://dev.to/vacom/web-friday-hunt-1-211p"&gt;[1]&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  The Hunt
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Tools, Libraries &amp;amp; Frameworks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bottender.js.org/"&gt;Bottender&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bojler.slicejack.com/"&gt;Bojler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://trowel.github.io/"&gt;Trowel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pushjs.org/"&gt;Pushjs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stimulusjs.org/"&gt;Stimulusjs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.colorsandfonts.com/"&gt;Colors &amp;amp; Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.shapedivider.app/"&gt;shapedivider&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://html5up.net/"&gt;html5up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stories.freepik.com/"&gt;Stories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/woocommerce/woocommerce"&gt;woocommerce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Polymer/lit-html"&gt;lit-html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/leeoniya/uPlot"&gt;uPlot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ionic-team/stencil"&gt;Stencil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ben-rogerson/twin.macro"&gt;twin.macro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://defaced.dev/tools/consoleimg/"&gt;consoleimg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gridjs.io/"&gt;GridJS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Apps &amp;amp; Products&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://miny.app/"&gt;Mini - friendly URL shortener.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://loggie.io"&gt;Loggie&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.avodocs.com/"&gt;Avodocs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://livedocs.io/"&gt;Livedocs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.8base.com/"&gt;8base&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fossa.com/"&gt;Fossa&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://snyk.io/"&gt;Snyk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mileo.io/"&gt;Mileo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codernotes.io/"&gt;CoderNotes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://supabase.io/"&gt;Supabase&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gettaro.com/"&gt;Taro&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Articles &amp;amp; Tuts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/a-guide-to-the-responsive-images-syntax-in-html/"&gt;A Guide to the Responsive Images Syntax in HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@frontender_ua/frontend-weekly-digest-160-25-31-may-2020-994773e822de"&gt;Frontend Weekly Digest #160 (25 –31 May 2020)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://techstacker.com/how-to-set-up-react-native-cli-mac-android/"&gt;React Native: How to Setup React Native CLI for Android on macOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.codota.com/angular-vs-react/"&gt;Angular vs React: 5 Key Differences&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.webdesignerdepot.com/2020/05/should-your-site-be-using-dark-mode/"&gt;Should your site be using dark mode?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dribbble.com/stories/2020/05/27/font-pairing-tools-for-designers"&gt;10 excellent font pairing tools for designers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://qodeinteractive.com/magazine/color-combinations"&gt;20+ Beautiful Color Combinations for Your Next Project&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://increment.com/frontend/a-users-guide-to-css-variables/"&gt;A user’s guide to CSS variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sarasoueidan.com/blog/style-settings-with-css-variables/"&gt;Global and Component Style Settings with CSS Variables&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;As you can see, it is a highly opinionated list, but these are things that I find and keep and now I will share with you every Friday.&lt;/p&gt;

&lt;p&gt;Leave in the comments how I can improve with new categories, or another aspect. Thank you for your time and good Friday. 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>freebies</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Web Friday: Hunt 1</title>
      <dc:creator>Vitor Amaral</dc:creator>
      <pubDate>Fri, 29 May 2020 20:05:50 +0000</pubDate>
      <link>https://dev.to/vacom/web-friday-hunt-1-211p</link>
      <guid>https://dev.to/vacom/web-friday-hunt-1-211p</guid>
      <description>&lt;p&gt;&lt;strong&gt;Web Friday Hunt&lt;/strong&gt; is a new series of publications that I will start doing every Friday, sharing here links to articles, applications, tools, tutorials or anything related to developers that I will find on the internet.&lt;/p&gt;

&lt;p&gt;In context, I am always looking for new things on the internet related to programmers, this can be new tools, libraries or even frameworks. Most I keep in my bookmarks to be able to use or even experiment in the future&lt;/p&gt;

&lt;p&gt;I hope you like the list below, contribute or discuss any of the links mentioned by leaving a comment. By the way, I wanted to know if you prefer these posts with a cover or without a cover image?&lt;/p&gt;

&lt;h4&gt;
  
  
  The Hunt
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Tools, Libraries &amp;amp; Frameworks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://bansal.io/pattern-css"&gt;pattern.css&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://screenrecorderapp.com/"&gt;Screen Recorder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://timelines.gitkraken.com/"&gt;Gitkraken Timeline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://lineicons.com/"&gt;LineIcons 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ckeditor.com/github-writer/"&gt;Github Writer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blush.design/"&gt;Blush Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://newcss.net/"&gt;New.css&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mertjf.github.io/tailblocks/"&gt;Tailblocks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://windups.gwil.co/"&gt;windups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://untools.co/"&gt;untools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://htmx.org/"&gt;htmx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dgraph.io/"&gt;dgraph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://redwoodjs.com/"&gt;Redwoodjs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/outline/rich-markdown-editor"&gt;rich-markdown-editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/liyasthomas/postwoman"&gt;postwoman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-wc/open-wc"&gt;open-wc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/caddyserver/caddy"&gt;caddy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/facebookexperimental/Recoil"&gt;Recoil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/hakimel/reveal.js"&gt;Reveal.js&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Apps &amp;amp; Products&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://magic.link/"&gt;Magic Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://legalsite.co/"&gt;LegalSite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://n8n.io/"&gt;n8n.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://apilayer.com/"&gt;apilayer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jaamly.com/"&gt;jaamly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://metomic.io/"&gt;metomic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Articles &amp;amp; Tuts&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://css-tricks.com/building-your-first-serverless-service-with-aws-lambda-functions/"&gt;Building Your First Serverless Service With AWS Lambda Functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://itnext.io/unit-testing-react-components-with-cypress-4d4cf8cd59a0"&gt;Unit Testing React components with Cypress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vgpena.github.io/js-arrays/"&gt;Best Practices in JavaScript Array Iteration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://csswizardry.com/2020/05/the-fastest-google-fonts/"&gt;The Fastest Google Fonts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ethanmarcotte.com/wrote/responsive-design-at-10/"&gt;Responsive web design turns ten&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lea.verou.me/2020/05/todays-javascript-from-an-outsiders-perspective/"&gt;Today’s Javascript, from an outsider’s perspective&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mikestreety.co.uk/blog/the-git-commit-hash"&gt;The Git Commit Hash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://increment.com/frontend/ask-an-expert-why-is-css-the-way-it-is/"&gt;Ask an expert: Why is CSS . . . the way it is?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.stefanjudis.com/today-i-learned/safe-unsafe-alignment-in-css-flexbox/"&gt;Safe/unsafe alignment in CSS flexbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;As you can see, it is a highly opinionated list, but these are things that I find and keep and now I will share with you every Friday.&lt;/p&gt;

&lt;p&gt;Leave in the comments how I can improve with new categories, or another aspect. Thank you for your time and good Friday. 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>freebies</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
