0% found this document useful (0 votes)
24 views28 pages

Food Square Report

This document describes a food delivery software project called FoodSquare. It includes a vision statement outlining project goals of creating an online restaurant management system. It describes four types of users - customers, restaurant managers, branch managers, and deliverymen. Key features are a manager dashboard, food search/filtering, integrated delivery module, and rating systems. The document also provides milestones and outlines the tools/frameworks used, including Django for the backend, PostgreSQL for the database, and AngularJS, Bootstrap, and Google Maps API for the frontend.

Uploaded by

raghuvaran84u
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views28 pages

Food Square Report

This document describes a food delivery software project called FoodSquare. It includes a vision statement outlining project goals of creating an online restaurant management system. It describes four types of users - customers, restaurant managers, branch managers, and deliverymen. Key features are a manager dashboard, food search/filtering, integrated delivery module, and rating systems. The document also provides milestones and outlines the tools/frameworks used, including Django for the backend, PostgreSQL for the database, and AngularJS, Bootstrap, and Google Maps API for the frontend.

Uploaded by

raghuvaran84u
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 28

COMPUTER SCIENCE AND ENGINEERING

BANGLADESH UNIVERSITY OF ENGINEERING AND TECHNOLOGY

Software Engineering Project


Project Name: FoodSquare

CSE 408
Group 08

Group members:
Masum Rahman (1505014)
Subangkar Karmaker (1505015)
Md. Mohaiminul Islam (1505018)
Contents
1 Vision Statement 2
1.1 Project Goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Users of the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Project Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Milestones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Architecture and Design 3


2.1 Tools and Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Entity Relationship Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 User Guide 7
3.1 Customer User Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.1 Restaurant Homepage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1.2 Customer Location Prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.3 Customer Registration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.4 View Restaurants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.1.5 Browse Cuisines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.1.6 Branch Unavailability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.7 Adding food to cart and Checkout . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1.8 Payment method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.9 Order Placing notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.10 Rate the Deliveryman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.11 Rate and Comment Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Restaurant Manager User Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.1 Manager Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2 Restaurant Manager Homepage . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.3 Restaurant Branch Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.4 Add Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2.5 Manager Dashboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Restaurant Branch Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Item Availability in the branch . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.2 Add offer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3 Manage and Accept Orders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4 Deliveryman User Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.1 Deliveryman Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.2 Deliveryman Homepage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.4.3 Complete the Delivery Process . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4.4 Previous Deliveries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1
1 Vision Statement
1.1 Project Goals
Foodsquare is an online restaurant management system. It works as a restaurant hub where people
can browse and order food online easily. Now a days, many people in Dhaka city, especially the young
generation, often want to order food from restaurants online with home delivery service. Thus, we
built a restaurant management system where all the restaurants information, services will be available.
We also offer deliverymen will deliver the foods as well, in case a restaurant does not have delivery
support.

1.2 Users of the Project


Foodsquare has four (4) kind of users. They are:

• Customers

• Restaurant Managers

• Restaurant Branch Managers

• Deliveryman

Apart from the users, there is a superuser named admin. Anyone can connect to the system as
customer, restaurant manager, deliveryman. admin will verify the Trade Licence No. and many other
details of a restaurant before connecting it to the system. Similarly, a deliveryman will also get checked
by the admin about whether s/he is capable enough to work as a deliveryman.

1.3 Project Features


There are many features that are implemented in the project. Among these, key features of our project
are as follows.

• Dashboard for the restaurant managers

• Search and filter food items

• Our own delivery module

• Bi-directional rating system between deliveryman and customer

• Offers and Discounts

• Rating and review submission system

2
1.4 Milestones
According to CSE 408 Software Engineering course’s outline, we created the milestones of our project
which is shown below.
Week Task
Week 03 Project Update: Database Design and Implementation
Week 04 Project Update: User Account module
First Prototype demonstration; Manager Profile implementation and Restaurant
Week 05
management module
Week 06 Project Update: Order management module
Week 07 Project Update: Branch management implementation
Week 08 Second Prototype demonstration; Review, Delivery module implementation
Week 09 Project Update: Adding Notifications and other issues resolved
Week 10 Project Update: Offer and Discounts
Week 11 Unit Testing: Testing with different types of data and error resolve
Week 12 Project Update: Dashboard implementation from manager side
Week 13 Project Update:

2 Architecture and Design


2.1 Tools and Frameworks
For our coding, we used the following tools and fram in osur project.

• Frontend

– HTML
∗ CSS
∗ Bootstrap
– Javascript
∗ Angular JS
∗ JQuery
∗ Google Maps API

• Backend

– Django

• Database

– Postgresql v10.2

3
2.2 Entity Relationship Diagram
The Entity Relationship Diagram of the project is provided in the next page.

4
django.contrib.contenttypes.models.ContentType
app_label CharField
model CharField
objects ContentTypeManager
permission_set QuerySet

1
0..*

django.contrib.auth.models.Permission
codename CharField
content_type ForeignKey
group_set QuerySet
name CharField
objects PermissionManager

0..* 0..*
0..*

django.contrib.auth.models.Group
name CharField
objects GroupManager
permissions ManyToManyField
user_set QuerySet

0..*
0..* 0..*

accounts.models.User
is_branch_manager BooleanField
is_customer BooleanField
is_delivery_man BooleanField
is_manager BooleanField
is_suspended BooleanField
order_set QuerySet

1 1 1 0..* 1 1

1
1
1
accounts.models.DeliveryMan
accounts.models.Restaurant
address CharField accounts.models.UserProfile
restaurantImg ImageField
avatar ImageField address TextField
restaurant_key CharField
contactNum CharField avatar ImageField
restaurant_name through = 'browse.BranchComment';
CharField
delivery_set QuerySet first_name CharField
restaurantbranch_set QuerySet
name CharField last_name CharField
trade_license CharField
nid CharField user OneToOneField
user OneToOneField
user OneToOneField
1
1
0..* 0..* 1

accounts.models.RestaurantBranch
branch_email CharField browse.models.Package
0..* branch_location CharField available BooleanField

accounts.models.Delivery branch_location_details CharField branch_details ManyToManyField


branch_mobilenum CharField category CharField
address CharField
branch_name CharField comments ManyToManyField
address_desc CharField accounts.models.Payment
branch_phonenum CharField details CharField
charge FloatField bkash_ref CharField
closing_time FloatField for_n_persons IntegerField
deliveryman ForeignKey order_set QuerySet
comments ManyToManyField image ImageField
location CharField payment_status CharField
image ImageField ingr_list ManyToManyField
order_set QuerySet payment_type CharField
location_area CharField is_vegeterian BooleanField
rating_deliveryman IntegerField price FloatField
opening_time FloatField order_set QuerySet
rating_user IntegerField
order_set QuerySet 1 pkg_name CharField
time DateTimeField
ratings ManyToManyField price IntegerField
1 restaurant ForeignKey ratings ManyToManyField
running BooleanField restaurant ForeignKey
user OneToOneField
0..* 1
1
0..* 0..* 0..* 0..* 0..* through = 'OrderPackageList';

accounts.models.Order
branch ForeignKey
delivery ForeignKey
mobileNo CharField
order_status CharField
orderpackagelist_set QuerySet
payment ForeignKey
pkg_list ManyToManyField
time DateTimeField
user ForeignKey

1
0..* 0..*

accounts.models.OrderPackageList
order ForeignKey
package ForeignKey
price FloatField
quantity IntegerField
django.contrib.contenttypes.models.ContentType
app_label CharField
model CharField
objects ContentTypeManager
permission_set QuerySet

1
0..*

django.contrib.auth.models.Permission
codename CharField
content_type ForeignKey
group_set QuerySet
name CharField
objects PermissionManager

0..* 0..*
0..*

django.contrib.auth.models.Group
name CharField
objects GroupManager
permissions ManyToManyField
user_set QuerySet

0..*
0..* 0..*

accounts.models.User
is_branch_manager BooleanField
is_customer BooleanField
is_delivery_man BooleanField
is_manager BooleanField
is_suspended BooleanField
packagecommentreact_set QuerySet

0..* 1 0..* 1 0..* 1 1 1 0..* 1 1 1

accounts.models.Restaurant
restaurantImg ImageField
restaurant_key CharField
restaurant_name CharField through = 'browse.BranchComment';
restaurantbranch_set QuerySet
trade_license CharField
user OneToOneField

1 1
0..* 0..* 1

accounts.models.RestaurantBranch
branch_email CharField
branch_location CharField
through = 'PackageComment'; through = 'BranchCommentReact';
branch_location_details CharField
branch_mobilenum CharField
branch_name CharField
branch_phonenum CharField
browse.models.Ingredient branchcomment_set QuerySet
ingredientlist_set QuerySet closing_time FloatField
name CharField comments ManyToManyField
image ImageField
1 0..*
location_area CharField
through = 'PackageCommentReact';
opening_time FloatField
ratings ManyToManyField
through = 'IngredientList';
restaurant ForeignKey
running BooleanField
user OneToOneField

0..* 1 1 1
through = 'PackageBranchDetails';
0..* 0..* 0..* 0..*

browse.models.Package
available BooleanField
branch_details ManyToManyField 0..* 0..* 0..*
category CharField
comments ManyToManyField 0..* 0..* browse.models.BranchComment
details CharField browse.models.BranchRating branch ForeignKey
for_n_persons IntegerField branchcommentreact_set QuerySet
branch ForeignKey
image ImageField comment CharField
rating IntegerField
ingr_list ManyToManyField reacts ManyToManyField
user ForeignKey
is_vegeterian BooleanField time DateTimeField
packagerating_set QuerySet user ForeignKey
pkg_name CharField
1
price IntegerField
ratings ManyToManyField
restaurant ForeignKey

1 1 1 1

0..* 0..*

0..* 0..* 0..* browse.models.PackageBranchDetails


available BooleanField 0..* 0..*
browse.models.PackageComment 0..* 0..*
0..* 0..* branch ForeignKey
comment CharField browse.models.BranchCommentReact
offer_buy_n IntegerField browse.models.PackageRating
package ForeignKey browse.models.IngredientList disliked BooleanField
offer_discount IntegerField package ForeignKey
packagecommentreact_set QuerySet ingredient ForeignKey liked BooleanField
offer_expire_date DateField rating IntegerField
reacts ManyToManyField package ForeignKey post ForeignKey
offer_get_n IntegerField user ForeignKey
time DateTimeField user ForeignKey
offer_start_date DateField
user ForeignKey
offer_type CharField
1 package ForeignKey

0..* 0..*

browse.models.PackageCommentReact
disliked BooleanField
liked BooleanField
post ForeignKey
user ForeignKey
3 User Guide
This is a sample user guide that will work as a walk-through of the major functionalities of the
FoodSquare website. As mentioned above, there are 4 kinds of users in this system. A user guide is
provided for each kind of user below.

3.1 Customer User Guide


3.1.1 Restaurant Homepage
Most of the users of the website will be of this category. Initially, a customer will be able to browse
through the website even without login. Thus, every time a customer enters the website, the customer
home page will be loaded.

Figure 1: Website Homepage

7
3.1.2 Customer Location Prompt
But when the customer will try to order something from the website, location prompt will appear.

Figure 2: Customer Location prompt

3.1.3 Customer Registration


After entering location, the customer will be able to browse the website as before but cannot order
until login/register is done.

Figure 3: Customer Registration

8
3.1.4 View Restaurants
While browsing the items, a customer can filter the items via many different search categories. Among
these, in the Restaurants page, a user will be able to see only the restaurants that are close to him/her.

Figure 4: Nearby Restaurants

9
3.1.5 Browse Cuisines
Also, in the Browse Cuisines page, a user can browse items based on many filters and search options.
For example, a user can filter the items based on ratings on the items, price range etc.

Figure 5: Filter Results

Figure 6: Search results

10
3.1.6 Branch Unavailability
Depending on the location, restaurant branch availability will be determined and some of the restau-
rants may not be able to deliver to the intended location of the customer.

Figure 7: Branch Unavailability

11
3.1.7 Adding food to cart and Checkout
After browsing, customers can order from a nearby restaurant, checkout the cart, and then the cus-
tomer will be taken to the checkout page where delivery details will be asked.

Figure 8: Cart

Figure 9: Delivery Details

12
3.1.8 Payment method
Customers can use either of cash on delivery or bkash payment method. Here, bkash payment is
shown.

Figure 10: bKash Payment Info

Figure 11: bKash Payment Complete

13
3.1.9 Order Placing notification
At this point order has been placed. Now it will be approved by the restaurant manager. Usually the
manager approves the order within a short time. By this time a notification will appear stating that
the order has been placed and sent to the restaurant authority.

Figure 12: Order Placing Notification

3.1.10 Rate the Deliveryman


By this time the customer can browse through the website and wait. As the order information keeps
getting propagated, customer will be getting notifications for his order. Once the deliveryman arrives
with the order, customer will be able to rate the deliveryman for the service in the homepage.

14
3.1.11 Rate and Comment Items
Also, a customer can rate a particular item of a restaurant by clicking on View Item in that item while
browsing. S/he can also provide feedback as a comment.

Figure 13: Rate and Comment an item

15
3.2 Restaurant Manager User Guide
3.2.1 Manager Register
A restaurant manager will need to open up an account as a restaurant manager in the website. The
registration form will look like this.

Figure 14: Manager Register 1

Figure 15: Manager Register 2

When the admin approves the request, email is sent stating the activation of the account.

Figure 16: Email for Account Activation

16
3.2.2 Restaurant Manager Homepage
In restaurant manager homepage, there will be a key to identify the restaurant. This key will be used
for opening up the restaurant branches.

Figure 17: Restaurant Manager Homepage

17
3.2.3 Restaurant Branch Creation
Opening up a restaurant branch is just the same as opening up a new restaurant. In the restaurant
register page, there is also an option to create restaurant branch. Providing all the relevant fields along
with the restaurant key from the restaurant manager homepage (mentioned above), a new branch of
the restaurant can be created.

Figure 18: Restaurant Branch Manager Register

18
3.2.4 Add Items
A restaurant manager can add item in his restaurant. In the Add Item tab, manager will be able to
introduce a new item in the restaurant.

Figure 19: Add Item

19
3.2.5 Manager Dashboard
Also, a manager can see the restaurant statistics in the Dashboard page. The Dashboard page contains
many of the common statistics which will help him understand the restaurant sale progress. Outlet
revenue, sales trend in different branches etc. are shown in this page.

Figure 20: Manager Dashboard 1

Figure 21: Manager Dashboard 2

20
3.3 Restaurant Branch Manager
A restaurant branch manager will be in charge of a branch of a restaurant. So, his role in this website
in also different from a Restaurant Manager. When the restaurant manager sets up the profile for the
branch manager, s/he can manage this branch independently.

3.3.1 Item Availability in the branch


Branch Manager can declare which items are currently available in the homepage.

Figure 22: Branch Manager View Menus

21
3.3.2 Add offer
Branch Manager can add offers on an item by clicking on that item.

Figure 23: Add Offer

22
3.3.3 Manage and Accept Orders
This is the most important task of a branch manager. Whenever a customer orders something, the
order request comes to the branch manager who has to accept it and forward it to the deliveryman.

Figure 24: Accept Order

23
3.4 Deliveryman User Guide
In our system, anyone can become a deliveryman if s/he is willing to be. Anyone can open up a profile
in the website as a deliveryman, but it will need approval from the admin.

3.4.1 Deliveryman Register


While opening an account, deliveryman has to assign himself/herself for one of the zones. S/he will
be getting deliveries for that zone only.

Figure 25: Deliveryman Register

24
3.4.2 Deliveryman Homepage
Once logged in, a deliveryman’s homepage will have currently pending requests of orders in his/her
zone. To take an order for delivery, the Take Delivery button is to be pressed.

Figure 26: Deliveryman Homepage

25
3.4.3 Complete the Delivery Process
Then, that order entry will be updated and will be waiting for the deliveryman to pick up and deliver.
Once delivered to the customer, the deliveryman needs to press the Mark As Delivered button. This
will also prompt the deliveryman to rate the customer for his/her behaviour.

Figure 27: Delivery Completion

Figure 28: Rate the Customer

26
3.4.4 Previous Deliveries
For a deliveryman who has been in the website and delivered many orders, s/he can check all his/her
past deliveries in the Delivered Order

d.png

Figure 29: Previous Deliveries

27

You might also like