Building a React Native app from scratch: Project overview
Tags: react, javascript, reactnative, mobile
Published: 2021-03-18 19:32:11

---
title: Building a React Native app from scratch: Project overview
published: true
description: In this series, I share my process with you as I build a React Native app from scratch. Besides, I will add tips and recommendations for each step of the process.⁣⁣
tags: react, javascript, reactnative, mobile
series: Building a React Native app from scratch
cover_image: https://i.imgur.com/rmbgdRy.png
canonical_url: https://maurogarcia.dev/posts/building-a-react-native-app-from-scratch-project-overview/
---

Do you want to learn what it takes to build a real app with React Native?⁣⁣⁣
⁣
Following my “Building a React Native app from scratch.”, I wanted to show you an overview of the whole project and tell you the story behind it.⁣

![Formal Barber booking app - Home page](https://i.imgur.com/I7KUeVy.png)
⁣
# Storytime
Back in 2015, I had never been to a barbershop before in my entire life. After doing some research, I found a well-rated barbershop near my office in Buenos Aires, Argentina. I booked my appointment through an app that let me choose the barber. I randomly picked one, and that’s how I met [@pepshc](https://www.instagram.com/pepshc/).⁣
⁣
Fast-forward to today, Andres (a.k.a “Pepe”) has not only been my barber for the last six years, but he has also become a great friend with a lot of projects in common.⁣
⁣
In 2020, Pepe decided to open his own Barbershop in Buenos Aires, and he called it “Formal.” and he recently asked me to help him build an app so their clients could book an appointment with him.⁣
⁣
# Project Overview
I wanted to keep the app simple so that it could be released as soon as possible. That’s why I thought about the main problem I wanted to solve: Clients should be able to book new appointments with a few taps. They should also be able to cancel an appointment in case of not being able to attend.⁣

------

## Sign in & Sign up

![Formal Barber booking app - Sign in and Sign up screens](https://i.imgur.com/JPbD0we.png)

These screens will allow the users to sign in / sign up using email and password or using Facebook.

I'll have to set up Facebook authentication and test a few edge cases.⁣
 
------

## Home⁣ & Forgot Password

![Formal Barber booking app - Home and Forgot Password screens](https://i.imgur.com/Q6lqBqy.png)

My goal for this screen is to guide the user’s finger to the “New appointment” button. That’s why I decided to locate it at the bottom of the screen, where anyone can easily tap it.
 
Besides, users will have all the required information for their next appointment without navigating through different screens.
 
I’m still unsure if that card will disappear or show a message where the user doesn’t have any scheduled appointment. 

Users will be able to reset their password using the “Forgot Password” and the “Reset Password” screens. 
I'll have to deal with deep linking to redirect the user to the “Reset Password” screen once they tap the email’s link.⁣⁣

------

## New appointment flow

![Formal Barber booking app - New appointment flow including three screens: Pick a service, Pick a date, and confirm your reservation](https://i.imgur.com/tt9DBTH.png)

I wanted to allow users to request a new appointment in six simple steps taps:⁣
1. Tap the “New appointment button” on the Home screen.⁣
2. Pick a service⁣.
3. Open the calendar⁣.
4. Pick a date⁣.
5. Pick an hour⁣.
6. Confirm reservation⁣.

To avoid unnecessary steps, I decided not to include any “Continue” button. The app will automatically navigate every time the user picks a service or hour.⁣

------

## Appointment list⁣ & My account

![Formal Barber booking app - Appointment list and My Account screens](https://i.imgur.com/QGx01Gr.png)

The user will only visit this screen for two reasons: ⁣
1. To cancel an upcoming appointment⁣
2. To check when was the last time they got their haircut.⁣

That’s why I decided to include a text at the top of the screen indicating how many days have passed since their last appointment, and I located the upcoming.⁣

Besides, I located the upcoming appointment at the bottom, so they could easily cancel the appointment.⁣

Users will be able to change their personal information (like phone number, name, and birthday) and logout. For now, they won’t be able to change their emails to reduce the complexity of the app.⁣

In the next post, I’ll talk about the navigation and how I use react-navigation to set up my tab bar.⁣

------

If you want to dig deeper into the code, check out my GitHub repo:⁣⁣

{% github mauro-codes/formal-booking %}

# Let me know what you think

I’ll love to hear your thoughts about this project! Is there any specific topic you want me to tackle during the series? Let me know in the comments below.⁣