<?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: bonnguyenitc</title>
    <description>The latest articles on DEV Community by bonnguyenitc (@bonnguyenitc).</description>
    <link>https://dev.to/bonnguyenitc</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%2F350455%2F02bd8a9a-9285-4f15-b96d-018cd1ff7930.jpeg</url>
      <title>DEV Community: bonnguyenitc</title>
      <link>https://dev.to/bonnguyenitc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bonnguyenitc"/>
    <language>en</language>
    <item>
      <title>What is smart contract ?</title>
      <dc:creator>bonnguyenitc</dc:creator>
      <pubDate>Sat, 04 Feb 2023 10:16:25 +0000</pubDate>
      <link>https://dev.to/bonnguyenitc/what-is-smart-contract--5687</link>
      <guid>https://dev.to/bonnguyenitc/what-is-smart-contract--5687</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Smart contracts are self-executing digital agreements with the terms of the agreement between buyer and seller being directly written into lines of code. These contracts run on the blockchain and are secured by cryptography.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Smart Contracts&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Trust and Security: Smart contracts are stored on a decentralized blockchain network, making them tamper-proof and secure.&lt;/li&gt;
&lt;li&gt;Automation: Smart contracts are self-executing, meaning they do not require intermediaries to enforce their terms.&lt;/li&gt;
&lt;li&gt;Transparency: Smart contracts are public and their execution is recorded on the blockchain, making the entire process transparent.&lt;/li&gt;
&lt;li&gt;Cost-effective: The removal of intermediaries results in lower transaction costs compared to traditional contracts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Example of a Smart Contract&lt;/strong&gt;&lt;br&gt;
Let’s say two parties, Alice and Bob, want to enter into an agreement for the sale of a piece of land. In a traditional contract, this would involve the services of a real estate agent, lawyer, and a notary. With a smart contract, the entire process can be automated on the blockchain.&lt;/p&gt;

&lt;p&gt;The terms of the agreement would be written into the smart contract, including the price of the land, the date of transfer, and any other conditions that need to be met. Once both parties agree to the terms, the contract is executed automatically, and the transfer of ownership of the land is recorded on the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Smart contracts are revolutionizing the way we do business, making the process of contract execution more secure, transparent, and cost-effective. The blockchain technology that supports smart contracts provides an infrastructure for secure and transparent transactions, making it ideal for a wide range of applications beyond just financial transactions.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>devrel</category>
      <category>offers</category>
      <category>devto</category>
    </item>
    <item>
      <title>Operators in JavaScript: The Fundamentals</title>
      <dc:creator>bonnguyenitc</dc:creator>
      <pubDate>Sat, 04 Feb 2023 10:03:25 +0000</pubDate>
      <link>https://dev.to/bonnguyenitc/operators-in-javascript-the-fundamentals-411m</link>
      <guid>https://dev.to/bonnguyenitc/operators-in-javascript-the-fundamentals-411m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Operators&lt;/strong&gt;&lt;br&gt;
Operators in JavaScript are symbols that perform specific operations on operands, or values, to produce a new value. In this post, we will discuss the different types of operators available in JavaScript and how they can be used in our code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Arithmetic Operators&lt;/strong&gt;&lt;br&gt;
Arithmetic operators perform basic arithmetic operations such as addition, subtraction, multiplication, and division. These operators are +, -, *, /, %, ++, and --.&lt;/p&gt;

&lt;p&gt;For example, 2 + 3 would evaluate to 5 and 10 / 2 would evaluate to 5. The % operator returns the remainder of the division of two operands. For instance, 10 % 3 would evaluate to 1. The ++ and -- operators are used to increment and decrement the value of a variable by 1 respectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assignment Operators&lt;/strong&gt;&lt;br&gt;
Assignment operators are used to assign a value to a variable. The most commonly used assignment operator is =. Other assignment operators include +=, -=, *=, and /=. These operators perform the respective arithmetic operation and assign the result back to the variable.&lt;/p&gt;

&lt;p&gt;For instance, x = x + 3 can be written as x += 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comparison Operators&lt;/strong&gt;&lt;br&gt;
Comparison operators are used to compare values and return a Boolean value of true or false. These operators include ==, !=, ===, !==, &amp;gt;, &amp;lt;, &amp;gt;=, and &amp;lt;=.&lt;/p&gt;

&lt;p&gt;For example, 5 == 5 would evaluate to true, while 5 == 6 would evaluate to false. The === and !== operators perform strict equality checks, meaning they check both the value and type of the operands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logical Operators&lt;/strong&gt;&lt;br&gt;
Logical operators are used to perform logical operations such as and, or, and not. The &amp;amp;&amp;amp; operator returns true if both operands are true, while the || operator returns true if either operand is true. The ! operator is used to negate a value and return the opposite Boolean value.&lt;/p&gt;

&lt;p&gt;For instance, true &amp;amp;&amp;amp; false would evaluate to false, while true || false would evaluate to true.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ternary Operators&lt;/strong&gt;&lt;br&gt;
The ternary operator is a shorthand for an if statement. It is written as condition ? expression1 : expression2. If the condition is true, the operator returns expression1, otherwise it returns expression2.&lt;/p&gt;

&lt;p&gt;For example, let x = 5 &amp;gt; 3 ? "yes" : "no" would assign the value "yes" to x.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
In conclusion, operators play a crucial role in JavaScript and allow us to perform various operations on values. Understanding these operators and their use cases can greatly improve our ability to write efficient and readable code.&lt;/p&gt;

</description>
      <category>devto</category>
      <category>community</category>
      <category>announcement</category>
    </item>
    <item>
      <title>Variables in JavaScript: The Fundamentals</title>
      <dc:creator>bonnguyenitc</dc:creator>
      <pubDate>Sat, 04 Feb 2023 08:45:34 +0000</pubDate>
      <link>https://dev.to/bonnguyenitc/variables-in-javascript-the-fundamentals-4o4o</link>
      <guid>https://dev.to/bonnguyenitc/variables-in-javascript-the-fundamentals-4o4o</guid>
      <description>&lt;p&gt;JavaScript is a dynamically-typed language that allows developers to store data in variables. Variables are containers that hold values, which can be of different types such as numbers, strings, arrays, and objects. In this blog post, we will go over the basics of variables in JavaScript and how to use them effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Declaring Variables in JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In JavaScript, you can declare a variable using the var, let, or const keyword. The var keyword has been used for years and is still widely used in older JavaScript code, but it is generally recommended to use let or const for declaring variables in modern JavaScript.&lt;/p&gt;

&lt;p&gt;The difference between var, let, and const is the scope and mutability of the variable. var variables are function-scoped, which means that they are only accessible within the function they are declared in. let and const variables are block-scoped, meaning that they are only accessible within the block they are declared in.&lt;/p&gt;

&lt;p&gt;let variables are mutable, meaning that you can change their value after they are declared. const variables, on the other hand, are immutable, meaning that once a value is assigned to them, it cannot be changed.&lt;/p&gt;

&lt;p&gt;For example, let's declare a variable name using const:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const name = "John Doe";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we declared a const variable name and assigned a string value of "John Doe" to it. Once the value is assigned, it cannot be changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assigning Values to Variables in JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In JavaScript, you can assign values to variables using the assignment operator =. The assignment operator takes the value on the right-hand side and assigns it to the variable on the left-hand side.&lt;/p&gt;

&lt;p&gt;For example, let's assign a value to a let variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let age = 30;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we declared a let variable age and assigned a value of 30 to it. The value of the age variable can be changed later in the code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Types in JavaScript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;JavaScript is a dynamically-typed language, meaning that the type of a variable can change based on the value assigned to it. There are several data types in JavaScript, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Number: Represents numbers, such as integers and floating-point numbers.&lt;/li&gt;
&lt;li&gt;String: Represents a sequence of characters, such as words or sentences.&lt;/li&gt;
&lt;li&gt;Boolean: Represents a value that can be either true or false.&lt;/li&gt;
&lt;li&gt;Array: Represents a collection of values, such as a list of numbers or strings.&lt;/li&gt;
&lt;li&gt;Object: Represents a collection of properties and values, such as a person's name and age.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can use the typeof operator to find out the type of a variable. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let name = "John Doe";
console.log(typeof name); // Output: string

let age = 30;
console.log(typeof age); // Output: number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, we declared two variables name and age, and used the typeof operator to find out their types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Variables are an essential part of any programming language, and JavaScript is no exception. In this blog post, we covered the basics of variables in JavaScript, including how to declare variables, assign values to them&lt;/p&gt;

</description>
      <category>announcement</category>
      <category>devto</category>
      <category>offers</category>
    </item>
    <item>
      <title>Implement Stack widget Flutter in React Native</title>
      <dc:creator>bonnguyenitc</dc:creator>
      <pubDate>Mon, 30 Jan 2023 14:39:06 +0000</pubDate>
      <link>https://dev.to/bonnguyenitc/stack-widget-in-react-native-4m2p</link>
      <guid>https://dev.to/bonnguyenitc/stack-widget-in-react-native-4m2p</guid>
      <description>&lt;h2&gt;
  
  
  What is Stack widget?
&lt;/h2&gt;

&lt;p&gt;The Stack widget is a component in Flutter that allows you to position its children relative to the edges of the widget's box. This is a handy tool when building user interfaces. Unfortunately, React Native doesn't have a component like this, but you can still achieve a similar result.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use Stack widget?
&lt;/h2&gt;

&lt;p&gt;To use the Stack widget in Flutter, simply provide a list of widgets as children to the Stack component, like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stack(
  children: &amp;lt;Widget&amp;gt;[
    Container(
      width: 100,
      height: 100,
      color: Colors.red,
    ),
    Container(
      width: 90,
      height: 90,
      color: Colors.green,
    ),
    Container(
      width: 80,
      height: 80,
      color: Colors.blue,
    ),
  ],
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will produce a stack of containers with different colors, as demonstrated in the accompanying image.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ap81_9hy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4csd1zuknvvlkz046yg2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ap81_9hy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4csd1zuknvvlkz046yg2.png" alt="in flutter" width="756" height="452"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How to implement Stack widget in ReactNative?
&lt;/h2&gt;

&lt;p&gt;If you need to achieve a similar effect in React Native, you can use the cloneElement API to modify the children of a component and add the necessary styles to each child. Here's an example of how to do it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;Box {...props}&amp;gt;
  {React.Children.map(children, (child, index) =&amp;gt; {
    return React.cloneElement(child as 
      React.ReactElement&amp;lt;any&amp;gt;, {
         position: 'absolute',
         zIndex: length - index,
    })
  })}
&amp;lt;/Box&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code creates a custom component called Box that uses the cloneElement API to add the position and zIndex styles to each child. The result is a stack of components with the desired behavior.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Guf7ORyb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ednb6janw82b6ed9ruvz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Guf7ORyb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ednb6janw82b6ed9ruvz.png" alt="Code exam" width="880" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4Llu_fVc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lqkm6spriyla7cf0afg1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4Llu_fVc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lqkm6spriyla7cf0afg1.png" alt="Result code exam" width="880" height="1904"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The post provides code examples and images to illustrate how to use the Stack widget in Flutter and how to create a similar component in React Native. The source code for the example is available on Github for you to check out.&lt;/p&gt;

&lt;p&gt;Overall, the post provides clear and concise instructions for using the Stack widget and creating a similar component in React Native.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;br&gt;
You can check source code at &lt;a href="https://github.com/bonnguyenitc/react-native-starter"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>mobile</category>
      <category>typescript</category>
      <category>stack</category>
    </item>
    <item>
      <title>Build Bingo Online with NextJS 13 and Supabase</title>
      <dc:creator>bonnguyenitc</dc:creator>
      <pubDate>Fri, 06 Jan 2023 02:47:27 +0000</pubDate>
      <link>https://dev.to/bonnguyenitc/create-bingo-online-with-nextjs-13-and-supabase-57cd</link>
      <guid>https://dev.to/bonnguyenitc/create-bingo-online-with-nextjs-13-and-supabase-57cd</guid>
      <description>&lt;p&gt;Hi everybody, I try to make a Bingo game with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NextJS 13, Chakra UI for font-end.&lt;/li&gt;
&lt;li&gt;Supabase for back-end(authenticate, database).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://bingo-online-phi.vercel.app/" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/bonnguyenitc/bingo-online" rel="noopener noreferrer"&gt;Source code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Authenticate with Supabase OAuth.&lt;/li&gt;
&lt;li&gt;Realtime data.&lt;/li&gt;
&lt;li&gt;Create a round to play.&lt;/li&gt;
&lt;li&gt;Create a team to play together.&lt;/li&gt;
&lt;li&gt;Join the game by code invitation or entry code of game.&lt;/li&gt;
&lt;li&gt;Role: Host, Player&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hope we have a fun game.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Demo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Step 1: The host create a game&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffallvwtnti7i8r7asx6n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffallvwtnti7i8r7asx6n.png" alt="step-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: The host copy code send to player&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0f1gdtt6s4kiwh0f1tap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0f1gdtt6s4kiwh0f1tap.png" alt="step-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Player enter code to join game&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jq155md6r35du8vaooa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6jq155md6r35du8vaooa.png" alt="step-3"&gt;&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh7yw6a4wjccwc15xlmz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh7yw6a4wjccwc15xlmz.png" alt="step-3-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 4: The host click Bingo button to generate number&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5j3er0j5wbfhpcdppn1h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5j3er0j5wbfhpcdppn1h.png" alt="step-4"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>realtime</category>
      <category>supabase</category>
      <category>react</category>
    </item>
    <item>
      <title>New React Native Template 2023 for start new app. I choice it</title>
      <dc:creator>bonnguyenitc</dc:creator>
      <pubDate>Sat, 03 Dec 2022 03:20:26 +0000</pubDate>
      <link>https://dev.to/bonnguyenitc/help-me-improve-codebase-for-react-native-boilerplate-33nm</link>
      <guid>https://dev.to/bonnguyenitc/help-me-improve-codebase-for-react-native-boilerplate-33nm</guid>
      <description>&lt;p&gt;Hi everybody, i just build a boilerplate React Native for my work, i can start new app a way easy. I'm inherited and inspired by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/alan2207/bulletproof-react"&gt;bulletproof-react&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/infinitered/ignite"&gt;ignite&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zj23aG8c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ligjv6396ykydiy5ixo5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zj23aG8c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ligjv6396ykydiy5ixo5.gif" alt="Demo" width="296" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I create many component to help build UI easier: Col, Row, Align, Stack, Positioned, Card, Image, If, Center, AppBar,... &lt;/p&gt;

&lt;p&gt;To can build it i use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React Native&lt;/li&gt;
&lt;li&gt;React Navigation 6&lt;/li&gt;
&lt;li&gt;Zustand&lt;/li&gt;
&lt;li&gt;Typescript&lt;/li&gt;
&lt;li&gt;Local storage with MMKV&lt;/li&gt;
&lt;li&gt;Axios&lt;/li&gt;
&lt;li&gt;Flipper&lt;/li&gt;
&lt;li&gt;Multiple environment development with react-native-config&lt;/li&gt;
&lt;li&gt;Modal, popup with react-native-modals&lt;/li&gt;
&lt;li&gt;Theme with @shopify/restyle&lt;/li&gt;
&lt;li&gt;Form validation with react-hook-form, yup&lt;/li&gt;
&lt;li&gt;Multi language with react-i18next, i18next&lt;/li&gt;
&lt;li&gt;Splash with react-native-bootsplash&lt;/li&gt;
&lt;li&gt;Error Boundary&lt;/li&gt;
&lt;li&gt;Font setting&lt;/li&gt;
&lt;li&gt;Format source with eslint, prettier&lt;/li&gt;
&lt;li&gt;Animation with moti, reanimated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any developer seeing this post can give me advice to improve my repository. Really thank you very much.&lt;br&gt;
Please checkout: &lt;br&gt;
&lt;a href="https://github.com/bonnguyenitc/react-native-starter"&gt;https://github.com/bonnguyenitc/react-native-starter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>ios</category>
      <category>android</category>
      <category>react</category>
    </item>
  </channel>
</rss>
