- Abdul Kadir (@Abdulkadir98) (MSRIT)
- Chirag Mittal (@mittalchirag) (SRM)
- Shashank Holla (@shashankholla) (RVCE)
- QEats Restaurant App help restaurant owners and managers in managing their menu (items, availability, prices), order preparation time, order status, order history, and order notifications (like the arrival of order and/or cancellation of orders).
- This application will provide restaurant owners (or managers) a seamless and easy-to-use interface for managing their restaurant over QEats platform.
- By providing intuitive and easy access for restaurant owners (or managers) will result in an increase in the number of restaurants over QEats.
-
Front-End
-
-
Templates (Views) -
-
- HTML5
- CSS
- Angular-Material
-
Service Layer
-
- Angular
- TypeScript
-
-
Back-End
-
-
Rest Controllers, Exchanges, Services, Repository Services, Entities -
-
- Java
- Spring boot
-
-
Data Store
-
-
Database -
-
- MongoDB
-
Cache -
-
- Redis
-
-
Tools
- REST API
- JSON
- Postman
- JMeter
- IntelliJ
Current version has these flows implemented:
- Add item to menu
- Remove item from menu
- Edit attributes of a particular item in the menu
- Check the quantity of items available
- Update the quantity of items available
- Accept/Reject incoming orders based on availability of items
- Update order status - PREPARING, PACKED, Out For Delivery (OFD)
The current backend is hosted on cloud VM at this address 54.158.255.17:8081
Try sending curl -X GET http://54.158.255.17:8081/qeats/v1/menu?restaurantId=18471268
The current frontend is hosted at https://q-eats-restaurant.firebaseapp.com/
Note: the frontend won't be able to send request to backend. Since browser prevents sending request from HTTPS to HTTP. Run your browser to --allow-insecure-sources
Following APIs are developed on top of current QEats backend:
-
Adding an item to the menu
POST /qeats/v1/menu/item
-
Removing an item from the menu
DELETE /qeats/v1/menu/item
-
Edit the item in the menu
PUT /qeats/v1/menu/item
-
Edit the quantity of items available
PUT /qeats/v1/item/available
-
Get the quantity of items available
GET /qeats/v1/item/available?itemId=&restaurantId=
-
Get all the placed orders
GET /qeats/v1/orders/placed?restaurantId=
-
Accept/Reject the placed orders
PUT /qeats/v1/orders/placed
-
Get all the orders (which are not yet finished and are accepted)
GET /qeats/v1/orders?restaurantId=
-
Update status of order
PUT /qeats/v1/orders/placed
-
User Login
POST /qeats/v1/user/login
-
Get the menu of a restaurant
GET /qeats/v1/menu/item?restaurantId=
The contracts and spec sheets of each endpoint can be found here
The project is divided into two main folders namely:
/backend
for all the backend related code/fronend
for all the frontend related code/datastore
contains the database dump
You'll need:
-
Java JDK
sudo apt install default-jdk
-
Java JRE
sudo apt install default-jre
-
Gradle
Code already has a
gradle-5.2.X
zip file -
IntelliJ IDE
Head over: https://www.jetbrains.com/idea/download
You'll need:
-
NPM
sudo apt install npm
-
NodeJS v10 or later
sudo npm install n -g
For the latest stable version:sudo n stable
For the latest version:sudo n latest
-
Angular CLI
sudo npm install @angular/cli -g
You'll need:
-
MongoDB
Install monogdb:
sudo apt install mongodb
Run mongod:
sudo service mongod start
Verify installation
mongo --version
-
Redis
Install redis:
sudo apt install redis-cli
Verify installation:
redis-cli --version
- Go to the
/datastore
directory - Type
mongo restaurant-database --eval "db.dropDatabase()"
- Then type
mongorestore --host localhost --db restaurant-database --gzip --archive=restaurant-db.gz
From terminal:
- Go to
/backend
folder - Type
./gradlew bootrun
- Server will start on
localhost:8081
From terminal:
- Go to
/frontend
folder - Type
npm install
- Type
ng serve
- Go to
localhost:4200
in your favorite browser
Currently DB has data for this User's restaurant:
Username | Password | Restaurant ID |
---|---|---|
tester | Tester@123 | 18471268 |