Bookstore E-Commerce Platform With MERN Stack
Bookstore E-Commerce Platform With MERN Stack
MERN STACK
Project report submitted in partial fulfillment of the requirement for the degree of Bachelor of
Technology
in
Computer Science and Engineering/Information Technology
By
(SHAAN SRIVASTAVA (191289))
Under the supervision of
(Mr. Nishant Sharma)
Assistant Professor, Grade II
To
I hereby declare that the work presented in this report entitled “ Bookstore: E-commerce
platform with MERN Stack” in partial fulfillment of the requirements for the award of
the degree of Bachelor of Technology in Computer Science and Engineering/ submitted
SHAAN SRIVASTAVA
191289
This is to certify that the above statement made by the candidate is true to the best of my
knowledge.
(Supervisor Signature)
Supervisor Name: Mr. Nishant Sharma
Designation: Assistant Professor (Grade II)
Department name: Computer Science
Dated:
I
II
ACKNOWLEDGEMENT
Firstly, I express my heartiest thanks and gratefulness to almighty God for his divine
blessing that made it possible for us to complete the project work successfully.
I would also generously welcome each one of those individuals who have helped me
straight forward or in a roundabout way in making this project a win. In this unique
situation, I also want to thank the various staff individuals, both educating and
non-instructing, which have developed their convenient help and facilitated my
undertaking.
Finally, I must acknowledge with due respect the constant support and patience of my
parents.
SHAAN SRIVASTAVA
191289
III
Table of Content
Title Page
No.
Certificate I
Plagiarism Certificate II
Acknowledgement III
Table of Content IV
Abstract V
References 57-58
IV
ABSTRACT
The Book based e-commerce website project is a complete platform for readers and book
lovers to explore, discover, and connect with their favorite authors and books. It was
created using the MERN stack. With a contemporary, responsive design and simple user
interface, this online application offers an enjoyable user experience.
The MERN stack, which consists of MongoDB, Express.js, React, and Node.js, is used to
build the project. The application's backend is created with Node.js and Express.js, which
offer a powerful API for dealing with user requests and managing the database. The
database used to hold all the data about users, books, authors, and reviews is called
MongoDB.
The application's frontend was developed using React, which offers a fluid and dynamic
user experience. The website is responsive and mobile-friendly for use on all platforms,
including PCs, tablets, and smartphones.
Users get access to a sizable selection of books and authors to search through and
explore, add titles to reading lists, provide reviews and ratings for books, and interact
with other users who have similar interests. Authors are able to set up online accounts,
advertise their publications, and communicate with readers.
Overall, the Book Website Project, created with the MERN stack, is a great tool for book
enthusiasts to find new books, interact with authors, and meet others who share their
interests.
V
CHAPTER – 1
INTRODUCTION
1.1 Introduction:
The Book App, which makes use of the MERN stack, is a cutting-edge web
application created to meet the demands of book fans. The Node.js,
Express.js, MongoDB, and React.js components of the MERN stack are used
to build the project. Because of its adaptability, scalability, and simplicity of
usage, this stack is frequently used in web development.
The Book App offers a user interface that is easy to use, contemporary,
responsive, and intended to deliver an engaging user experience. Users may
visit the website at any time, and any devices, including computers, tablets,
and smartphones, can use it.
The Book App allows users to browse a vast library of books, experiment
with various genres, and discover fresh writers. With the help of the app,
users can easily find new books, read reviews and ratings, and interact with
other readers who have similar interests.
The Book App also has features for writers, who may use them to build
profiles, advertise their work, and engage with readers. Writers may increase
their readership, visibility, and access to constructive criticism with the aid of
modern technology.
Through the MERN stack-based Book App project, users and writers have
access to a wide-ranging platform for communication, book discovery, and
book-related trade. It is an excellent resource for readers and a successful
strategy for writers to market their writing.
1
As a result, the MERN stack-based Book App is a unique and practical tool
for readers and writers. It offers a comprehensive platform for discovering
new publications, communicating with readers, and marketing and spreading
content. Due to its extensive features and user-friendly UI, The Book App is
a vital tool for both book lovers and authors.
The issue is that there isn't an online bookshop that can provide clients the
specialized care and in-person interaction of a brick-and-mortar store while
still offering the ease of an online purchase. Most online book retailers do not
provide the elements that customers need, such as the ability to explore and
discover new books, communicate with other readers, and get individualized
suggestions.
The website has a reader community where users may interact and
recommend books, as well as a straightforward user interface and tailored
2
recommendations. The website may employ a range of social media and
marketing strategies, including email marketing and social media advertising,
to raise its profile and draw in more visitors.
1.3 Objectives:
3
● The project tries to enhance the website's search engine visibility in
order to increase its prominence in search results and attract more
visitors.
1.4 Methodology:
4
and guarantee a consistent user experience throughout the whole
website. [8]
Establish a project plan and timeline to list important project milestones
and deadlines. The resources your project will need, such as staff, gear,
and software, should be determined. You might compute the project
budget and identify potential dangers using this information. Building an
excellent book-based website often requires planning and study. To
ensure the project's success, it is necessary to identify the target
audience, specify the features and objectives of the website, and create a
thorough project plan.
5
Sassy CSS, a preprocessor for CSS, adds additional functionality to the
CSS syntax. It is an improved version of CSS that enables the
development of more sophisticated styles with less code. Given that
SCSS is a superset of CSS, every valid CSS code also qualifies as a
valid SCSS code. However, SCSS also adds new syntax, such as
functions, mixins, variables, and nesting.
Overall, SCSS may make the process of creating CSS easier and assist
you in writing more effective and manageable code. The preprocessor
required to transform the SCSS code into standard CSS, however, can
make your development process more challenging.
6
User interfaces (UIs) for web apps are made using the popular
JavaScript library React. It was developed by Facebook and made
publically available in 2013. React is now supported by Facebook and
a substantial development community.
Reusable UI components may be made by developers using React and
used in several places of an application. Simply creating complex user
interfaces is possible with these JavaScript-built components.A virtual
DOM (Document Object Model) is used by React to manage the state
of the user interface and render updates quickly.
React's essential characteristics include things like:
● Component-based architecture: With React, you can create reusable
user interface (UI) components that can be swiftly combined to create
intricate UIs.
● Declarative programming: You declare your goals and React takes care
of the implementation details in this declarative programming style.
● Virtual DOM: Performance is improved by React since it controls the
user interface's state and renders changes rapidly.
● JSX: By allowing you to write HTML-like code in JavaScript files, the
JSX syntactic extension for JavaScript makes it easier to write and
understand code.
7
using Mongoose. In order to do this, new features must be developed,
including social sharing, book search, user authentication, and
recommendation engines. [9] [10]
Express JS:
An open-source web application framework for Node.js called
Express.js is popular. It offers a complete set of capabilities that make it
easy and quick to create web apps and application programming
interfaces (APIs).
8
their project without being constrained by needlessly complex
framework features.
9
sophisticated data structures without having to conform to a set model,
unlike traditional relational databases.
MongoDB has a number of important characteristics, including:
● Integration and testing: During the integration and testing phase, the
front-end, back-end, and database components are integrated and the
functionality, performance, and security of the website are tested.
10
CHAPTER – 2
LITERATURE SURVEY
11
Publisher: International Journal for Research in Applied Science &
Engineering Technology (IJRASET)
12
design, customer support, and payment choices, that are essential for
creating a successful e-commerce website. [3]
The paper's merits are found in its thorough research of each aspect,
which offers insights into their significance and practical use. The
writers have also included helpful advice and ideas for enhancing many
parts of an e-commerce website, making it a useful tool for programmers
and companies wishing to launch or enhance their online presence.
13
because the authors give instances of how they have really been utilized
to defend websites against assaults. [4]
But there are certain restrictions on the document. It does not give
in-depth information on alternative security measures that may be
employed in addition to SDNs because its main focus is on the usage of
SDNs to safeguard websites. The report also does not include a critique
of the drawbacks of SDNs or suggestions on how to get around them.
The study looks at the variables that affect users' choices when deciding
whether to log into safe or unsecure websites. The research looks at how
users assess a website's security based on several visual signals and how
they balance the advantages and disadvantages of utilizing a certain
website. [5]
The paper's emphasis on making decisions in the actual world is one of
its advantages. To mimic how consumers actually decide what to do
when they enter onto websites, the authors conducted a lab experiment.
The study sheds light on the thought processes individuals use to decide
how secure a website should be.
The paper's utilization of a multidisciplinary approach is another asset.
To present a thorough examination of the elements influencing
consumers' judgements about website security, the writers rely on
research from the fields of psychology, computer science, and
information security. [5]
14
Publisher: Metropolia University of Applied Sciences
The paper begins by outlining the various MERN stack elements and
their significance in creating the e-commerce application. The setup of
the MongoDB database, construction of the backend using Node.js and
Express, and development of the frontend using React are all covered in
the next sections of the article. [6]
The article also discusses how JSON Web Tokens (JWTs) and
Passport.js are used to create authentication and authorization
functionality. The integration of a payment gateway using Stripe is also
covered by the author.
15
CHAPTER 3
SYSTEM DEVELOPMENT
16
● Planning and Analysis: During this phase, the project's parameters and
the needs for the e-commerce website are established. This includes
figuring out the target market, the kinds of books to sell, the payment
choices, the shipping procedures, and other aspects that must be put into
place. The website's blueprint is created once a thorough examination of
the requirements is completed. [5]
● Design: The layout, color scheme, typography, and visuals for the
website are all produced at this stage. The layout should be simple to
use, visually appealing, and navigable.
● Use a responsive design: As more and more people use the internet
from mobile devices, it's critical to make sure your MERN app is
adaptable and can adjust to various screen sizes. [6]
17
● Easy to navigate: Make sure the MERN app is simple and easy to
navigate. Users should be able to navigate the app without getting lost
and locate what they're searching for promptly.
● Provide users feedback: When users engage with various MERN app
components, provide them feedback. Give a visual confirmation, for
instance, when a button is clicked or a form is submitted. [4]
18
In addition to these many types of testing, other aspects of testing, such
as load testing and security testing, must be considered.
Demand testing is the process of analyzing an application's performance
under a heavy demand. For this, you can use programmes like Apache
JMeter or LoadRunner.
Technologies/Libraries used:
1) React-Bootstrap: In order to employ helpful React.js components, we
choose to use the React-Bootstrap framework. Speaking specifically
about the library:
React-Bootstrap, a well-known UI framework, is used to build
responsive web applications. It is a set of ready-to-use, customizable
components created with the help of the Bootstrap CSS framework.
React-Bootstrap provides a wide range of UI components, such as
navigation bars, forms, buttons, modals, and more. These React-built
elements are easily styleable and adaptable.
React-Bootstrap gives a consistent look and feel throughout your
application, making maintenance and updating easier. One of its main
benefits is this. Because the components are responsive in design, they
will adjust to different screen sizes and devices. [8]
19
2) React.js: During the front-end development stage, React is used to
create the website's user interface and client-side functionality. Making
the pages, elements, and interactive features of the website falls under
this category. [8]
React is a popular JavaScript library that is used to build user interfaces
(UIs) for internet applications. It was developed by Facebook and
released to the public in 2013. Today, React is supported by both
Facebook and a substantial developer community.
Reusable UI components that may be used in many different parts of an
application can be made by developers using React. Simple user
interface creation may be done using these JavaScript-built components.
React uses a virtual DOM (Document Object Model) to maintain the
state of the user interface and swiftly render changes.
Redux, React Router, and Material UI are just a few of the many
libraries and frameworks that React can be used with. It is also quite
extensible.
In general, React is a strong and adaptable toolkit for creating user
interfaces in online applications. It is a well-liked option among
developers due to its component-based architecture, declarative
programming, and virtual DOM.
20
4) Express.js: Express is a Node.js web framework with a lot of features
for developing online and mobile apps. It is speedy, flexible, and easy to
use. It has developed into one of the web frameworks for building web
apps that is most widely used in the Node.js community. [10[
Express provides a simple and approachable API for controlling HTTP
requests and responses. In order to improve the functionality of the web
application, middleware, which handles duties like authentication,
logging, and error handling, is also included. EJS and Pug are only two
of the many templating engines that Express supports and allows you to
employ to create dynamic HTML pages.
Express is open source, and a substantial developer community actively
contributes to and supports its development.[10]
6) Nodemailer: For sending email to the admin and user after completing
the shopping, we have used the Nodemailer module which is built in
Node.js. Email messages may be sent via a variety of transport protocols
thanks to its simple and flexible interface. Using Nodemailer makes
sending emails with HTML content, attachments, and integrated images
straightforward. [16]
21
Nodemailer supports many recipients and may send emails using a
variety of SMTP servers or services, such as Gmail. Since it supports a
wide range of email authentication techniques, such as OAuth2, it is
genuine to communicate with many email providers. [16]
One of the main advantages of Nodemailer is its capacity to handle
errors and automatically repeat failed email sending attempts.
Additionally, it might be configured to monitor email sending problems
using custom error handling algorithms or third-party error monitoring
systems.
22
8) Passport.js: A popular middleware for authentication in Node.js apps is
Passport.js. It is quite adaptable and works with a variety of
authentication methods. Passport.js is renowned for its dependability,
simplicity, and ease of usage. It offers a selection of authentication
methods, including third-party, local, and social authentication
providers. [14]
For username- and password-based authentication, which is frequently
used for online applications, a local authentication technique is utilized.
Users are authenticated through social authentication strategies using
OAuth providers like Facebook, Google, Twitter, etc. Users can also be
authenticated in Passport.js using third-party authentication services.
By offering a standard interface and combining several authentication
techniques, Passport.js streamlines the authentication and authorisation
process in Node.js apps. It simplifies the implementation of safe and
dependable authentication in apps by abstracting the specifics of
authentication from developers. [14]
9) Bcrypt: We have used the Bcrypt library for encryption and decryption
of the user passwords. For password hashing and encryption, Node.js
users frequently use the Bcrypt package. By encrypting user passwords
23
into an unbreakable, irreversible string of characters, it offers a method
for securely storing user passwords. Bcrypt creates distinct and
unexpected encrypted passwords for each user by combining salting and
hashing methods. [15]
“Verified” is a boolean variable which tells whether the user is verified or not
i.e. entered password matches the actual password or not.
Before hashing the user's password, salting includes adding a random string of
characters to it. Even if two users share the same password, the resultant hash is
unique to each of them as a consequence. The technique of hashing creates an
unchangeable string of characters from the initial password and salt. Blowfish, a
potent hashing algorithm, is used by Bcrypt to generate the hash.
24
A way to compare a plaintext password with the hashed password is also
included in Bcrypt. Bcrypt fetches the previously saved hash from the database
and compares it with the hashed version of the user's password when they log
in. The user is allowed access if they match.
Passwords may be safely stored in Node.js with the help of Bcrypt, which also
shields user accounts from theft and hacking. It is a commonly used library that
security professionals advise using to password-protect web applications.
10) Axios: A popular JavaScript package for sending HTTP requests to web
servers is called Axios. Requests are often sent from the frontend React
components to the backend Node.js server in MERN stack apps. [15]
For performing various HTTP requests, including GET, POST, PUT, DELETE,
and others, Axios offers a number of alternative ways. Here are a few succinct
descriptions of these techniques:
● GET: Data is retrieved from the server using the GET technique. To get
data from a database or an API, it is frequently used. The axios.get() function in
Axios may be used to invoke the GET method, passing the URL to be obtained
as an argument.
Example:
● POST: Data is sent to the server via the POST method. A database or an
API are frequently updated or added to using this method. The axios.post()
function in Axios may be used to call the POST method, and the data to send is
supplied as an argument.
25
Example:
● PUT: The server's existing data can be updated using this technique. The
axios.put() function in Axios may be used to invoke the PUT method, passing
the data to be updated as an argument.
Example:
● DELETE: The server's data can be deleted using this technique. The
axios.delete() function in Axios may be used to invoke the DELETE method,
passing the data to be erased as an argument.
26
Example:
axios.delete(`${process.env.REACT_APP_API_URL}/${id}`);
Folder structure:
’
Fig 3.1: Folder structure for Frontend
2) Backend: Execution of the backend folder starts from the server.js file
which is present in the parent directory of the folder and different folders
are present in the project:
Following line starts the execution of the backend code:
27
Fig 3.2: Folder structure for Backend
Controller: Contains files for functions that are to be executed for the routes hit
from the frontend.Every controller has a class and they have static methods
enclosed inside them.
Example:
28
Routes: Contains different routes and their description. Every router file
contains a “router” instance of the express module.
Example:
Services: Contains mongoose calls to the database to fetch and post data for
different controllers.Every service file has its own class and it has many static
methods inside them.
Example:
29
2) Cart Schema: It contains a collection of the cart where each cart item
has a userId field which contains the unique ObjectID of the user in the
users collection. Thus, a user is mapped with the cart item.
30
3) User Schema: The user schema is a crucial component of web
development because it enables programmers to specify the layout of the
user object and guarantee that all necessary data is appropriately
gathered and saved. The user's information must be accessed in order to
authenticate their identity and establish their degree of access to the
features and data of the application. This schema is also essential for
authentication and authorization procedures.
31
Connection file of the database:
32
Using Passport JS for google login:
You must first establish a Google API Console project and receive a client ID
and secret in order to allow Google login using Passport.js. Installing the
passport-google-oauth20 package, which offers a Google OAuth 2.0
authentication method, is the next step. [14]
33
Code:
34
Database:
35
Fig 3.5: Cart Collection
1) Authentication: First the user will have to login with his credentials. If
he does not have the credentials then he can register with a new account.
We have used Localstorage to save the data of logged in users and
protect the routes. [14]
Authentication is a crucial security mechanism that aids in guarding
against unauthorized access and safeguarding sensitive data. A website
and its data might theoretically be accessed by anybody without
authentication, which could result in data breaches, identity theft, and
other security problems.
36
Fig 3.6: Login Page
2) Books List: Books list will be displayed to the user when he is logged
in. We have tried to implement the features of a data table into the books
table without using any library. [12]
The MERN stack is only one of the many web technologies that
DataTables may be linked with. Data from MongoDB collections may
be shown using it, and users can interact with the data by using
capabilities like sorting, searching, and pagination. Overall, DataTables
offers a complete solution for quickly and easily creating sophisticated
and interactive HTML tables.
37
Developers may construct dynamic, responsive tables using DataTables
that are optimized for speed and performance. Additionally, it enables
modification of the table's behavior and look using a number of choices
and APIs. Additionally, it offers server-side processing, allowing the
table to effectively manage big datasets.
38
Main code for pagination:
39
● Tooltips: When a user hovers on the status of the book, then he can see
the quantity of book in the tooltip. Similarly he can see the email ID of
the user on hovering the donated column.
● Search Box: Users can search a particular book with the author name or
book name.
3) Book Details Page: When a user clicks on the row of a book then he
will get the details of the book. After going on the details page, the admin
can edit the book details. And also a normal user can add the book to the
cart.
40
Fig 3.10: Book Details Page
4) Cart Page: After clicking on add to cart the user can manage the
quantities of books on the cart page. He can proceed to checkout after
deciding which books to purchase. He and the admin both will receive an
email with the description of the shopping cart.
41
Fig 3.12: Email sent to the user
5) Edit Book Page: This page can be accessed only by the admin where he
can edit the details of a book.
42
6) Users List Page: This page is visible only to admin.
43
CHAPTER – 4
PERFORMANCE ANALYSIS
Performance study is necessary before developing any website, even one that
sells books on the MERN stack. Performance analysis is the measurement and
examination of several factors affecting the quickness, responsiveness, and
dependability of the website. By doing a performance study, developers may
discover and address potential issues that might be harming the website's
functionality and user experience.
There are many different methods and approaches that may be used to do
performance analysis on an e-commerce website created on the MERN
platform. One of the most well-liked methods is the use of performance
monitoring tools like Google Analytics, New Relic, or AppDynamics. In order
to provide information on how effectively a website is doing, these tools may
monitor and evaluate a range of data, such as user behavior, server response
times, and page load times.
Another method for doing performance analysis is to use load testing software
like JMeter or LoadRunner. The purpose of load testing is to assess how well a
website performs when it receives a lot of traffic by simulating a lot of
concurrent users. By performing load testing, developers may identify and
address any performance bottlenecks and scalability issues that may have an
impact on the website's performance and user experience.
44
Developers can also improve the website's code and database queries to increase
its effectiveness and responsiveness. Reduced HTTP requests, database
searches, and website CSS and JavaScript file optimisations can all contribute to
this.
One of the initial tasks in performance analysis is to carry out load testing to
evaluate how the website performs under heavy traffic. When a website is being
tested under load, several simulated users can visit it at once, and the server's
capacity, resource use, and response time are all being monitored. Using load
testing software like JMeter and LoadRunner, thorough performance data may
be generated by automating this operation.
45
Response Time of the Website:
A built-in Node.js module called perf_hooks offers a means to gauge how well
Node.js applications are performing. It is employed to gauge how long it takes
for the functions in the code to run.
Developers may detect bottlenecks and improve the speed of their code by
measuring the time taken by a particular block of code or function using
perf_hooks.
Code:
46
React Hooks:
The useEffect() hook allows developers to conduct side effects based on changes
to the state or props of the component, such as gathering data from an API or
altering the DOM, whereas the useState() hook allows developers to add state to
functional components. The useContext() hook enables developers to consume
data from the React context, but the useReducer() hook is equivalent to the
useState() hook and gives a more powerful approach of handling complex state
changes.
47
The array's first item is the state value that is in effect right now, and its second
value is a function that updates the state value. A beginning state can be
provided as an input to the useState hook. The useState hook can be used
repeatedly in a component to manage multiple state components.
48
The cleaning function can be returned by the effect function, which is executed
before the effect is rerun or after the component is unmounted. This function is
supplied as the first parameter.
Security: Some pages in the project can be accessed by admin only and some of
them can be accessed by normal users. Data of the user is being saved in the
Local Storage after logging the user into the website.
49
Similar to cookies, but with larger storage space and no expiration date, is local
storage. For web applications that often store and receive tiny quantities of data,
LocalStorage is a helpful technology because, unlike cookies, it is not
communicated to the server with each HTTP request.
Concept of Private Routes is used in the React for protecting the main pages
from unauthenticated users.
Developers may save, retrieve, and remove data using the LocalStorage API.
Key-value pairs are used to store data; a string is used as the key and any
JavaScript object may be used as the value. The LocalStorage API provides
methods for setting, retrieving, and deleting data, such as setItem(), getItem(),
and removeItem().
React Router:
A potent library for creating React single-page apps (SPAs), React Router. It
gives developers a declarative approach to build and maintain an application's
routing by letting them associate particular routes with various components that
can be displayed depending on the current URL. [8]
50
Switch components that only render the first matching route and Route
components that specify which component to render for a particular path. [8]
Along with these helpful features, React Router also provides nested routes,
route parameters, and route guards. While route parameters enable dynamic
routing depending on parameters supplied in the URL, nested routes enable the
building of complicated routing structures. Route guards offer a mechanism to
extend authentication and permission to certain routes, guaranteeing that only
authorized users may access particular pages.
For normal users, pages that can be accessed by a logged in users only:
51
For unauthenticated users, pages that can be accessed only by users not
logged in:
52
CHAPTER 5
CONCLUSION
The front-end of the e-commerce website is created using React, a strong and
well-liked JavaScript toolkit for creating user interfaces. React is incredibly
quick and effective thanks to its virtual DOM, which gives consumers a
seamless experience. Additionally, it provides reusable and modular
components, making it simple for developers to design a uniform and
user-friendly user experience for the website.
53
The whole online store is powered using Node.js, a server-side JavaScript
engine. Its quick and effective event-driven design enables developers to create
scalable and high-performance applications. Additionally, it features a sizable
and vibrant community that makes it simple for developers to obtain help and
resources.
The functioning and design of websites is one of the key elements influencing
UX. The chance of a sale will rise if a website is well-designed, simple to use,
and offers a smooth user experience. This will attract visitors to remain longer
and browse more goods. On the other side, users may leave a website if it is
complicated or challenging to use.
Speed and performance are additional key components of UX. A website that
loads slowly or performs badly might annoy visitors and give them a bad image
of the company. According to study, a one-second delay in the time it takes for a
page to load can significantly lower conversion rates. Therefore, boosting
website performance and speed is essential for raising user experience.
54
messages based on their browsing and buying history. Increased consumer
loyalty and repeat business may result from this.
One method to speed up a website is to use a caching system, which may save
frequently requested information in memory and reduce the time it takes to get
information from the database. Using extensive testing techniques and
continuous integration and delivery can further enhance the performance of the
website.
The MERN stack enables seamless integration of the front-end and back-end
components of the website, simplifying the development of a user-friendly,
responsive website that provides a good user experience. The project requires
in-depth planning and analysis, including user requirements analysis, market
research, and competition analysis, to ensure that the website fits the needs and
expectations of the target audience.
55
respectively. The website's user interface is both aesthetically beautiful and
responsive thanks to the use of SCSS and React-Bootstrap.
At all times, it's important to keep in mind the various factors and difficulties
that go into developing an e-commerce website, such as security, performance,
user experience, and scalability. Developers can make sure their website is safe
and operates at its best by putting strict testing methods in place, following best
practices, and utilizing technologies like JWT for authentication and
authorisation as well as Bcrypt for password hashing.
So, the MERN stack combines flexibility and scalability, giving it the ideal
foundation for building a book-based e-commerce website. By putting best
practices into practice and giving the user experience first importance,
developers may create a stable and user-friendly platform that can satisfy the
needs of both sellers and buyers in the book market.
56
REFERENCES
[3] Osama Mohammed, Ahmad Rababah and Fawaz Ahmad Masoud, “Key
Factors for Developing a Successful E-commerce Website”, IBIMA
Publishing, December 2010.
[4] David Gillman, Yin Lin, Bruce Maggs, Ramesh K. Sitaraman, “Protecting
Websites from Attack with Secure Delivery Networks”, IEEE, April 2015.
[6] Tien Pham, “Building an online shop application with MERN stack”,
Bachelor’s Thesis, November 2020.
57
[10] ExpressJS official documentation: https://expressjs.com/ [Access Date:
24-02-23]
[12] Best Website practices for designing the User Interface of the website:
https://blog.hubspot.com/blog/tabid/6307/bid/30557/6-guidelines-for-exceptio
nal-website-design-and-usability.aspx [Access Date: 15-03-23]
[15] Using CORS for secure connection between frontend and backend:
https://developer.mozilla.org/en-US/docs/Glossary/CORS [Access Date:
04-04-23]
58
59
60