Files
eventmaster/README.md

7.8 KiB

HackMyCart

The most hackable Web Shop!

How to use

Prepare development environment

  1. Install node.js
sudo apt install npm

# If outdated version:
sudo npm install -g n
sudo n stable
  1. Download + extract the project
  2. Open the root folder with VS Code (recommended)
  3. Open the bash inside VS Code, navigate to the software/ folder and install all necessary packages:
npm i

Test/development

There are multiple commands to test parts or the whole project:

  • npm run dev: Starts the Vue frontend only
  • npm run server: Starts the ExpressJs backend only
  • npm run serve: Starts front- and backend

The frontend runs on http://localhost:5173/ and the backend on http://localhost:3000/

Compile for production

TODO

Structure

Database

database-erm

Backend API endpoints

The application host it's data in a SQLite database. The access is managed by an ExpressJs server which offers many REST-API endpoints for the frontend. The REST-API server runs on port 3000.


Validate

POST /accounts/login (Login for user)
Parameters
name type data type description
username required string Username of the account
password required string Password of the account
Responses
http code content-type response
200 application/json AccountObject + Addresses, Payments, AccountRole
400 application/json {code: 400, message: "Bad Request"}
401 application/json {code: 401, message: "Unauthorized"}

Listing existing

GET /products/ (Get all products)
Parameters

None

Responses
http code content-type response
200 application/json Array<ProductModel> + Category, Brand
GET /products/:id (Get a product by it's id)
Parameters
name type data type description
id required string ID of product in the database
Responses
http code content-type response
200 application/json ProductModel + Category, Brand
GET /orders/:id (Get all orders of an user)
Parameters
name type data type description
id required string ID of userAccount in the database
Responses
http code content-type response
200 application/json ProductModel + Order, OrderItem, Product
GET /categories/ (Get all Categories)
Parameters

None

Responses
http code content-type response
200 application/json Array<Categories>

Creating new

POST /accounts/ (Create a new account)
Parameters
name type data type description
None required object (JSON) Model of an Account
Responses
http code content-type response
201 application/json AccountModel
400 application/json {code: 400, message: "Username too short!"}
400 application/json {code: 400, message: "Password too short!"}
409 application/json {code: 409, message: "Username already in use"}
POST /products/ (Create a new product)
Parameters
name type data type description
None required object (JSON) Model of a Product
Responses
http code content-type response
201 application/json ProductModel
400 application/json {code: 400, message: "..."}
POST /orders/ (Create a new order)
Parameters
name type data type description
None required object (JSON) Model of an Order
Responses
http code content-type response
201 application/json OrderModel
POST /categories/ (Create a new category)
Parameters
name type data type description
None required object (JSON) Model of a Category
Responses
http code content-type response
201 application/json OrderModel
400 application/json {code: 400, message: "..."}

Updating existing

PATCH /accounts/ (Update data of an existing account)
Parameters
name type data type description
None required object (JSON) Model of an Account
Responses
http code content-type response
200 application/json AccountModel
400 application/json {code: 400, message: "..."}

Delete existing

DELETE /product/:id (Delete a product)
Parameters
name type data type description
id required string ID of product in the database
Responses
http code content-type response
200 application/json ProductModel
400 application/json {code: 400, message: "..."}
DELETE /categories/:id (Delete a category)
Parameters
name type data type description
id required string ID of category in the database
Responses
http code content-type response
200 application/json CategoryModel
400 application/json {code: 400, message: "..."}

Miscs

GET /api/ (Check if server runs)
Parameters

None

Responses
http code content-type response
200 None None
GET /resetDatabase/ (Reset the database to it's default values)
Parameters

None

Responses
http code content-type response
200 None None