Cmts Report-7
Cmts Report-7
PROJECT REPORT
ON
MICRO PROJECT ON
“Pizza Order System”
(Cloud Computing)
(4360709)
SUBMITTED BY
HADIYAL MANSHI P. (226090307034)
MANDALIYA AAYUSHI D. (226090307072)
COMPUTER ENGINEERING
CERTIFICATE
This is to certify that the Mini Project entitled “Pizza Order System” has
been carried out by HADIYAL MANSHI P. (226090307034). under my
guidance in partial fulfillment of the degree of Diploma Engineering in
COMPUTER ENGINEERING 6th Semester of Gujarat Technological
University, Ahmedabad during the academic year 2025.
COMPUTER ENGINEERING
CERTIFICATE
This is to certify that the Mini Project entitled “Pizza Order System” has
been carried out by MANDALIYA AAYUSHI D. (226090307072). under my
guidance in partial fulfillment of the degree of Diploma Engineering in
COMPUTER ENGINEERING 6th Semester of Gujarat Technological
University, Ahmedabad during the academic year 2025.
2 Functional Requirements
7 Summary of Project
8 References
Introduction to the Project.
The Pizza Order System is a cloud-based web application developed as part of a cloud
computing project, aiming to modernize and simplify the online food ordering experience. It
leverages Firebase for backend services such as authentication, real-time database operations,
and secure data storage. The system provides a seamless platform where users can interact
with an intuitive interface to place pizza orders conveniently from any device.
• Interactive Pizza Menu: Users can view available pizzas, each with images, descriptions,
and prices.
• Size Selection: Users can select pizza sizes (Small, Medium, Large) before placing an
order.
• Order Placement: Order details are stored in Firebase Firestore or Realtime Database,
allowing real-time order management.
• Review System: Users can write reviews and rate pizzas based on their experience.
• Contact Form: Users can send messages, feedback, or inquiries directly to the
restaurant.
• Responsive Design: The app works well on mobiles, tablets, and desktops.
• Real-Time Updates: Firebase ensures real-time syncing of orders and reviews without
requiring page reloads.
Functional Requirements of Project
• User Authentication: Users can register and login securely using Firebase
Authentication.
• Pizza Selection: Users can browse through a variety of pizzas available on the menu.
• Size Selection: Users can select different pizza sizes (Small, Medium, Large) while
ordering.
• Order Placement: Orders are stored and managed using Firebase Realtime Database /
Fire store.
• Contact Form: Users can send feedback or queries directly to the restaurant.
• Pizza Reviews: Users can leave reviews and ratings for pizzas they have ordered.
• Responsive UI: The system is accessible across different devices (mobile, tablet,
desktop).
• Real-time Updates: Firebase ensures real-time order and review updates without
page reloads.
Sample code/Architecture
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sam's Pizza - Sign Up</title>
<style>
body {
font-family: Arial, sans-serif;
background: url('img/res-back.png') no-repeat center center/cover;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
}
.container {
background: rgba(255, 255, 255, 0.9);
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
width: 350px;
text-align: center;
}
h1 {
color: #ff5722;
margin-bottom: 10px;
}
input {
width: 100%;
padding: 10px;
margin: 10px 0;
border: 1px solid #ccc;
border-radius: 5px;
}
button {
width: 100%;
padding: 10px;
background: #ff5722;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
button:hover {
background: #e64a19;
}
p{
margin-top: 10px;
}
a{
color: #ff5722;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
</style>
</head>
<body>
<div class="container">
<h1>Sam's Pizza</h1>
<div class="form-container sign-up-container">
<form id="signupForm">
<h2>Sign Up</h2>
<input type="text" id="signupName" placeholder="Name" required>
<input type="email" id="signupEmail" placeholder="Email" required>
<input type="password" id="signupPassword" placeholder="Password" required>
<button type="submit">Sign Up</button>
<p>Already a user? <a href="login.html">Login</a></p>
</form>
</div>
</div>
<script type="module">
import { initializeApp } from "https://www.gstatic.com/firebasejs/10.7.1/firebase-
app.js";
import { getAuth, createUserWithEmailAndPassword } from
"https://www.gstatic.com/firebasejs/10.7.1/firebase-auth.js";
const firebaseConfig = {
apiKey: "AIzaSyDoKSsctUXbT6jeaACMpoJVebDUqeKh48Y",
authDomain: "sams-pizza-fb07b.firebaseapp.com",
projectId: "sams-pizza-fb07b",
storageBucket: "sams-pizza-fb07b.firebasestorage.app",
messagingSenderId: "455489855177",
appId: "1:455489855177:web:7fd82564f94c27f8da3718",
measurementId: "G-C3QLVE9FYL"
};
const app = initializeApp(firebaseConfig);
const auth = getAuth(app);
document.getElementById("signupForm").addEventListener("submit", function(event)
{
event.preventDefault();
</script>
</body>
</html>
review.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Review Us - Sam's Pizza</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/5.15.3/css/all.min.css">
<style>
html,body {
font-family: Arial, sans-serif;
height: 100%;
margin: 0;
display: flex;
flex-direction: column;
background: #f4f4f4;
}
.navbar {
background: rgba(255, 255, 255, 0.9);
padding: 15px;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
.navbar h1 {
color: #ff5722;
margin: 0;
padding-left: 20px;
}
.nav-links {
list-style: none;
display: flex;
margin: 0;
padding-right: 20px;
}
.nav-links li {
margin: 0 15px;
}
.nav-links a {
text-decoration: none;
color: #ff5722;
font-weight: bold;
transition: 0.3s;
}
.nav-links a:hover {
color: #e64a19;
}
/* Review Section */
.review-section {
flex: 1;
padding: 60px 20px;
text-align: center;
background-color: #ffffff;
}
.review-section h3 {
font-size: 2.5rem;
margin-bottom: 40px;
color: #ff5722;
}
.review-section p {
font-size: 1.2rem;
margin-bottom: 40px;
color: #555;
line-height: 1.8;
max-width: 800px;
margin: 0 auto;
}
/* Form Section */
.form-container {
max-width: 700px;
margin: 0 auto;
background-color: #f9f9f9;
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.form-container input,
.form-container textarea {
width: 100%;
padding: 15px;
margin: 10px 0;
border: 1px solid #ddd;
border-radius: 5px;
font-size: 1rem;
}
.form-container button {
background-color: #ff5722;
color: white;
border: none;
padding:
12px 30px;
font-size: 1.2rem;
border-radius: 5px;
cursor: pointer;
transition: 0.3s;
}
.form-container button:hover {
background-color: #e64a19;
}
/* Star Rating */
.stars {
display: flex;
justify-content: center;
margin-bottom: 20px;
}
.stars i {
font-size: 2rem;
color: #ddd;
cursor: pointer;
transition: 0.3s;
}
.stars i:hover,
.stars i.selected {
color: #ff5722;
}
.footer {
background-color: #ff5722;
color: white;
text-align: center;
padding: 20px 0;
font-size: 1.2rem;
margin-top: auto;
}
.footer a {
color: white;
text-decoration: none;
margin: 0 10px;
font-weight: bold;
}
.footer a:hover {
color: #e64a19;
}
</style>
</head>
<body>
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
const auth = getAuth(app);
stars.forEach(star => {
star.addEventListener('click', () => {
rating = parseInt(star.getAttribute('data-star'));
stars.forEach(s => {
s.classList.remove('selected');
if (parseInt(s.getAttribute('data-star')) <= rating) {
s.classList.add('selected');
}
});
});
});
if (!loggedInUserEmail) {
alert("Please log in to submit a review.");
return;
}
if (rating === 0) {
alert("Please rate your experience by selecting stars.");
return;
}
try {
await addDoc(collection(db, "reviews"), {
email: loggedInUserEmail, // Store user's email
rating: rating,
review: reviewText,
timestamp: new Date()
});
alert("Thank you for your review! Your feedback has been submitted.");
document.getElementById("reviewForm").reset(); // Reset the form
stars.forEach(s => s.classList.remove('selected')); // Clear stars
rating = 0;
} catch (error) {
console.error("Error adding document: ", error);
alert("Failed to submit review. Please try again.");
}
});
</script>
</body>
</html>
OUTPUT
Application of your Project
• Online Food Delivery Platforms: Similar systems can be used by restaurants to receive
online orders.
• Event Catering Services: Customers can pre-order food for events through such
platforms.
• Educational Projects: Useful for learning about cloud databases, authentication, and
real-time apps.
• Small Business Solutions: Helps small pizza businesses establish an online presence
quickly.
Advantages and Disadvantages of Project
Advantages:
Cloud-Based: No need for manual server management; Firebase handles hosting and
database.
Real-time Data: Orders and reviews are updated instantly without reloading the page.
Scalability: Can handle growing numbers of users and orders easily.
Secure Authentication: Firebase provides secure login and user data management.
Cost-Effective: Firebase offers free tiers, making it budget-friendly for small projects.
Disadvantages:
Firebase Limits: Free tier has usage limits; scaling might require a paid Firebase plan.
Vendor Lock-in: Tightly coupled with Firebase services; migrating to another backend
may be complex.
The Pizza Order System is a web-based application designed to streamline the process of
ordering pizzas online. It allows users to view the pizza menu, place orders, history, and
view their user profiles. The system is developed using JavaScript with Node.js for backend
functionality and HTML/CSS for the frontend interface, offering a responsive and user-
friendly experience.
References
1. https://docs.expo.dev/guides/using-firebase/
2. https://www.youtube.com/watch?v=9kRgVxULbag&themeRefresh=1
3. https://www.youtube.com/watch?v=1awiPrGcqqI