Technologies Used: Python, Django,PostGreSQL,HTML,CSS

Foodhub is a web application entirely built using Python and Django with PostGreSQL as the database.Bootstrap is used to enhance the appearace of the web application and for creating a responsive mobile layout. I am using EatStreet API to get information about the restaurants in town. Most of the data processing work for this project is done using python and I have limited the amount of processing done on the front end. The main aim of the app is to provide the target audiance an easy and secured ordering of food online with easily navigatable options. This project is still under construction and thus this page will get updated as and when the work gets completed

Home page

The home page presents the user with a simple text option to search for restaurants at the specified location.Clicking on the Find restaurants will take them to a page which will provide them with a list of nearby restaurants and their details. There is also an option to signup and login provided at the nav bar. The user can sign up of login so that more information about the user can be stored with will be beneficial for the user as infomation about past orders addresses will be store

Signup page

The homepage also has a small info about how to use the application and provides the user a list of cities to choose from

Signup page

The signup page asks the user usual set of questions regrding userid and password

Home page

User profile

When a user clicks on the view all cities page he gets redirected to a page that list all the states in the United States

List States page

Clicking on a state will lead the user to a page which lists all the citits on that state

List Cities page

Further clicking on the cities will lead him to a page that lists all the restaurants in the particular city

List Cities Restaurants page

The restaurants listed has information about the address of the restaurant, Type of Cuisine, ratings of the restaurant minimum order for delivery , delivery fee and waiting time,. This page lists around 20 entries and there will be multiple entries based on total avilable restaurants in the particular cities.This feature wass done using pagination technique. This page also lists the nearby cities to the current city.There is also an option provided at the top for user to search for restaurant in their city

Find Who delivers in City

The user can also view a list of restaurants if they provide an address in the home page or in the above metioned page

Find Restaurants

The place listing is provided with the help of Google places API.On clicking the find restautants page will lead hi to a similar kind of page as we saw before but this time the user gets to see more options.

Find Restaurants

As you can see the user has multiple options. He can choose whether he wants delivery or pickup and select rating sof restaurants sort restaurants Alphabetically, by delivery time, select delivery time that he wants and also select the list of cuisines that he wants. The restaurant listings changes accordingly. For example sorting the list of restaurants with delivery fee will lists the restaurant in different order. Here I am sorting at the backend using python sort functionality and listing th restaurants from free delivery to the most expensive one

Restaurants sorted by Delivery Fee

Clicking on a restaurant will take you to a page that lists further information about the restaurants, such as the location,restaurant timings,mimimum delivery, contact number, type of cuisines.

Restaurant information

In addition the page alos lists the menu of the restaurant

Restaurant Menu

Restaurant information

Clicking on the menu brings about a dialog for user to choose if they require and additional items

Restaurant Menu Options

Clicking on add to cart add the items to the cart

Updated Cart

For the cart view a second application was created in Django to handle cart ralted operations. It handles all addition, removeal and upting cart elements.The cart is available on all pages of the app and the user has to just click on the cart icon to view the cart

Open cart on Home page

On clicking on the proceed to check out button a new page opens up which asks users to confirm the order details

Confirm Order

The confirmation page asks for user to save their address. The user if interested can save their address which will then show up on their profile page.I will add alos be adding the option of using past address in the order confirmation page very soon. Once the order is confirmed we can proceed to payment. The payment is handled using Stripe API. The card used for payment is then stored in the database. Django's EmailMessage is then used to send invoice to the customers regarding the payment. This is just a dummy payment. After payment the order history is stored in the separate database. This database is then queried to give the user their order history details in their profile page