E-Commerce Report
E-Commerce Report
PROJECT REPORT
on
“Building An E-commerce Platform with Flutter and Spring Boot”
Submitted to:
BACHELOR OF TECHNOLOGY
Submitted by:
Under the Supervision of: PRATHAM SONI
Er. Pawan Sen 20EAICS116
Head Of Department, ADITYA BANSAL
Computer Science Engineering 20EAICS009
ARVIND KUMAR
20EAICS028
SHARMISTHA PATRO
20EAICS141
2023-24
ARYA COLLEGE OF ENGINEERING, JAIPUR
Certificate of Completion
This is to certify that the project entitled “Building An E-commerce Platform with
Flutter and Spring Boot” carried out by Pratham Soni, Aditya Bansal, Arvind Kumar,
and Sharmistha Patro, a student of Bachelor of Technology, 8th SEM, of ARYA
College of Engineering, Kukas, Jaipur, is recommended towards the end of their 8th
semester of B.TECH.
Pratham Soni
HOD, CSE
20EAICS116
Aditya Bansal
20EAICS009
Arvind Kumar
20EAICS028
Sharmistha Patro
20EAICS141
II
DECLARATION BY THE CANDIDATE
We, Pratham Soni, Aditya Bansal, Arvind Kumar, and Sharmistha Patro, hereby
declare that the project work entitled “Building an E-commerce Platform with Flutter
Engineering, Kukas, Jaipur” for the partial fulfillment of the award of the degree of B.
TECH and this work has not been submitted for similar purpose anywhere else.
Aditya Bansal
20EAICS009
Arvind Kumar
20EAICS028
Sharmistha Patro
20EAICS141
III
ACKNOWLEDGEMENT
I would like to take this moment to express my sincere gratitude to all those who
played a pivotal role in the completion of my Final Year Project report.
First and foremost, I am deeply thankful to Mr. Pawan Sen, Head of the Department
of Computer Science and Engineering (CSE) for their unwavering support and
guidance throughout this endeavour.
I would also like to extend my appreciation to all the individuals, who directly or
indirectly contributed to this project. Your collective efforts have been instrumental in
shaping the report
Pratham Soni
20EAICS116
Aditya Bansal
20EAICS009
Arvind Kumar
20EAICS028
Sharmistha Patro
20EAICS141
IV
Table of Contents
CERTIFICATE OF COMPLETION ...........................................................................II
DECLARATION BY THE CANDIDATE ................................................................III
ACKNOWLEDGEMENT ......................................................................................... IV
1....Introduction ...............................................................................................................1
1.1 Background ........................................................................................................... 1
1.2 Problem Statement ................................................................................................ 2
1.3 Objective of the Project .........................................................................................3
1.4 Scope of the Project .............................................................................................. 4
1.5 Significance of the Project .................................................................................... 5
2....Literature Review ..................................................................................................... 6
2.1 Overview of Content Management Systems (CMS) .............................................6
2.2 Evolution of E-commerce Platforms .....................................................................8
2.3 Technologies in Web Development .......................................................................9
2.4 User Engagement Strategies ............................................................................... 11
2.5 Comparison of Existing E-commerce Platforms ................................................ 13
3....Project Overview .................................................................................................... 15
3.1 Project Description ..............................................................................................15
3.2 Architectural Design ........................................................................................... 17
3.3 Technology Stack ................................................................................................ 19
4....System Analysis and Requirements ........................................................................21
4.1 Functional Requirements .................................................................................... 21
4.2 Non-Functional Requirements ............................................................................ 23
5....Design and Implementation ....................................................................................25
5.1 Frontend Development ........................................................................................25
5.2 Backend Development ........................................................................................ 26
5.3 Database Design ..................................................................................................28
5.4 Admin Panel Development ................................................................................. 30
6....Live Coding Previews .............................................................................................31
6.1 Frontend Code Snippets ...................................................................................... 31
6.2 Backend Code Snippets ...................................................................................... 44
7....Testing and Quality Assurance ............................................................................... 48
7.1 Test Plan .............................................................................................................. 48
7.2 Integration Testing .............................................................................................. 50
7.3 User Acceptance Testing (UAT) ..........................................................................51
8....Deployment and Maintenance ................................................................................ 53
8.1 Deployment Environment ................................................................................... 53
8.2 Deployment Process ............................................................................................54
8.3 Maintenance ........................................................................................................ 56
9....Results and Evaluation ........................................................................................... 57
9.1 Achievement of Objectives ................................................................................. 57
9.2 User Feedback and Usability Testing ..................................................................59
9.3 Performance Evaluation ......................................................................................60
9.4 Conclusion .......................................................................................................... 62
10..Conclusion and Future Work .................................................................................. 63
10.1 Summary of Achievements ............................................................................... 63
10.2 Limitations ........................................................................................................ 64
10.3 Future Work ...................................................................................................... 66
10.4 Conclusion ........................................................................................................ 67
11. References ...................................................................................................................
1. Introduction
1.1 Background
The Rise of E-commerce and the Need for User-Friendly Platforms
The past two decades have witnessed a remarkable transformation in the retail landscape.
The convenience and accessibility offered by e-commerce have fuelled its explosive
growth, fundamentally altering how consumers shop and businesses operate.
This surge in e-commerce popularity can be attributed to several key factors:
Increased Internet Penetration: The widespread adoption of smartphones and
high-speed internet access has provided a global platform for online shopping.
Consumers can now browse product catalogues, compare prices, and make
purchases from virtually anywhere.
Competitive Pricing: E-commerce fosters increased competition among online
retailers, often translating to lower prices for consumers. Customers can quickly
compare prices across different platforms, ensuring they get the best possible deal.
However, alongside this rapid growth comes a growing demand for user-friendly e-
commerce platforms. To thrive in this competitive environment, online stores require
intuitive interfaces, seamless navigation, and a user experience that prioritizes ease of use.
Here's why user-friendliness is crucial:
Improved Customer Acquisition and Retention: A user-friendly platform
simplifies the shopping journey, encouraging first-time purchases and fostering
customer loyalty. Intuitive navigation and clear product information keep
customers engaged and coming back for more.
Increased Conversion Rates: A platform that is easy to use and navigate
facilitates a smooth transition through the buying process. This translates to higher
conversion rates, meaning more visitors to your store actually complete purchases.
Enhanced Brand Image: A well-designed and user-friendly platform reflects
positively on your brand image. It conveys a sense of professionalism, attention to
detail, and a commitment to providing a superior shopping experience.
Building an e-commerce platform with Flutter and Spring Boot offers a powerful
solution to address these demands. Flutter's cross-platform capabilities allow for the
development of a single codebase that can be deployed on both Android and iOS devices.
1
1.2 Problem Statement
Addressing the Gap in User-Friendly E-commerce Solutions
While e-commerce offers a plethora of benefits, there are still shortcomings in existing
platforms that can hinder the user experience. Here, we will identify the specific problem
our e-commerce application aims to address:
Limited Focus on Mobile Usability: Many e-commerce platforms primarily cater to
desktop users, resulting in clunky or unresponsive interfaces when accessed through
mobile devices. This can lead to frustration and cart abandonment for mobile shoppers, a
rapidly growing segment of the online consumer base.
Inconsistent Navigation and Feature Discovery: Some platforms struggle with
navigation consistency, making it difficult for users to find desired products or complete
specific actions. This lack of intuitive design can lead to confusion and lost sales
opportunities.
Lack of Personalization and Targeted Recommendations: Generic shopping
experiences fail to capitalize on the potential for personalization. By not utilizing user
data effectively, existing platforms miss the chance to recommend products tailored to
individual preferences, leading to a less engaging shopping experience.
Inefficient Checkout Processes: Lengthy or complex checkout processes can act as a
barrier to conversion. Customers may abandon their carts if the checkout process is
cumbersome or requires them to create unnecessary accounts.
Our e-commerce application is designed to address these limitations by prioritizing the
following:
Mobile-First Design: The application will be built with a focus on mobile
usability, ensuring a seamless and intuitive experience for smartphone and tablet
users.
Intuitive Navigation and User Interface: We will prioritize clear, consistent
navigation menus and user-friendly interfaces that simplify product discovery and
action completion.
Personalized Recommendations: By leveraging user data responsibly, our
application will recommend products based on browsing history and purchase
patterns, creating a more engaging and personalized shopping experience.
2
Through these features, our e-commerce application aims to overcome the identified
problems and contribute to a user-friendly, convenient, and engaging online shopping
experience.
3
the technical details of achieving these goals, showcasing the functionalities, architecture,
and implementation strategies that bring this user-centric e-commerce application to life.
4
1.5 Significance of the Project
Building a User-Centric E-commerce Future
This e-commerce application project holds significant value for both users and
businesses operating in the online retail landscape. The core functionalities prioritize user
experience, aiming to address prevalent shortcomings in existing platforms. Here's how
our application can make a difference:
Enhanced User Experience: By prioritizing mobile-first design, intuitive navigation,
and personalized recommendations, our application empowers users to navigate the
shopping journey seamlessly. This translates to increased customer satisfaction, reduced
frustration, and a more engaging shopping experience.
Increased Conversion Rates: A user-friendly platform fosters a smoother buying
process, minimizing friction points at checkout and encouraging customers to complete
purchases.
Improved Brand Image: A well-designed and user-friendly platform reflects positively
on a brand's image. It conveys a commitment to customer satisfaction and a focus on
providing a superior shopping experience. This can contribute to increased brand loyalty
and customer trust.
Competitive Advantage in the E-commerce Market: In a crowded online retail space,
user experience is a crucial differentiator. Our application, with its focus on mobile
usability and personalization, positions businesses to attract and retain customers more
effectively.
Foundation for Future Growth: The project serves as a solid foundation for building a
scalable and robust e-commerce platform. By leveraging Spring Boot for the backend,
the application can handle increasing user traffic and data demands as the business grows.
This allows for future expansion and integration of additional functionalities.
5
2. Literature Review
2.1 Overview of Content Management Systems (CMS)
The Backbone of E-commerce Content
Content Management Systems (CMS) play a critical role in the success of modern e-
commerce platforms. They provide a user-friendly interface for businesses to manage
their online store's content, products, and user information, without requiring extensive
technical expertise. Here's how CMS empowers e-commerce operations:
Streamlined Content Creation and Editing: CMS platforms offer intuitive tools
for creating and editing blog posts, landing pages, promotional content, and other
informative materials. This empowers businesses to maintain fresh and engaging
content without relying on developers.
User Management and Security: Many CMS solutions offer user account
management functionalities. This allows businesses to manage customer accounts,
user profiles, and access controls, ensuring data security and user privacy.
6
commerce store. It offers a vast array of plugins and extensions for enhanced
functionalities.
Choosing the Right CMS for a Flutter and Spring Boot E-commerce
Application:
While the e-commerce application we are building utilizes Flutter and Spring Boot for
development, the choice of CMS remains independent. Here are some factors to consider
when selecting a CMS:
Scalability Needs: Consider the anticipated future growth of the online store.
SaaS platforms like Shopify and BigCommerce offer built-in scalability, while
open-source options require additional configuration for scaling.
Technical Expertise: The required technical knowledge for managing the chosen
CMS should be factored in. SaaS platforms typically require less technical
knowledge compared to open-source options.
7
2.2 Evolution of E-commerce Platforms
A Journey from Early Adopters to Mobile-First Experiences
The world of e-commerce has undergone a remarkable transformation over the past few
decades. Understanding this evolution is crucial for building platforms that cater to the
ever-changing needs of online shoppers. Here, we will explore key milestones and trends
that have shaped the e-commerce landscape:
Early Beginnings (1960s - 1990s): The seeds of e-commerce were sown in the
1960s with the development of Electronic Data Interchange (EDI) systems, facilitating
electronic communication between businesses. The emergence of the internet in the 1990s
marked a turning point, with the launch of pioneering online marketplaces like Amazon
(1995) and eBay (1995). These early platforms were characterized by:
Basic Search and Navigation: Search functions and navigation tools were less
sophisticated, making it more challenging for users to find desired products.
The Rise of E-commerce Giants (2000s - 2010s): The early 2000s witnessed a
surge in online shopping, fueled by increased internet penetration and broadband adoption.
This era saw the rise of e-commerce giants like Amazon and Alibaba, who continuously
improved their platforms with features like:
Customer Reviews and Ratings: The integration of customer reviews and ratings
allowed for a more informed buying experience.
8
The Age of Mobile Commerce (2010s - Present): The last decade has been
marked by the explosive growth of mobile shopping. The widespread adoption of
smartphones and tablets has necessitated a shift towards mobile-first e-commerce
experiences. Modern platforms now prioritize:
Integration with Mobile Payment Wallets: Apple Pay, Google Pay, and other
mobile wallets have simplified the checkout process for mobile shoppers.
The success of an e-commerce platform hinges on the technologies chosen for its
development. This section will delve into two key technologies utilized in our e-
commerce application: Flutter for the front-end and Spring Boot for the back-end. We will
explore their functionalities and highlight how they contribute to a robust and user-
friendly online shopping experience.
9
Cross-Platform Development: With Flutter, developers can write a single codebase that
can be deployed on both Android and iOS devices. This translates to significant cost and
time savings compared to developing separate native applications for each platform.
Rich User Interface (UI) Development: Flutter leverages widgets for building
visually appealing and interactive user interfaces. Its built-in widgets and access to
native platform widgets empower developers to create a seamless and familiar
user experience for mobile shoppers.
Hot Reload: This powerful feature allows developers to see code changes
reflected in the running application almost instantly. This significantly accelerates
the development and iteration process, allowing for quicker feedback and faster
bug fixes.
Spring Boot, a powerful framework built on top of the Spring platform, offers a
simplified approach to back-end development for Java applications. Here's how it
empowers e-commerce functionalities:
Rapid Development: Spring Boot eliminates the need for extensive configuration,
allowing developers to get started quickly and focus on building core
functionalities. This translates to faster development times and quicker time-to-
market for e-commerce applications.
10
Security Features: Spring Boot incorporates robust security features out of the
box, protecting e-commerce applications from common security vulnerabilities
like SQL injection and cross-site scripting attacks.
Combining Flutter for the front-end and Spring Boot for the back-end creates a powerful
solution for building e-commerce applications.
Spring Boot ensures a robust and scalable back-end that can handle complex
functionalities and data management efficiently.
This combination allows developers to build e-commerce platforms that are not only user-
friendly but also equipped to handle the demands of a growing online business.
In the competitive world of e-commerce, keeping users engaged and coming back for
more is crucial for success. Here, we will explore key strategies that can be implemented
within e-commerce platforms built with Flutter and Spring Boot to enhance user
engagement:
2.4.1 Personalization:
Targeted Promotions and Offers: Based on user profiles and purchase behavior,
offer personalized discounts and promotions that are relevant to their interests.
11
Wishlists and Gift Registries: Allow users to create wishlists and gift registries.
This fosters engagement and encourages repeat visits as users share these lists
with friends and family.
Customer Reviews and Ratings: Integrate a system for customer reviews and
ratings. This builds trust and social proof, influencing buying decisions and
encouraging user interaction.
Product Questions and Answers: Allow users to ask and answer questions about
products. This fosters a sense of community and provides valuable product
information for potential buyers.
Loyalty Programs: Implement loyalty programs that reward users for their
purchases and engagement. This incentivizes repeat visits and encourages users to
climb the loyalty ladder.
Blog Content and Articles: Publish informative blog posts, buying guides, and
how-to articles related to your product categories. This establishes your brand as
an industry authority and attracts organic traffic.
12
Informative Product Descriptions: Craft engaging and informative product
descriptions that go beyond basic specifications. Highlight product benefits and
address potential customer questions.
Since mobile shopping is dominant, ensure your e-commerce platform is optimized for
mobile devices. This includes:
Fast Loading Times: Prioritize website speed and ensure a smooth browsing
experience on mobile devices.
Simple Navigation: Design a clear and intuitive navigation menu that is easy to
use on smaller screens.
One-Click Actions: Minimize steps required for actions like adding items to carts
and completing purchases.
Shopify: Known for its user-friendly interface, extensive app integrations, and
scalability for growing businesses, Shopify caters to small and medium-sized
businesses (SMBs) that prioritize ease-of-use. However, its subscription-based
model and limited customization options can be drawbacks for businesses with
complex needs.
13
Magento (Adobe Commerce): This highly customizable open-source platform is
a favorite for large enterprises with complex product catalogs and specific
functionalities. While it offers extensive features, Magento's steeper learning
curve and reliance on developer expertise for customization can be a hurdle for
smaller businesses.
Our Flutter and Spring Boot e-commerce application carves its niche by offering distinct
advantages:
Personalization through AI: By leveraging user data (with user consent), our
application delivers highly targeted product recommendations using AI, exceeding
basic recommendation features offered by other platforms.
A cost-effective and scalable platform that can grow with their business.
14
3. Project Overview
3.1 Project Description
Functionalities at the Core of Our E-commerce Application
Our e-commerce application, built with Flutter and Spring Boot, prioritizes user
experience and offers a comprehensive set of functionalities to empower both businesses
and online shoppers. Let's delve into the core features that define this platform:
User Management:
Registration and Login: Users can create accounts with basic information like
name, email address, and password. Secure login functionalities ensure user
privacy and data protection.
Profile Management: Registered users can manage their profiles, edit personal
information, and set preferences like default shipping addresses and payment
methods.
Order History: Users can access their order history, view past purchases, and
track the status of ongoing deliveries.
Advanced Search Functionality: Users can search for specific products by name,
brand, category, price range, or other relevant attributes. Search results should be
displayed efficiently with clear filtering options for further refinement.
Customer Reviews and Ratings: Integration with a customer review and rating
system allows users to read reviews and leave their own feedback, fostering social
proof and influencing buying decisions.
15
Shopping Cart Management:
Effortless Product Addition: Users can easily add products to their shopping
carts with clear quantity indicators.
Guest Checkout and Account Login Options: The platform caters to both
registered users and guest shoppers. Guest checkout should be a simple process
requiring minimal information for order placement.
Additional Functionalities:
16
3.2 Architectural Design
Unveiling the Blueprint of Our E-commerce Application
The success of our e-commerce application hinges on its architectural design, which
defines the interaction between the user interface (front-end) and the underlying
functionalities (back-end). This section delves into the core principles that govern this
architecture, focusing on front-end/back-end interaction and data flow.
Model: This component represents the application's data layer. It encapsulates the
data logic, interacts with the database, and handles data retrieval, storage, and
manipulation. The Spring Boot back-end serves as the model in our application,
utilizing databases and APIs to manage product information, user data, orders, and
other relevant data.
View: This component represents the user interface (UI) elements that users
interact with. Built with Flutter, the front-end of our application acts as the view,
showcasing product listings, shopping carts, checkout screens, and other visual
elements.
Controller: This component acts as the intermediary between the model and the
view. It handles user interactions with the UI, retrieves data from the model, and
updates the view accordingly. Spring Boot controllers on the back-end handle API
requests from the Flutter front-end, process them, interact with the model (data),
and return the processed data for presentation in the view (Flutter UI).
The interaction between the front-end (Flutter) and back-end (Spring Boot) occurs
primarily through RESTful APIs. Here's a typical data flow scenario:
1. User Interaction: A user interacts with the Flutter UI, for instance, browsing
products or adding items to the cart.
17
2. API Request: The Flutter front-end sends an API request (e.g., GET request to
retrieve product details) to a specific endpoint on a Spring Boot back-end
controller.
3. Back-end Processing: The Spring Boot controller receives the API request,
processes it, and interacts with the model (database) to retrieve or update data as
needed.
4. Data Response: The Spring Boot controller prepares a response containing the
requested data (e.g., product details) or a confirmation message for actions like
adding items to the cart.
5. UI Update: The Flutter front-end receives the data response from the back-end
and updates the UI accordingly. This could involve displaying product information,
updating the shopping cart view, or providing confirmation messages to the user.
This MVC architecture with RESTful API communication offers several advantages:
18
3.3 Technology Stack
The Building Blocks of Our E-commerce Application
The robust functionalities and user-friendly experience of our e-commerce application are
built upon a carefully chosen technology stack. This section delves into the specific
technologies utilized for both the front-end (Flutter) and the back-end (Spring Boot)
development of our platform.
o Benefits:
Spring Boot: This powerful framework built on top of the Spring platform
streamlines back-end development for our e-commerce application.
o Benefits:
19
Scalability and performance: Spring Boot applications are
designed to be scalable and can handle increasing user traffic and
data demands as the online store grows. This ensures a smooth and
reliable experience for customers even during peak shopping
periods.
Additional Technologies:
Synergy of Technologies:
The combination of Flutter for the front-end and Spring Boot for the back-end creates a
powerful solution for building e-commerce applications.
Spring Boot ensures a robust and scalable back-end that can handle complex
functionalities and data management efficiently.
This technology stack provides a solid foundation for building a feature-rich, secure, and
scalable e-commerce platform that can grow and adapt to the ever-evolving needs of the
online retail landscape. The following section will explore the design of the application's
database, which plays a crucial role in efficiently storing and managing the data that
powers the platform.
20
4. System Analysis and Requirements
4.1 Functional Requirements
Charting the Course for User Functionality
The functionalities offered by our e-commerce application built with Flutter and Spring
Boot are designed to cater to the needs of both businesses and online shoppers. This
section meticulously details the core functionalities that define the user experience and
empower businesses to manage their online stores effectively.
User Management:
Registration and Login: Users can create accounts with basic information like
name, email address, and password. Secure login functionalities ensure user
privacy and data protection.
Profile Management: Registered users can manage their profiles, edit personal
information, and set preferences like default shipping addresses and preferred
payment methods.
Order History: Users can access their order history, view past purchases, and
track the status of ongoing deliveries.
Advanced Search Functionality: Users can search for specific products by name,
brand, category, price range, or other relevant attributes. Search results should be
displayed efficiently with clear filtering options for further refinement.
Customer Reviews and Ratings : Integration with a customer review and rating
system allows users to read reviews and leave their own feedback, fostering social
proof and influencing buying decisions.
21
Shopping Cart Management:
Effortless Product Addition: Users can easily add products to their shopping
carts with clear quantity indicators.
Guest Checkout and Account Login Options: The platform caters to both
registered users and guest shoppers. Guest checkout should be a simple process
requiring minimal information for order placement.
Additional Functionalities:
22
4.2 Non-Functional Requirements
Defining the Pillars of a Robust E-commerce Platform
While functional requirements outline the "what" of our e-commerce application, non-
functional requirements define the "how." This section explores the essential
characteristics that govern the application's performance, security, scalability, and user
interface design. These non-functional requirements serve as the guiding principles for
development, ensuring the application delivers a seamless and secure online shopping
experience.
Performance Expectations:
Fast Loading Times: In today's fast-paced world, users expect online platforms
to load quickly. Our application should be optimized for performance, ensuring
product pages, search results, and the checkout process load swiftly across diverse
devices and network connections.
High Availability: The platform should strive for high availability, minimizing
downtime and ensuring users can access it reliably.
Security Measures:
Data Security: User data, including personal information and payment details,
must be protected with robust security measures. Secure storage practices,
encryption of sensitive data, and adherence to industry best practices are crucial.
23
Scalability Needs:
UI Design Principles:
User-Centric Design: The user interface (UI) should be designed with user needs
in mind. This includes intuitive navigation, clear information hierarchy, and a
user-friendly layout that is easy to navigate on various devices.
Clean and Modern Aesthetic: A clean and modern aesthetic with a focus on
visual clarity will enhance the user experience and create a trustworthy and
professional online store presence.
24
5. Design and Implementation
5.1 Frontend Development
Crafting a User-Friendly Interface with Flutter
The user interface (UI) of our e-commerce application, built with Flutter, plays a pivotal
role in creating a positive and engaging online shopping experience. This section delves
into the design and implementation details of the Flutter front-end, focusing on key UI
components and functionalities.
Design Principles:
Flutter offers a rich set of widgets that can be utilized to construct the UI elements of our
e-commerce application. Here are some key examples:
Product Listing Cards: Container and Image widgets can be combined to create
visually appealing product listing cards that display product images and
information.
25
5.2 Backend Development
The Powerhouse of Functionality with Spring Boot
The back-end of our e-commerce application, built with Spring Boot, acts as the engine
that powers core functionalities. This section delves into the development process for the
Spring Boot back-end API, focusing on data access mechanisms, business logic
implementation, and the design of API endpoints that facilitate communication between
the front-end (Flutter) and back-end components.
Entity Classes: We will define entity classes that map to database tables. These
classes will represent real-world entities like Product, User, and Order and will
contain properties that correspond to database table columns. Spring Data JPA
simplifies data access by providing a layer of abstraction over JPA (Java
Persistence API).
Repositories: Spring Data JPA provides repository interfaces that offer CRUD
(Create, Read, Update, Delete) operations for interacting with data entities. These
repositories encapsulate data access logic and shield developers from writing
complex SQL queries.
Spring Services: Spring Boot services are Java classes that encapsulate the core
business logic of our application. These services will handle tasks like product
management, order processing, user authentication, and integration with external
payment gateways.
26
API Endpoints with Spring MVC:
RESTful API Design: We will adopt a RESTful API design for communication
between the Flutter front-end and the Spring Boot back-end. This approach
utilizes standard HTTP methods (GET, POST, PUT, DELETE) for data retrieval,
creation, updates, and deletion.
Security Considerations:
Unit Tests: Unit tests will be written to ensure individual components of the back-
end application function as expected.
27
5.3 Database Design
The Foundation for Data Storage
The database schema of our e-commerce application serves as the foundation for storing
and managing all the crucial data that powers its functionalities. This section delves into
the key tables, their attributes (columns), and the relationships between them.
Core Tables:
Products:
Users:
Orders:
28
o user_id (Foreign Key): References the user who placed the order (links to
Users table).
Order Items:
o order_id (Foreign Key): References the order the item belongs to (links
to Orders table).
o unit_price: Price of the product at the time the order was placed.
Relationships:
Additional Tables :
Reviews: This table can be used to store customer reviews for products, with
attributes like user ID, product ID, rating, and review text.
Payments: This table can be used to store payment information for orders, with
attributes like order ID, payment method, transaction ID, and payment status.
Normalization:
29
5.4 Admin Panel Development
Empowering Business Users
For e-commerce applications, an admin panel can be a valuable tool for business users to
manage their online store. This section explores the functionalities and implementation
details of an optional admin panel for our Flutter and Spring Boot application.
Functionalities:
Product Management:
o Add new products with details like name, description, price, category,
images, and stock levels.
Order Management:
Customer Management :
o Access basic user information like name, email address, and order history
(with appropriate privacy considerations).
o Gain insights into user behavior and optimize product offerings based on
data.
30
6. Live Coding Previews
6.1 Frontend Code Snippets
6.1.1 Login Section
import 'dart:developer';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:swift_cart/screens/dashboard_screen.dart';
import 'package:swift_cart/screens/otp_screen.dart';
import 'package:swift_cart/utils/app_colors.dart';
import 'package:swift_cart/widgets/space_box.dart';
const LoginScreen({super.key});
@override
31
@override
void dispose() {
super.dispose();
_phoneNumber.dispose();
@override
return Scaffold(
resizeToAvoidBottomInset: false,
body: SafeArea(
child: Container(
height: size.height,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Align(
alignment: Alignment.centerRight,
child: TextButton(
32
onPressed: () {
Navigator.pushReplacement(
context,
MaterialPageRoute(
),
);
},
child: Text(
"Skip",
style: theme.textTheme.labelLarge,
),
),
),
verticalSpace(80),
const Text(
"Enter phone\nnumber",
style: TextStyle(
height: 0,
fontSize: 40,
fontWeight: FontWeight.w600,
),
),
verticalSpace(20),
Text(
33
"Activation code will be sent to your phone\nnumber to sign up or log in",
style: theme.textTheme.labelLarge),
verticalSpace(30),
Form(
key: _formKey,
child: TextFormField(
controller: _phoneNumber,
cursorColor: AppColors.foreground,
cursorWidth: 1,
maxLength: 10,
keyboardType: TextInputType.number,
style: theme.textTheme.titleMedium
?.copyWith(color: AppColors.foreground),
decoration: InputDecoration(
counterText: "",
filled: true,
fillColor: AppColors.primary,
hintStyle: theme.textTheme.titleMedium
?.copyWith(color: AppColors.background),
prefixIcon: Padding(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
34
children: [
Image.asset(
"assets/images/india-flag-icon.png",
width: 28,
height: 28,
),
horizontalSpace(6),
Text(
"+91",
textAlign: TextAlign.center,
style: theme.textTheme.titleMedium
?.copyWith(color: AppColors.foreground),
),
Container(
margin:
height: 18,
color: AppColors.background,
width: 0,
),
),
],
),
),
35
Navigator.push(
context,
MaterialPageRoute(
phoneNumber: _phoneNumber.text,
),
),
);
},
child: Text(
style: theme.textTheme.titleMedium
?.copyWith(color: AppColors.primary),
),
),
verticalSpace(10),
RichText(
textAlign: TextAlign.center,
text: TextSpan(
style: theme.textTheme.labelLarge,
children: [
const TextSpan(
text: '"Login"',
36
Padding(
child: Text(
),
),
Expanded(
child: Divider(),
),
],
),
verticalSpace(14),
Row(
children: [
Expanded(
child: ElevatedButton.icon(
style: ElevatedButton.styleFrom(
padding: EdgeInsets.zero),
onPressed: () {},
icon: SvgPicture.asset(
"assets/images/google-icon.svg",
width: 20,
height: 20,
),
37
label: Text(
"Google",
style: theme.textTheme.labelMedium,
),
),
),
horizontalSpace(6),
Visibility(
child: Expanded(
child: ElevatedButton.icon(
onPressed: () {},
icon: SvgPicture.asset(
"assets/images/apple-icon.svg",
width: 20,
height: 20,
),
label: Text(
"Apple",
style: theme.textTheme.labelMedium,
),
),
),
),
Visibility(
38
visible: theme.platform != TargetPlatform.iOS,
child: horizontalSpace(6),
),
Expanded(
child: ElevatedButton.icon(
onPressed: () {},
icon: SvgPicture.asset(
"assets/images/facebook-icon.svg",
width: 20,
height: 20,
),
label: Text(
"Facebook",
style: theme.textTheme.labelMedium,
),
),
),
],
),
verticalSpace(50),
],
),
],
),
),
39
6.1.2 Dashboard Screen
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:swift_cart/main.dart';
import 'package:swift_cart/screens/cart_screen.dart';
import 'package:swift_cart/screens/home_screen.dart';
import 'package:swift_cart/screens/profile_screen.dart';
import 'package:swift_cart/widgets/app_bottom_navigation_bar.dart';
import 'package:swift_cart/widgets/app_bottom_navigation_bar_item.dart';
@override
State<DashboardScreen> createState() => _DashboardScreenState();
}
40
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: PageView(
physics: const NeverScrollableScrollPhysics(),
controller: _pageController,
children: const [
HomeScreen(),
CartScreen(),
ProfileScreen(),
],
),
),
bottomNavigationBar: ValueListenableBuilder(
valueListenable: _currentIndex,
builder: (BuildContext context, value, Widget? child) {
return AppBottomNavigationBar(
onTap: _onItemTapped,
currentIndex: value,
items: [
AppBottomNavigationBarItem(
icon: CupertinoIcons.house,
label: "Home",
),
// AppBottomNavigationBarItem(
// icon: CupertinoIcons.search,
41
// label: "Search",
// ),
AppBottomNavigationBarItem(
icon: CupertinoIcons.cart,
label: "Cart",
),
// AppBottomNavigationBarItem(
// icon: CupertinoIcons.heart,
// label: "Favorites",
// ),
AppBottomNavigationBarItem(
icon: CupertinoIcons.person,
label: "Profile",
),
],
);
}
42
6.1.4 Live Previews
43
6.2 Backend Code Snippets
6.2.1 Main Class
package com.app;
import java.util.List;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import com.app.config.AppConstants;
import com.app.entites.Role;
import com.app.repositories.RoleRepo;
import io.swagger.v3.oas.annotations.enums.SecuritySchemeIn;
import io.swagger.v3.oas.annotations.enums.SecuritySchemeType;
import io.swagger.v3.oas.annotations.security.SecurityScheme;
@SpringBootApplication
@SecurityScheme(name = "E-Commerce Application", scheme = "bearer", type =
SecuritySchemeType.HTTP, in = SecuritySchemeIn.HEADER)
public class ECommerceApplication implements CommandLineRunner {
@Autowired
private RoleRepo roleRepo;
44
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
@Override
public void run(String... args) throws Exception {
try {
Role adminRole = new Role();
adminRole.setRoleId(AppConstants.ADMIN_ID);
adminRole.setRoleName("ADMIN");
savedRoles.forEach(System.out::println);
} catch (Exception e) {
e.printStackTrace();
}
}
45
6.2.2 Payment
package com.app.entites;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@Data
@Table(name = "payments")
@AllArgsConstructor
@NoArgsConstructor
public class Payment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long paymentId;
@NotBlank
46
@Size(min = 4, message = "Payment method must contain atleast 4 characters")
private String paymentMethod;
47
7. Testing and Quality Assurance
7.1 Test Plan
Building Confidence Through Rigorous Testing
The success of our e-commerce application built with Flutter and Spring Boot hinges on
its ability to function flawlessly and deliver a smooth user experience. This section
outlines the comprehensive testing plan that ensures the application meets these crucial
goals. Our plan incorporates a multi-layered approach, encompassing unit testing,
integration testing, and user acceptance testing (UAT).
1. Unit Testing:
Focus: Unit testing isolates individual units of code (classes or functions) within
the application and verifies their functionality independently. This granular
approach helps identify bugs and ensure each code component performs as
expected.
Testing Frameworks: For unit testing, we can utilize frameworks like JUnit (for
Spring Boot back-end) and Flutter's built-in testing framework (for the Flutter
front-end). These frameworks provide tools for writing test cases, mocking
dependencies, and asserting expected outcomes.
Benefits: Unit testing offers several advantages. It promotes clean code practices,
facilitates early bug detection, and allows for code refactoring with greater
confidence. By ensuring the building blocks function correctly, we establish a
solid foundation for the application.
2. Integration Testing:
48
testing tools can be used to verify communication between the front-end and the
actual Spring Boot back-end.
Focus: User acceptance testing (UAT) involves real users interacting with the
application in a simulated or staged environment. This crucial phase allows us to
gather valuable feedback on usability, identify user interface (UI) inconsistencies,
and assess how well the application fulfills user expectations.
UAT Process: During UAT, we can define test cases encompassing core
functionalities, user workflows, and various user roles. Actual users can then
interact with the application, complete these test cases, and provide feedback.
Benefits: UAT offers invaluable insights into the user experience. By addressing
user feedback and refining the application based on their experiences, we ensure it
is not only functional but also intuitive, user-friendly, and caters to the needs of
our target audience.
Conclusion:
The following sections of this chapter will delve deeper into integration testing and user
acceptance testing, exploring specific strategies and methodologies employed to ensure
seamless communication and valuable user feedback.
49
7.2 Integration Testing
Bridging the Gap Between Front-End and Back-End
In our e-commerce application built with Flutter and Spring Boot, ensuring seamless
communication between the front-end (Flutter) and back-end (Spring Boot) components
is critical. This section explores various integration testing strategies employed to verify
this interaction and identify any potential issues early in the development process.
API Testing Tools: Tools like Postman or curl can be utilized to send simulated
API requests to the Spring Boot back-end, mimicking data that the Flutter front-
end would typically send. By analyzing the back-end responses, we can verify that
the API endpoints function as expected and return the correct data formats.
Mocking Frameworks: For situations where the Spring Boot back-end is still
under development or not readily available, mocking frameworks like Mockito
can be used to simulate back-end behavior. The Flutter front-end can interact with
these mocks, allowing for testing of core functionalities like user login or product
retrieval without relying on the actual back-end yet.
Data Validation: Unit tests can be written for the Flutter front-end to validate the
data received from the Spring Boot back-end. This ensures the front-end can
correctly interpret and utilize the received data for UI updates or further
processing.
50
7.3 User Acceptance Testing (UAT)
The Power of User Feedback
User acceptance testing (UAT) plays a pivotal role in the development of our e-commerce
application. This section delves into how we conducted UAT with real users, the value of
their feedback, and how we addressed their suggestions to refine the application.
UAT Process:
1. Test Case Development: We will define a set of UAT test cases encompassing
core functionalities like product browsing, user registration, search functionality,
shopping cart management, and checkout processes. These test cases can include
various user scenarios and roles (e.g., new user, returning customer).
2. User Recruitment: A representative group of users from our target audience will
be recruited to participate in UAT. This might involve existing customers,
potential users with similar demographics, or usability testing services.
4. Test Execution: Users will be provided with the UAT test cases and access to the
UAT environment. They will then walk through the scenarios, complete the
defined tasks, and provide feedback on their experience.
1. Feedback Analysis: Once UAT is complete, all collected user feedback will be
meticulously analyzed. Common themes and recurring issues will be identified to
prioritize improvements.
51
2. Bug Fixes and Refinements: Based on the feedback, any identified bugs or
usability issues will be addressed by the development team. This might involve UI
adjustments, information architecture improvements, or workflow enhancements.
Benefits of UAT:
Conclusion:
UAT serves as a bridge between development and user experience. By incorporating user
feedback throughout the process, we can ensure our e-commerce application not only
functions as intended but also surpasses user expectations, leading to a successful and
user-centric platform.
52
8. Deployment and Maintenance
8.1 Deployment Environment
Choosing the Right Platform for Your E-Commerce Journey
For our e-commerce application built with Flutter and Spring Boot, selecting the
appropriate deployment environment is crucial. This section explores the two primary
options – cloud and on-premise deployment – and the key factors influencing this
decision. Additionally, we will delve into configuration considerations for the chosen
environment.
Cloud Deployment:
o Benefits:
o Considerations:
On-Premise Deployment:
o Benefits:
53
Security: On-premise deployment offers greater control over data
security, as all infrastructure resides within your own physical
environment.
o Considerations:
With the deployment environment chosen and configured (refer to section 8.1), we can
now delve into the exciting process of deploying our e-commerce application built with
Flutter and Spring Boot
o Alternatively, you can use IDE-specific build options within your Flutter
development environment.
o For Android, navigate to the Google Play Console and follow the
submission process, including app description, screenshots, and target
audience information.
o For iOS, use Apple App Store Connect to submit your app bundle,
providing app metadata, icons, and any required device compatibility
information.
o Use a tool like Maven or Gradle to package your Spring Boot application
into a JAR (Java Archive) file. This creates a single deployable unit
containing all necessary code and dependencies.
o Cloud Deployment:
o On-Premise Deployment:
3. Configuration Management :
55
8.3 Maintenance
Keeping Your E-Commerce Platform Thriving
App Store/Play Store Updates: Regularly address bug reports and user feedback
through updates submitted to the respective app stores. These updates can include
bug fixes, performance enhancements, and new features.
Dependency Management: Stay updated with the latest versions of Flutter and
any third-party libraries used within the application. Updating dependencies can
address security vulnerabilities and introduce new features or bug fixes from the
library maintainers.
Security Updates: Proactively apply security updates for the Spring Boot
framework and any third-party libraries used within the back-end. This helps
mitigate security vulnerabilities and potential exploits.
56
9. Results and Evaluation
9.1 Achievement of Objectives
Measuring the Success of Our E-Commerce Platform
Having invested time and effort in building an e-commerce platform with Flutter and
Spring Boot, it's now time to assess its success. This section delves into the project's
initial goals and analyzes how effectively the application fulfills them.
Evaluation of Goals:
User Experience (UX): Analyze user feedback (Chapter 9.2) and usability testing
results to assess if the application delivers a smooth and intuitive user experience.
Did users find it easy to browse products, add items to carts, and complete
purchases?
57
Scalability and Performance: Analyze performance metrics (Chapter 9.3) to
assess if the application can handle expected traffic volumes and maintain fast
loading times. Can the platform scale to accommodate future growth?
Celebrating Achievements:
A high user satisfaction rate based on user feedback and positive reviews in app
stores.
A smooth and efficient workflow for business users in managing their online store.
User interface (UI) elements that could be further refined based on user feedback.
Performance bottlenecks that require optimization for faster loading times and
smoother user interaction.
By analyzing how well the application fulfills the initial project goals, we gain valuable
insights. These insights can be used to prioritize future development efforts, optimize the
platform for continued success, and ultimately deliver a feature-rich, user-friendly, and
secure e-commerce experience for businesses and customers alike.
58
9.2 User Feedback and Usability Testing
Refining the Platform Through User Insights
In the ever-evolving world of e-commerce, user experience reigns supreme. This section
explores the invaluable feedback received from users during usability testing (Chapter 6.3)
and analyzes how it was incorporated to refine our e-commerce platform built with
Flutter and Spring Boot.
During usability testing, users interacted with the application, completed tasks, and
provided honest feedback. This feedback can be categorized into various themes:
Usability Issues: Users might have identified areas where the interface was
unclear or functionalities were difficult to navigate. For instance, the product
search function might have been cumbersome, or the checkout process might have
involved too many steps.
Feature Suggestions: Users might have suggested additional features that would
enhance their shopping experience. This could include wishlists, product
recommendations based on browsing history, or integrated loyalty programs.
UI/UX Improvements: Users might have provided feedback on the overall user
interface design, suggesting improvements to layout, button placement, or visual
elements for better clarity and user flow.
By analyzing this feedback, we can identify areas for improvement and implement
changes to enhance the user experience:
Addressing Usability Issues: Based on user feedback, we can refine the user
interface (UI) to address navigation challenges. This could involve simplifying the
product search process, optimizing the checkout flow, or adding instructional text
for specific functionalities.
59
9.3 Performance Evaluation
Ensuring a Smooth and Responsive User Experience
A seamless user experience in our e-commerce platform built with Flutter and Spring
Boot hinges on its performance. This section explores key performance metrics – speed
and scalability – and how we evaluate them to ensure a fast and responsive application.
Evaluating Speed:
Load Times:
o Measure the time it takes for screens and product listings to load on both
mobile devices (Flutter front-end) and web interfaces (if applicable).
Response Times:
Evaluating Scalability:
o Utilize tools like JMeter or Locust to simulate high traffic volumes and
assess how the application behaves under load.
o This helps identify potential bottlenecks in the system and ensure the
platform can handle peak traffic periods without performance degradation.
60
o Identify resource constraints that might hinder scalability and implement
optimization strategies as needed (e.g., code optimization, database
indexing).
Optimizing Performance:
Code Optimization:
Database Optimization:
o Ensure proper database indexing for frequently used queries and optimize
database queries to improve retrieval speed.
Resource Allocation:
Increased Conversion Rates: Studies show that faster websites can lead to higher
conversion rates, meaning more users complete their purchases.
The following section will conclude this chapter by summarizing the key findings and
successes of the project, highlighting the importance of continuous evaluation and future
improvements.
61
9.4 Conclusion
A Platform Poised for Success
Having meticulously evaluated our e-commerce platform built with Flutter and Spring
Boot, we can celebrate its achievements and identify areas for further growth. This
concluding section summarizes the key findings and underscores the project's successes.
Key Findings:
By analyzing how well the application fulfills the initial project goals, we gained a
clear understanding of its effectiveness in achieving its intended purpose.
Project Successes:
The Spring Boot back-end provides a robust and scalable infrastructure for
efficient product management, order processing, and secure transactions.
The e-commerce platform caters to the specific needs of the target audience,
whether it's a focus on specific product categories or unique user functionalities.
62
10. Conclusion and Future Work
10.1 Summary of Achievements
A Testament to the Power of Flutter and Spring Boot
Our journey of building an e-commerce platform with Flutter and Spring Boot has
culminated in a feature-rich and user-centric application. This section celebrates the
project's accomplishments, highlighting the key functionalities and the successful
integration of both technologies.
Robust Product Management: Businesses can easily add, edit, and manage their
product offerings within the platform's user-friendly interface.
63
Meeting Target Audience Needs:
Beyond core functionalities, the platform can be tailored to meet the specific needs of the
target audience. This could involve:
Celebrating Success:
By leveraging the strengths of Flutter and Spring Boot, we have successfully built a user-
friendly, secure, and scalable e-commerce platform. This achievement paves the way for
businesses to establish a strong online presence, manage their product offerings efficiently,
and ultimately reach new customers in the ever-evolving world of online commerce.
The following sections will explore the limitations of the current application and delve
into exciting possibilities for future enhancements, ensuring the platform continues to
evolve and adapt to meet ever-changing user needs and market trends.
10.2 Limitations
Acknowledging Room for Growth
While our e-commerce platform built with Flutter and Spring Boot boasts impressive
functionalities, it's essential to acknowledge potential limitations and areas for
improvement. This proactive approach allows us to continuously refine the platform and
ensure it remains competitive in the dynamic e-commerce landscape.
Current Limitations:
64
Limited Features: The initial version of the platform might not encompass all
desired functionalities. Features like advanced search filters, product comparisons,
or social media integration might be absent.
Prioritizing Feature Development: User feedback and market trends can guide
the prioritization of future features. This might involve adding advanced search
functionalities, integrating social media login options, or implementing loyalty
programs.
65
10.3 Future Work
Charting the Course for Continued Innovation
66
10.4 Conclusion
A Platform Poised to Empower Businesses and Delight Users
This report has explored the meticulous journey of building an e-commerce platform with
Flutter and Spring Boot. From initial conception to rigorous evaluation, the project has
yielded a user-friendly, secure, and scalable platform poised to empower businesses and
delight users in the dynamic world of online commerce.
The successful integration of Flutter and Spring Boot has proven to be a winning formula.
Flutter's expertise in crafting intuitive mobile applications coupled with Spring Boot's
robust back-end infrastructure has resulted in a platform that delivers a seamless user
experience for customers and efficient product management for businesses.
By providing businesses with a powerful and feature-rich platform at their disposal, this
project has the potential to contribute to a more user-friendly and dynamic e-commerce
landscape.
In conclusion, this project has successfully demonstrated the power of combining Flutter
and Spring Boot to create a robust and user-centric e-commerce platform. With a
commitment to continuous improvement and embracing future advancements, this
platform stands ready to empower businesses and delight users for years to come.
67
11. References
2. Spring Boot Documentation: Spring Boot - Quick Start. (n.d.). Retrieved from
https://spring.io/quickstart
3. Spring Framework Documentation. (n.d.). Spring Framework - The right stack for
the right job. Retrieved from https://spring.io/projects/spring-framework