Skip to content

This is my Bachelor project as a student. The main purpose of the application is to allow users to view the offers and order food from the restaurant. Users can track the status of their orders, which can be changed by employees. Users add items to the cart (Redux store) and then proceed to place their final order.

Notifications You must be signed in to change notification settings

bujakkristijan/food-ordering-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Food ordering application - Bachelor Project

This project was initiated during my bachelor's studies. Even though I've finished my studies, I'm still working on and improving the app, adding new features to make it better.

Project is implemented using ReactJS (Hooks) library and Java Spring Boot framework (Hibernate, Spring Secuirty with JSON Web token, REST API) with some additional libraries (Bootstrap, AXIOS, Sweetalert, Redux and few more).

Project specification

The main purpose of the application is to enable users to view restaurant menu, place food orders, then track the status of their orders, which can be updated by employees. The system consists of three user roles with specific capabilities:

  • ADMIN
  • EMPLOYEE
  • USER

The application can also be accessed by unregistered users, who have the following abilities:

  • Register an account
  • Browse the menu, select a type of the meal, and view the complete offerings within that type
  • Specify quantities and then add items to the cart
  • Confirm the final order by inserting their address and phone number
  • After successfully placing the final order, users will receive a message containing a link to track the status of their order

Registered users with the USER role can log into the system using their username and password. They have the following abilities:

  • Update their personal information
  • Order food similar to unregistered users, but without the need to enter their address and phone number since their data is already saved in the database.
  • Receive a 10% discount on every order
  • View their active orders (with ORDERED and IN PREPARATION status)
  • View the history of their orders (with IN DELIVERY status)

Users with the EMPLOYEE role have the following abilities:

  • Review all incoming orders and change their status to IN PREPARATION or IN DELIVERY, depending on whether the orders are being prepared or in the process of delivery.
  • View the history of all orders.

Users with the ADMIN role have the following abilities:

  • Create, delete (logically) and update meal types in the database (including uploading images)
  • Create, delete (logically) and update meals (including uploading images)
  • Logically delete users (change their isDeleted status, their data remains in the database)
  • View active final orders
  • Delete final orders and all their ordered items from the database
  • View the order history
  • Create, delete, and update employee data (users with the EMPLOYEE role)

Application has fully responsive design for users who order the food.

Application UI preview:

Users first need to select the specific category, then they can see complete offers for that category.

1-new

2-new 3-new

After choosing category (meal type), available meals (offers) will be listed.

4

5 6

Users can add items (meals) to the cart after they specify quantity. Default and minimum value for quantity is 1 and users can't go below that value. After clicking on Confirm button, item is successfully added to the cart.

7 8

9 10

Clicking on the cart button or icon in the navigation, users can see items from the cart.

11

12 13

Users that are not logged-in, need to insert details such as address and phone number.

14

Without inserting details, not logged-in users can't confirm the final order

15

Validation if inserted phone number is a number or it has less than 5 digits

16

17

After valid input, final order will be confirmed and not logged-in users can track their order status clicking on the link.

18

19

20

Clicking on Show items button, user can see all items from the (final) order that he ordered.

21 22

23 24

Logged-in users get 10% discount on the final price of their order. Also they don't need to insert details, such as address and phone number, because it's stored in the database after registration. Logged-in users also have more tabs and options.

25

26 27

Logged-in users can track their active orders (IN PREPARATION and ORDERED status) clicking on My active orders tab. Final orders with IN DELIVERY status will be visible clicking on My order history tab.

Clicking on Show items button, user can see his ordered items

28

29

30 31

Admin have option to delete final order and all its ordered items from the database, but he doesn't have an option to change status as employee can do (same component shows for both roles, but they don't have same available actions).

exc-admin-delete exc-admin-delete-2

Employee can see and change status of the final order depending on real status of the order, which user can track (but they can't delete them as Admin can do).

32

Clicking on Show items button, employee can see all items from the (final) order.

33

All orders with status IN DELIVERY are placed in order history, they aren't considered active anymore

34

Login component shows when the app starts.

35

36 37

Logged-in users can access their profile page where they edit profile or change password if necessary.

38

Edit profile

39

40 41

When user wants to change password, he needs to insert old password as well.

42

If inserted old password and password from the database don't match, he won't be allowed to save new password.

43

If they match, new password will be saved successfully (will be encripted and saved in the database)

44

Registration (unregistered users can sign up and they will have 10% off on every order)

45

Validation and alert if username already exists in the database.

46

Validation and alert if email already exists in the database

47

Registration design for mobile screen size

48

About

This is my Bachelor project as a student. The main purpose of the application is to allow users to view the offers and order food from the restaurant. Users can track the status of their orders, which can be changed by employees. Users add items to the cart (Redux store) and then proceed to place their final order.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published