<?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: JJ_Juarez</title>
    <description>The latest articles on DEV Community by JJ_Juarez (@jjuarez5).</description>
    <link>https://dev.to/jjuarez5</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%2F272230%2F4362fc2a-7254-4254-b489-5ce869f4e1bd.jpg</url>
      <title>DEV Community: JJ_Juarez</title>
      <link>https://dev.to/jjuarez5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jjuarez5"/>
    <language>en</language>
    <item>
      <title>Navigating Expo 📲🫠</title>
      <dc:creator>JJ_Juarez</dc:creator>
      <pubDate>Mon, 20 May 2024 04:37:37 +0000</pubDate>
      <link>https://dev.to/jjuarez5/navigating-expo-5h7l</link>
      <guid>https://dev.to/jjuarez5/navigating-expo-5h7l</guid>
      <description>&lt;h1&gt;
  
  
  Greetings...All
&lt;/h1&gt;

&lt;p&gt;I'm back with yet another post covering different technologies I'm using on my quest to build my first mobile app!📱😀 Let's get right to it!&lt;/p&gt;

&lt;h2&gt;
  
  
  Using Expo
&lt;/h2&gt;

&lt;p&gt;I covered Expo a little bit in my last post &lt;a href="https://dev.to/jjuarez5/react-native-an-introduction-4l0f"&gt;React Native: An introduction&lt;/a&gt;, but I wanted to talk about it more here and how it's being used in my project. First off, Expo is a powerful framework that has tons of capabilities and functionality for developing your project. It also has pretty decent &lt;a href="https://docs.expo.dev/get-started/introduction/"&gt;documentation&lt;/a&gt; about how to use it.&lt;/p&gt;

&lt;p&gt;I was introduced to it a few years ago when taking a LinkedIn Learning course over React Native called React Native Fundamentals with Eve Porcello (at least I &lt;em&gt;think&lt;/em&gt; that's the title!😅). You can install the Expo Go app on your mobile device of choice to see your app being developed in real time. It auto-refreshes every time you save a file, and outputs info in the console. You can create an app in just a few commands like so:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;create-expo-app my-app&lt;/code&gt;&lt;br&gt;
&lt;code&gt;cd my-app&lt;/code&gt;&lt;br&gt;
&lt;code&gt;npx expo start&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  That simple!
&lt;/h3&gt;

&lt;h2&gt;
  
  
  Building in Expo
&lt;/h2&gt;

&lt;p&gt;Once you start using packages that require higher permissions for your device, you have to install/use the Expo Dev Client npm package. At a high level, in order to run these newly installed &lt;em&gt;higher privilege&lt;/em&gt; packages, you have to install EAS and by running the following: &lt;br&gt;
&lt;code&gt;npm install -g eas-cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;eas login&lt;/code&gt; (Your Expo account login)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;eas build:configure&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then finally&lt;/p&gt;

&lt;p&gt;&lt;code&gt;eas build --platform platform&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This will create a build which you can monitor via conveniently output url in the console. Even if there are errors in your build, the logging is robust enough to pinpoint the root of the problem.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftelplndacj9x6wza1jj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftelplndacj9x6wza1jj5.png" alt="Image description" width="800" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I still have a good bit to learn about Expo, as it is a really &lt;strong&gt;powerful&lt;/strong&gt; tool and can at times be a lot to navigate. I was able to create a development build to run on the android simulator, but an iOS build has been a little tricky. I think I have to download the dev build to install onto my iPhone, but haven't quite gotten there yet. &lt;/p&gt;

&lt;p&gt;Does any of this make sense? Is there anything specific you might have questions about? Y'all let me know in the comments! 👇🏽&lt;/p&gt;

&lt;p&gt;Until next time 🤙🏽🤙🏽&lt;/p&gt;

&lt;p&gt;Peace,&lt;/p&gt;

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

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>mobile</category>
    </item>
    <item>
      <title>React Native: An introduction</title>
      <dc:creator>JJ_Juarez</dc:creator>
      <pubDate>Wed, 15 May 2024 21:17:24 +0000</pubDate>
      <link>https://dev.to/jjuarez5/react-native-an-introduction-4l0f</link>
      <guid>https://dev.to/jjuarez5/react-native-an-introduction-4l0f</guid>
      <description>&lt;h1&gt;
  
  
  Welcome back!
&lt;/h1&gt;

&lt;p&gt;On my last post I talked about how I recently started learning react native to build an idea I've had for a mobile app, this time around I want to dive a little deeper into &lt;a href="https://reactnative.dev/"&gt;react native&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating the app📱
&lt;/h2&gt;

&lt;p&gt;If you're familiar with React.js, you probably know about the &lt;a href="https://create-react-app.dev/"&gt;create react app&lt;/a&gt; tool. It's a &lt;strong&gt;great&lt;/strong&gt; scaffolding tool that helps spin up a new project in React.js by taking care of all the boiler plate code for you. Similarly, RN (React Native) has the &lt;a href="https://reactnative.dev/docs/environment-setup#start-a-new-react-native-project-with-expo"&gt;Expo&lt;/a&gt; tool that you can use to spin up a new project. So instead of:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;create-react-app my-app&lt;/code&gt;,&lt;/p&gt;

&lt;p&gt;you would use the following command instead:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx create-expo-app@latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To run the app, you will need either an iOS or Android simulator, &lt;br&gt;
or you can download the Expo client app onto your device. After filling out the relevant details, you can spin up the project by running &lt;code&gt;npx expo start&lt;/code&gt; inside of the project directory. I &lt;strong&gt;&lt;em&gt;highly&lt;/em&gt;&lt;/strong&gt; recommend this &lt;a href="https://www.youtube.com/playlist?list=PLC3y8-rFHvwhiQJD1di4eRVN30WWCXkg1"&gt;React Native tutorial playlist&lt;/a&gt; by &lt;a href="https://www.youtube.com/@Codevolution/featured"&gt;Codevolution&lt;/a&gt; especially if you're into bite-sized, "micro-learning". It was a great intro into RN.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic React Native Components &amp;amp; Libraries
&lt;/h2&gt;

&lt;p&gt;As I mentioned, I'm learning this framework as I go, but with my previous experience with React, it's not bad &lt;strong&gt;&lt;em&gt;at all&lt;/em&gt;&lt;/strong&gt;! You're basic components include the &lt;code&gt;&amp;lt;Text&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;View&amp;gt;&lt;/code&gt; components, and that's really all you need to get started. The &lt;em&gt;Platform&lt;/em&gt; library is super useful when getting device details for either iOS or Android devices as each type has its own nuances. The best part of that is differentiating between the two is taken care of "under the hood", so you are able to implement the code you need and it will be used by both almost seamlessly. Other components like &lt;code&gt;&amp;lt;SafeAreaView&amp;gt;&lt;/code&gt; come in &lt;em&gt;super&lt;/em&gt; clutch so you don't have to worry about things going off-screen during development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it all together
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  import React from 'react';
import {Text, View} from 'react-native';

const HelloWorldApp = () =&amp;gt; {
  return (
    &amp;lt;View
      style={{
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
      }}&amp;gt;
      &amp;lt;Text&amp;gt;Hello, world!&amp;lt;/Text&amp;gt;
    &amp;lt;/View&amp;gt;
  );
};
export default HelloWorldApp;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This right here will get you the classic Hello World output on your device. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's it!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;I took these fundamentals and starting building my app. With the help of the Github Copilot and ChatGPT, the opportunities are endless. &lt;/p&gt;

&lt;p&gt;I've already implemented the main screen, as well as a settings page that can take you to your actual device settings, importing certain data from your device, and adding data to the app. I'm testing implementing ads using AdMob by Google, which conveniently has an NPM package that includes a ton of useful functionality.&lt;/p&gt;

&lt;p&gt;I've been using my own iPhone and an Android simulator to test out the design of the app, which even though I'm not a designer, is impressive if I do say so myself. Some of the major differences that I see are having to use the Styles api, versus traditional CSS. That has taken some getting used to, although very doable. I have a &lt;code&gt;TODO:&lt;/code&gt; item to create a global Styles object to create my own CSS framework so to speak.&lt;/p&gt;

&lt;p&gt;I wish there was a way to see how many hours I've put in so far, but it's around 20+ if I had to guess!😅&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotchas!
&lt;/h2&gt;

&lt;p&gt;As I mentioned, the Expo client is &lt;em&gt;super&lt;/em&gt; useful in getting your idea out there to actually &lt;em&gt;see&lt;/em&gt; it, but it doesn't give you the entire picture. As with any project, you will more than likely add various NPM packages you might need depending on your use cases. For some of the packages, especially the ones accessing certain functions on your device, you will need the Expo Dev Client package. This package gives the Expo client more permissions and functionality in terms of manipulating the device. It adds a few config files, as well as the process of building the project after certain changes are made. This is where I'm at currently, using the dev client to get pertinent device information to use for identification, as I'm not necessarily requiring users to login.&lt;/p&gt;

&lt;p&gt;The next piece I'll be tackling is calling the backend from the front end on local. The last time I tried this I ran into some CORS issues that I eventually figured out, although it was a crazy headache to deal with at first.&lt;/p&gt;

&lt;p&gt;Until next time,&lt;/p&gt;

&lt;p&gt;-JJ ✌🏽&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>mobile</category>
      <category>reactnative</category>
    </item>
    <item>
      <title>My first tech blog😅</title>
      <dc:creator>JJ_Juarez</dc:creator>
      <pubDate>Tue, 14 May 2024 22:55:05 +0000</pubDate>
      <link>https://dev.to/jjuarez5/punishing-myself-2kg3</link>
      <guid>https://dev.to/jjuarez5/punishing-myself-2kg3</guid>
      <description>&lt;p&gt;&lt;code&gt;Hello World!&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I know, &lt;strong&gt;&lt;em&gt;real original&lt;/em&gt;&lt;/strong&gt; 🙄, but I had to as this is my inaugural post on &lt;a href="https://dev.to"&gt;Dev.to&lt;/a&gt;! I've been toying with the idea of writing a blog for some time now, and figured since I'm starting a new project, this is the best time for it. I've been somewhat familiar with React.js for a while now and wanted to make the jump over to &lt;a href="https://reactnative.dev/"&gt;React Native&lt;/a&gt; to capitalize on an idea I've had for a few years. I'll be blogging about the progress on my app and figured this is the best spot for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  About me
&lt;/h2&gt;

&lt;p&gt;I've been primarily a back-end dev for the past 6 years or so, and took a non-traditional route to get here. I have limited experience with the front end in prod and thus push myself to build in it when I can. I am by no means a designer, but I make do! You can check out my website &lt;a href="https://juliojuarez.io"&gt;here&lt;/a&gt; to see what I mean 😁.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Native
&lt;/h2&gt;

&lt;p&gt;React Native has definitely been fun to learn, and as always with technology, a pain in the a** sometimes. However, being familiar with React beforehand definitely helped A LOT! I really enjoy the Expo app that helps lay a solid foundation in seeing your idea come to life. I've recently gotten into dealing with the dev client side of Expo and that was initially a little challenging as it added a few extra steps to my development.&lt;/p&gt;

&lt;h2&gt;
  
  
  The app👀
&lt;/h2&gt;

&lt;p&gt;While the idea for my app isn't necessarily groundbreaking, I'm holding off on revealing what it is until it is further along in development. Luckily, that shouldn't be &lt;em&gt;too&lt;/em&gt; much longer. &lt;/p&gt;

&lt;p&gt;I was able to repurpose a backend service I previously created to suit my needs, and have the most of the functionality completed. &lt;/p&gt;

&lt;p&gt;I'm currently working on adding monetization(ads), and will be testing the end to end functionality soon (&lt;em&gt;hopefully&lt;/em&gt;). &lt;/p&gt;

&lt;p&gt;I'm a little unsure of how exactly I'm going to structure these blogs, so stay tuned. Maybe the structure will just be the friends we made along the way 😄.&lt;/p&gt;

&lt;p&gt;Until next time ✌🏽&lt;/p&gt;

</description>
      <category>reactnative</category>
      <category>webdev</category>
      <category>mobile</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
