DEV Community

Cover image for Introduction to Building Apps with Creativity
Ibrahim Hudson
Ibrahim Hudson

Posted on

Introduction to Building Apps with Creativity

Apps and Their Creative Potential

- What is an app?

An app, abbreviated from the word "application", is a software program designed to perform a specific action for a user. These apps provide a myriad of services to billions of users worldwide. For companies and individuals alike, these services are delivered through the medium of app creation.

These apps are developed by software engineers and are an expression of human creation and art. When someone has a need, software developers create a product. They are one of the many integral parts of the process from app to creation. You can think of Software Engineers as artists with an easel; the medium in which we code acts as our tool, while project guidelines identify the tools we will use.

- How to take a creative approach to a complicated question?

Think of a problem you have. Can it be solved if you have an app? Most modern problems can often be solved at the tap of a button. Take Uber, for example, the Taxi services provided to people in large cities have been in place for generations, but were limited to the meccas of our societies. When apps became widespread and the knowledge required to build them became more accessible, it unlocked a new creative medium for thousands of people around the world who may not have called themselves artists. Now we use apps to creatively solve problems in the modern era. Uber asked a question, "How can we bring the Taxi Service to more people regardless of location?". They identified the canvas (human need), the tool (code/apps), and the art, which is now known as Uber.

Some people spend years learning the violin, the paint brush, the camera. Software Engineers? We learn how to code.

“If you know what you want to do and you do it, that’s the work of a craftsman. If you begin with a question and use it to guide an adventure of discovery, that’s the work of the artist." - Rick Ruben

Understanding Our Tools

- What is React Native?

React Native is an open-source framework created by Meta (formerly Facebook) for building native mobile applications for both iOS and Android using JavaScript and React. It allows developers to create user interfaces (UIs) that render to native platform UI components, meaning the apps behave and perform like natively built apps. This differs from other approaches like web-based hybrid apps, which render UIs through webviews.

React Native makes it easy for solo developers and companies to build apps for their whole user base, instead of building an app for IOS and Android natively. Additionally, it has a lower barrier to entry for web developers who already know React, as the concepts and structure are similar, such as building reusable components, allowing companies to utilize the talent they already have, thereby cutting back on costs and the time it takes to get to development. So, now that we know what React Native is, let's set up our tool.

- Getting Started: Your First Steps with Expo

Alright, we've talked about what apps are and why React Native is such a powerful choice for building them. You've got your canvas (your app idea) and your primary brush (React Native) ready to go. But before you can start painting that masterpiece, you need to set up your workspace and get your materials in order! This is where Expo comes in—it's like having your perfect palette, easel, and studio assistant all rolled into one, handling all the fussy bits so you can focus on the fun part: creating.

  • How to get started with React Native using Expo Building an app can feel daunting at first, but through Expo, we can get up and running quickly so you can focus on creating. Imagine you are a painter, we've identified the paint brush we will be using (React Native), the Canvas (our app), the colors palette you choose to use (whether you choose TypeScript or JavaScript), finally, the palette (aka the object you hold your different paint colors on) is Expo.

Expo provides a framework and platform that simplifies the development process by:

  • Handling Native Code: As a developer, you no longer need to touch Xcode and reactively Swift or Android Studio for basic projects.
  • Easy Testing: Utilizing Expo, you can test your app in real time on your own device through the Expo Go app.
  • Ready-to-Use Features: Without much additional configuration, Expo gives you access to native components such as a device's camera, location, and push notifications.

To reap the benefits of Expo, you need a few prerequisites:

  • Node.JS
  • Expo Go Mobile App

With those two items in place, we can now start our setup.

  1. Download the Expo Command Line Interface (CLI)

Open your terminal and run the command:

npm install -g expo-cli 
Enter fullscreen mode Exit fullscreen mode

This will install the Expo CLI globally on your system, allowing you to use it on your future projects without needing to redownload.

  1. Create a New Expo Project
npx create-expo-app@latest YourAppName
Enter fullscreen mode Exit fullscreen mode

Running this command will create a new Expo project and ask you to make a new template. For most cases, we want to use the blank option.

  1. Navigate to Your Project Directory and Start the Development Server
cd YourAppName
npx expo start
Enter fullscreen mode Exit fullscreen mode

These commands will start your development server and open the Expo DevTools in your web browser, and display a QR code in your terminal for you to use to access the Expo Go app on your device.

Disclaimer: Your computer and phone need to be on the same wifi network. Sometimes, due to your wifis settings, there can be security/connection issues. In the event this happens, use this command instead.

npx expo start --tunnel
Enter fullscreen mode Exit fullscreen mode

That's it! You can now start developing your first app!

How to Develop Creatively

"The act of creating is not about what we make, but about who we become in the process. The work is a mirror, reflecting our growth, our fears, our triumphs, and our understanding." - Rick Rubin

When developing the steps you take to create a program are paramount to its outcome. Though just as important, it affects who you become during the process. Often times as a developer, the mindset we develop throughout our careers and the key component that is vital to our success, is the ability to solve problems; This alone is inherently a creative endeavor.

Just looking at the LeetCode problem you solved today, if you haven't gotten to it, your solution was one of a thousand. Within the solutions, you notice all of the different ways you could've approached a problem. All of these different solutions we're the output of the user's creative approach.

When a new app, such as Uber, is released, it does not mean that Garrett Camp and Travis Cordell Kalanick (Creators of Uber) solved a problem never solved before. Instead, they solved a persistent problem with a creative solution.

They personally came across the issue of finding a ride in France, and applying their skills as creators and developers, they built the Uber App. First starting off as a luxury black car service, they later ideated and transformed Uber into what it is today.

They used their skills as a developer to solve a problem in a creative manner. Developers are artists, and just like an artist, it is not just about solving an issue or working as an employee, but to use the skills available to you so that you can leave an impression on humanity.

"The work exists in the world to be experienced. And through that experience, it changes the world."

You, as an artist and a developer, have the power to change the world using React Native. You can influence change in your life and others. So, ideate, build apps for yourself, then share them with the world.

Top comments (0)