Skip to content
Home » META » Meta Front-End Developer Professional Certificate » Course 8: Front-End Developer Capstone » Module 1: Starting the project

Module 1: Starting the project

In this module, you’ll get started with the capstone project. This will include a brief recap of, and links to, content in the React course you have already completed.

Learning Objectives

  • Set up a React application
  • Commit the project to a Git repository
  • Plan the UI/UX

Project info


Video: Introduction to the course

This course guides you through building a responsive web application for Little Lemon’s restaurant reservation system.

Here’s a breakdown:

  • Problem: Little Lemon’s current reservation system is confusing and outdated.
  • Solution: You’ll build a modern, user-friendly web app using React.
  • Structure: The course is divided into four modules:
    • Starting the Project: Setting up your environment, reviewing React basics, and understanding UX/UI principles.
    • Project Foundations: Creating the HTML structure, using CSS grid for responsiveness, and styling the website.
    • Project Functionality: Implementing the table booking system with React, focusing on UX, form validation, and writing unit tests.
    • Project Assessment: Reflecting on your learning, performing a self-review, and peer-reviewing other students’ projects.

Key Skills You’ll Learn:

  • React development
  • Semantic HTML
  • CSS grid
  • UX/UI design principles
  • Form validation
  • Unit testing
  • Accessibility considerations

By the end of this course, you’ll have a functional web app that solves Little Lemon’s reservation problem and demonstrates your front-end development skills.

Welcome to the Capstone
Project course of the front end
developer program. The Capstone project at the
center of this course is based on a scenario involving the restaurant
Little Lemon. In particular, the owners of
Little Lemon have received negative feedback on the reserve a table function on the
Little Lemon website. Users are confused
about how to use it and unhappy with how
it looks and functions. That’s where you come in. In this course, you
will learn how to build a responsive web app and
demonstrate multiple skills by coding a modern front
end application that allows users to reserve a table for the Little
Lemon restaurant. You will be guided through the process of building the app, combining all the skills
and technologies you’ve learned throughout this program to solve the problem at hand. Now, you may be wondering how
this course is structured. Well, the course consists of four modules:
starting the project, project foundations, project functionality,
and project assessment. In the first module, starting the project,
you’ll do exactly that. Get started with the
capstone project. This will include a
brief recap of and links to content in the React course you have already completed, you’ll start by setting up a coding environment,
a React project, and a Git repository for
the project on GitHub so you are ready to proceed with the development phase
of the project. You’ll also briefly recap UX and UI linking to content in a
previously completed course, principles of UX and UI. You will employ UX, UI methodologies
in your project, including preparing
the wireframes and applying design
fundamentals using Figma. In Module 2, which covers
the project foundations, you’ll use semantic HTML, meta tags and Open
Graph Protocol to create a modern HTML
structure for the web app. You will also use CSS grid and other CSS styling to
set up a responsive, clear, and inviting website. Not to mention your recap
the basics of React. Module 3 is all about the
functionality of your project. You’ll code the table
booking system using React. The importance of UX and form validation will
be covered with an exercise where
you will validate forms in your app and
write unit tests. Plus accessibility and UX, UI usability evaluation
will be covered along with an exercise in both to ensure your interface
complies with both issues. In the final module,
project assessment, you’ll have the chance
to reflect on all you have learned and
your accomplishments. More specifically, you’ll have the opportunity to
perform a self-review of your project and a peer review of other learners solutions for the little lemon
reserve a table web app assessing the projects
in terms of usability, accessibility, design, and code. With all of this to
look forward to, I’m sure you are eager to begin. Let’s get started
with your project.

Reading: Course syllabus

Reading

Setting up the project


Video: Setting up the project

Here is a summary of the lesson:

Setting Up for the Capstone Project

Objective: Set up a coding environment for the capstone project, including a React project with Git version control.

Requirements:

  • Node.js and npm installed on your machine
  • OS that allows interaction with Node.js and building projects
  • IDE or code editor (preferably VS Code) installed and set up for React and Git
  • Git installed on your machine and a GitHub account
  • Create-react-app npm package to build a boilerplate React app

Understanding:

  • Node.js and npm basics
  • How Node.js works with React at a high level
  • Purpose of package.json
  • How React app code gets compiled from JSX to JS
  • Basics of Git, including tracking files locally, staging area, remote repository, and Git commands (add, commit, push, log, branch)

Tasks:

  • Set up a React project using create-react-app
  • Initialize a Git repository for the project
  • Make updates to the starter React app and track changes with Git
  • Use Git commands to commit and push changes to the remote repository
  • Keep the remote origin and local folder in sync

Importance:

  • Having a project that is always ready to accept more contributors if needed.
When you build a new app using the create-react-app npm package, it automatically adds an initial Git commit so that you can track your project with Git.

True

Correct! When you build a React project using the create-react-app npm package, it comes with a local Git setup and an initial commit added.

Now that you’ve been
introduced to the course, it’s time to start setting
up for the capstone project. That’s why throughout
this lesson, you’ll revisit several concepts related to the setting
up of that project. First, you’ll need to
make sure that you have your coding
environment ready for work. Specifically, this
means that you have the correct version of
Node.js and npm installed on your machine
and are working in an OS that allows you to freely interact with
Node.js and build projects. This means that you
need a computer where you can perform
actions freely, that is, a computer with
administrator access. You have an IDE or a code editor installed and setup to
work with React and Git. VS Code is
preferred as this is the editor that’s been used
in other Front-End courses. You have Git installed on
your machine and you have a GitHub account so you can add a remote repository
for your code. You’ll be using that
create-react-app npm package to build a
boilerplate React app, which is a minimal starter React app with starting code
that you can develop from. Setting up a React project
like this implies that you understand what
Node.js and npm are, how Node.js works with
React at a high level, and how package.json works
and what its purpose is. You should also understand various concepts related to
the code of a React app, including how a React app’s
code gets compiled from JSX, which the browser
doesn’t understand, to JS, which the browser
does understand, bundled locally,
and served locally with the help of a module
bundler such as webpack. This boilerplate React app
is the starting point for your capstone project
and will form the foundation of most of the work you’ll complete
in the process. As you’re probably aware, when you build a
React project using the create-react-app
npm package, that project comes with a local Git setup and an
initial commit added. This makes it a bit easier to set up the remote repository. To be able to work with
this Git setup properly, you’ll need to revisit
and make sure you have at least a basic
understanding of the following concepts: Git and how it tracks
files locally, the staging area in Git, the remote repository, how to set up a repository, and how to use the Git add, Git commit, Git push, Git log, and Git
branch commands. In this lesson, you’ll also have a chance to revisit how
version control works, and you’ll set up
a Git repository for your React capstone app. You’ll put this into practice
by making updates to the starter React app and tracking those updates with Git. You’ll use some of
the Git commands mentioned earlier to commit your code changes
and push them to the remote Git repository
from your local folder. Remember, you need to
keep doing this so that your remote origin and your
local folder are in sync. This is important because it makes sure that
you have a project that is always ready to accept more contributors if needed. Now, let’s get started with
setting up your project.

Reading: Recap: Version control

Reading

Reading: Exercise: Setting up the repository

Reading

Reading: Recap: React set up

Reading

Reading: Exercise: Setting up the React project

Reading

Reading: Exercise: Committing the project

Reading

Practice Quiz: Knowledge check: Setting up the project

Which of the following command allows you to quickly create a React project?
npx create-react-app
npx create-react-app app-name
npm build
npm test

Before pushing your changes to a Git repository, you need to commit the changes first.
True
False

Which of the following commands sends the local change to a remote git repository like GitHub?
git push
git fetch
git commit
git tag

What is the purpose of using this ES7+ React/Redux/GraphQL/React-Native extension in VS Code?
It provides quick JavaScript snippets to help you code faster in your React and GraphQL-based projects.
It helps you to debug the React and GraphQL-based projects.
It helps to convert your code for older JavaScript engines

In a project, which directory contains all the dependencies?
src
build
node_modules

Reading: Additional resources

Reading

Planning the UX and UI


Video: Planning the UX and UI

Improving the User Experience (UX) and User Interface (UI) of Little Lemon’s Website

The owners of Little Lemon want to resolve the issue of customers being unable to easily reserve a table on their website. To achieve this, the principles of UX and UI will be applied to the website’s functionality.

The UX/UI Process

The UX/UI process consists of four stages:

  1. Planning: Gathering user objectives and goals, and determining the project’s overall purpose.
  2. Design: Turning facts and information from the planning stage into reality, producing design structures and sketches for approval and testing.
  3. Development: Completing coding and programming tasks, testing, and implementing the results from the previous step.
  4. Launch: Delivering the final product, a functional website or mobile application.

The Importance of UX and UI

UX is an iterative process that involves post-launch feature testing and improvements. A good UX is crucial for a product’s success, as it can increase sales and keep customers coming back.

UI, on the other hand, is about creating a visually appealing and user-friendly interface. A good UI is essential for a positive user experience, as it can make or break a product’s success.

The Difference between UX and UI

UX is about creating a product that is usable and provides a good experience for the user. UI is about creating a product that is visually appealing and easy to use.

Example of Good UX and Bad UI

A product that looks lovely but is challenging to use is an example of a great UI and poor UX. On the other hand, a product that is incredibly usable but unpleasant to look at is an example of a great UX and poor UI.

The Goal of the Lesson

The goal of this lesson is to create a fantastic UX and UI for the reserve a table function on Little Lemon’s website. This will be achieved through readings, exercises, and quizzes that will guide you through the process of creating a user-friendly and visually appealing interface.

The Tools and Techniques Used

The tools and techniques used in this lesson will include:

  • Figma: A design tool used to create wireframes and prototypes.
  • User research: Conducting research to understand the user’s needs and goals.
  • Persona and user journey map: Creating a persona and user journey map to help guide the design process.

By the end of this lesson, you will have a better understanding of the UX/UI process and how to create a user-friendly and visually appealing interface for the reserve a table function on Little Lemon’s website.

What is the purpose of the planning stage in the UX UI process?

To gather the user’s objectives and goals and determine and map the overall purpose of a project.

The owners of Little Lemon learn that their customers
are frustrated, that they can’t easily reserve
a table on their website. They want to resolve
this issue so that they can plan staff
and supplies, not solely rely on walk-ins, and give their diners
a great experience. You can help the owners
of Little Lemon achieve this goal by applying
the principles of UX UI, user experience and
user interface, to the current
website’s functionality for reserving a table. In this lesson, you will
have a brief recap of the principles of UX UI
covered in a previous course. You will produce the wireframes, some components
on a prototype of the Little Lemon online reserve a table function using Figma. In response to user research
that was conducted, a persona and user journey
map has been created to help you on your way to
resolving the issue with the Little Lemon web app. The user journey map has identified opportunities
for improvement, such as allowing
customers to select seating options, add
additional comments, and receive a
confirmation email, as well as select the date and time and the number of diners. Did you know that several stages make up the UX UI process? These include the planning, design, development
and launch phases. Arguably, the most
crucial stage in this UX UI process is
the planning phase, which includes gathering the
user’s objectives and goals and determining and mapping the project’s overall purpose. The design phase is
where designers turn the facts and information from the planning stage into reality. This stage must produce design structures and sketches
for approval and testing. Then follows the
development phase where coding and programming
tasks are completed, as well as testing. This phase essentially involves the implementation
of the results acquired during
the previous step. In your case, producing a functional website
or mobile application, the product is delivered
during the launch phase. You will start by exploring UX and learning how
following the UX process will enable you to
solve the issue with the online booking feature
of the Little Lemon website. Resolving these issues
will likely increase sales and keep customers
coming back for more. Keep in mind that because a product can
constantly be improved, UX is an iterative process where post-launch feature testing and improvements will
last indefinitely. There isn’t a specific
design process for UI, but it’s still crucial. When it’s done correctly, consumers usually
don’t even notice it. But if it’s not, they will have a negative experience and most will leave the site
and not come back. To clarify the
purpose of UI and UX, an example of a fantastic UI and bad UX is something
that looks lovely, but it’s challenging to use. While something
that is incredibly usable but unpleasant to look at is an example of a
great UX and poor UI. You will now be taken through the steps to create
both a fantastic UX and UI for the reserve a table function in this
lesson via readings, exercises and quizzes.
Let’s get to it.

Reading: Recap: Principles of UX and UI

Reading: Exercise: Wireframing the project

Reading: Exercise: Designing components

Reading: Exercise: Applying design fundamentals in Figma

Reading

Practice Quiz: Knowledge check: Planning the UX and UI

UX is an iterative process that solves usability problems.
True
False

What is a wireframe in UX design?
It’s a complete design of the product
It’s a 3D printed view of the project
It’s representation of the interface concerned with placement and hierarchy of content and functionalities.
It’s a simulation of the final functional product

Which of the following statements about designing forms are true?
Time should be spent on good form design to create an appealing and approachable form that represents the brand.
Forms are only used to collect information for the stakeholder’s benefit, so it is not worth putting effort into designing them.
It is important to design forms from the user’s perspective to create a good user experience.
Forms are not an important part of user experience and can be designed quickly without considering the user’s needs.

Which of the following is true about responsive design? Select all that apply.
Responsive design only applies to desktop devices and is not necessary for mobile devices.
Responsive design is a technique that automatically scales and rearranges the layout of a website or app to fit the screen size and resolution of the device it is being viewed on.
Responsive design involves creating separate versions of a website or app for different devices.
Responsive design is a design approach that ensures a website or app looks good on all devices, regardless of screen size or resolution.

How many columns are generally used in a desktop grid system?
12
4
8

Video: Module summary: Starting the project

  • Introduced to the course content and syllabus, and met with peers
  • Set up project environment with React.js, Node.js, and npm
  • Installed IDE/code editor and Git, and set up GitHub account
  • Revisited UX/UI principles and established UX/UI process
  • Defined project scope and purpose by gathering user objectives and goals
  • Used Figma to design wireframes for the “Reserve a Table” function on the Little Lemon website
  • Focused on usability and created page layouts, addressing functionality, layout, creative, and branding aspects
  • Created reusable components in Figma to ensure consistency in design
  • Enhanced wireframes with Little Lemon’s style guide, adding brand colors, images, buttons, and text
  • Iterated on design based on user and client feedback
  • Now ready to begin coding the project with a solid design foundation.

In this module you have come a long
way in addressing the issues users of the Little Lemon website have been
facing when trying to reserve a table. You began with an introduction to
the course content and the syllabus, and had an opportunity to meet your peers. You then moved on to setting up your
project to ensure you use the right tools for developing effective and
efficient code, and ultimately the successful
development of your web app. So you have set up your coding
environment, react.js, a JavaScript library used in web development to
build interactive elements on websites. You now have the correct version of
node.js and npm installed on your machine and can now work with an operating system
that allows you to interact with node.js and build the Little Lemon project freely
using the create-react-app npm package. You have an IDE or a code editor
installed and set up to work with react. Git is installed on your machine and your GitHub account is set up allowing you
to add a remote repository for your code. The principles of UX and
UI have been revisited, and your UX UI process has been established. The scope and the project’s purpose have been defined by
gathering the user’s objectives and goals. You have begun the UX UI
process using Figma, a highly scalable design
tool based on vectors. It’s browser based architecture is clever
enough to save your work as you go, and even continue working if your
Internet connection is briefly lost. You design the project wireframes using
Figma which clarify the reserve a table function on the Little Lemon website. During this lesson usability
was pushed to the forefront and your page layouts were showcased. The website’s functionality and layout
as well as creative and branding aspects were addressed one at a time, allowing
the owners and the Little Lemon website users to provide early feedback,
saving you time in the long run. Components have been created in Figma,
elements you were able to reuse across your design, helping you to create and
manage consistency in your proposed solution for reserving a table
on the Little Lemon website. You also fleshed out your wireframes using
Little Lemons style guide, enhancing them with brand color, adding images,
buttons, text and making them interactive. Since you UX is an iterative process
based on user and client feedback, you may also have had to
iterate at this stage. In this process, your ideas
are constantly refined into something approaching a final design solution. Having set up your coding environment and
a set of designs for the project created, you’re in a fantastic position
to begin coding the project. Well done.

Graded Assignment: Module Quiz: Starting the Project

Which Git command can be used to show the history of commits?
git commit
git status
git log
git history

Which one of the following Git commands is used to get the latest changes to source code from a remote repository?
git remote
git commit
git pull
git fetch

After pushing your latest code changes to GitHub, what is usually a good idea to do next?
Delete the branch since you won’t need it anymore.
Checkout a new branch to continue working on the code.
Check that the changes are present on GitHub.

Which one of the following describes the purpose of create-react-app?
To test React components.
Build and deploy the current react app from source.
Set up React in a new project.
Add React to an existing project.

What’s the importance of the node_modules folder for a React app built using the create-react-app npm package?
It is used by the npm or yarn package manager to save all the dependencies of your current project.
It is used by dependencies to save all the project’s files.
This folder is not important. In fact, it’s entirely optional.

True or False: To create a nice, smooth animation in Figma, you can use the Clever animate option.
True
False

Before you can begin wireframing, what is an important first step?
To start designing the navigation bar.
Listing the clients requirements.
To decide which color palette to use.

You have just created a new React project and are thinking about project structure. Which one of the following is a good approach to this?
Grouping by file size
Grouping alphabetically
Grouping by features
Grouping by name

To host a React project, what needs to be uploaded to your web hosting space?
A zip file of the whole project.
The test directory.
The build version of the project.
The src directory.

Which of the following items are part of the UX design process?
Market research
Empathize
User testing
Unit testing

How can you add some information about your current commit while using the git commit command?
-a
-m
-i
–amend

After a project has been set up with version control, which two commands should be used together to commit files to the staging area? Select all that apply.
git add
git push
git init
git commit

What does the git add . command do?
Commits all untracked files in the current directory.
Adds all untracked files in the current directory to the staging area.
Adds all untracked files in the home directory to the staging area.

When installing dependencies in a project from the node package manager, where are the dependencies placed in your computer?
In the lib directory inside your computer’s home directory.
In the src folder.
In the node_modules folder.

Which one of the following is true about wireframes?
Wireframes don’t need to contain fonts, colors, or images.
Wireframes need to have proper brand fonts, colors, and images.
Wireframes should serve as a prototype to the client so they can see what the finished product will look like.

When working on a React project, what troubles might you encounter if you do not have internet access?
Cannot install npm packages.
Cannot use React hooks.
Cannot locally test your web application.
Cannot save code changes.

How can you make your React project publicly available online?
Uploading the src directory of the project to a web hosting service.
Uploading a zip file of the project to a web hosting service.
Uploading the build version of the project to a web hosting service.
Uploading the test directory of the project to a web hosting service.

Reading: Additional resources

Reading