Minor Project
Minor Project
BACHELORS IN TECHNOLOGY
By
Rishab Goel
Programme- B.TECH (CSE) [8 semester]
Enrollment no-00716403219
(i)
ACKNOWLEDGEMENT
(ii)
TABLE OF CONTENTS
S. TOPIC Pg-no
NO.
1. DECLARATION (i)
2. ACKNOWLEDGEMENT (ii)
3. INTRODUCTION 1-1
5. OBJECTIVE 1-1
8. CONCLUSIONS 10-10
9. REFERENCES 10-10
1. INTRODUCTION
The Project presented in this report is a food delivery app that provides food
delivery at your door in very less time and with the best packaging. Providing food
from every famous food place near you. It helps users order food with the best user
experience.
2. PROBLEM STATEMENT
The traditional ordering system suffers from many problems like long waiting
time,and no customizations as per customer’s needs,no tracking of order, no
information for comparision of prices for the service provided by different service
providers and unavailability of many restaurants providing food items.
Our proposed system is an online food ordering system that enables ease for the
customers. It overcomes the disadvantages of the traditional queueing system. Our
proposed system is a medium to order online food hassle free from restaurants as
well as mess service. This system improves the method of taking the order from
customer. The online food ordering system sets up a food menu online and
customers can easily place the order as per their wish. The app considers the need
of the customers who have moved to new cities, and do not have the time to
prepare food themselves. The app provides all the information and details about
food at a single platform and customers can view different food items and
compare their prices and select the best option that suits their needs. The admin
lists the food items and prices collected from different hotels and mess.
3.OBJECTIVE
Users should be able to log in and after logging in,user is presented with
information about list of available food items.User then sees amount to be paid.
After that user can leave review/comment.This system will lead to increase in
ticket booking efficiency,and will make the process easy,simple,user friendly,less
time consuming as compared to manual work.
4. TECHNOLOGY USED
4.1 FLUTTER
It is used to create beautiful UI, generate clean code, and deploy the app stores or
web with custom functions.
4.2 FIREBASE
Firebase is used to store user authentication data, database related to project, and
integrate frontend of the project with backend as firebase. (1)
5. PROPOSED WORK
Our food delivery app consists of user sign in/sign up page with credentials like
email and password validated at client side. Then user is presented with
dashboard that contains a list of food items. Each food item has a separate page
which contains list of restaurants providing the same. User can see description of
each food item,its location,price and add to cart the required quantities of it to the
cart.He can mark food items as favourite and that list is stored in favourites
section.User can also leave review about food item he/she can then place order
and check the bill to be paid and enter the location of delivery.
6.1 Implemented Sign up page for new users containing fields like
name,email,password, phone no with validations for email and password.
6.2 Implemented Sign in page for existing users containing fields like
email,password, with validations for email and password.The user data
from sign in and sign up is stored at firebase backend. (2)
Fig 2: Sign up Page
6.5 CODE
Main.dart
Import 'dart:developer'; (4)
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:food_delivery_app/config/app_theme.dart';
import 'package:food_delivery_app/splash_screen.dart';
import 'firebase_options.dart';
void main()async{
try {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
} catch (e,s) {
log("ERROR : Initialization Error , $e",stackTrace: s);
}
runApp(const MyApp());
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Food',
debugShowCheckedModeBanner: false,
theme: Themes.lightTheme,
home: const SplashScreen()
);
}
}
Dashboard.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:food_delivery_app/controllers/bottom_nav_controller.dart';
import 'package:food_delivery_app/screens/cart_screen.dart';
import 'package:food_delivery_app/screens/home_screen.dart';
import 'package:food_delivery_app/screens/profile_screen.dart';
import 'package:food_delivery_app/widgets/app_drawer.dart';
import 'package:get/get.dart';
@override
_DashboardState createState() => _DashboardState();
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: ()async{
if(_bottomNavController.currentIndex!=0){
_bottomNavController.changeRoute(index: 0);
return false;
}
return true;
},
child: Scaffold(
key: _scaffoldKey,
appBar: PreferredSize(
preferredSize: const Size(double.infinity,55),
child: Obx((){
int index=_bottomNavController.currentIndex;
return AppBar(
leading: IconButton(
icon: Icon(
CupertinoIcons.bars,
size: 30,
),
onPressed: (){
_scaffoldKey.currentState?.openDrawer();
},
),
title: Text(
index==0
? "Foodie"
: index==1
? "Cart" (6)
: "Profile",
style: const TextStyle(
fontWeight: FontWeight.w600,
fontSize: 20
),
),
actions: [
// if(index==0)
// CustomIconButton(
// onPressed: (){
// // AppNavigator.push(context, NotificationScreen());
// },
// icon: Icons.notifications_on_rounded,
// )
]
);}
),
),
drawer: AppDrawer(),
body: PageView(
controller: _bottomNavController.pageController,
children: [
HomeScreen(),
CartScreen(),
ProfileScreen(),
],
onPageChanged: (index) {
_bottomNavController.setIndex=index;
},
),
bottomNavigationBar: Obx((){
return Container(
decoration: BoxDecoration(
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.grey.withOpacity(0.8),
blurRadius: 16,
),
],
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(12),
topRight: Radius.circular(12),
), (7)
),
child: ClipRRect(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(12),
topRight: Radius.circular(12),
),
child: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
// backgroundColor: Themes.colorPrimary,
currentIndex: _bottomNavController.currentIndex,
items: const [
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.home),
label: "Home"
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.cart, size: 22,),
label: "Cart"
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.person),
label:"Profile"
),
],
onTap: (int index) {
_bottomNavController.changeRoute(index: index);
},
),
),
);
})
),
);
}
}
(8)
6.6 DATA FLOW DIAGRAM
Fig-5: Data flow diagram showing interaction of user with system and flow of
data between different components.
7. WORK TO BE DONE
7.1 Implement favourite page showing the list of food items marked
favourite by the users.
7.2 Implement cart page showing list of different food items and their
quantity added by the user.
9. REFERENCES
(10)