Food Square Report
Food Square Report
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
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.
• Customers
• Restaurant 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.
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:
• 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.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
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..*
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.
7
3.1.2 Customer Location Prompt
But when the customer will try to order something from the website, location prompt will appear.
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.
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.
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.
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
12
3.1.8 Payment method
Customers can use either of cash on delivery or bkash payment method. Here, bkash payment is
shown.
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.
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.
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.
When the admin approves the request, email is sent stating the activation of the account.
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.
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.
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.
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.
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.
21
3.3.2 Add offer
Branch Manager can add offers on an item by clicking on that item.
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.
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.
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.
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.
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
27