./ ├── .gitignore ├── LICENSE ├── README.md ├── Report.pdf ├── assets/ ├── client-mall/ ├── client-whadmin/ ├── server/ └── database/ ├── mysql/ └── mongodb/
.gitignore
: This file tells git which files it should not track / not maintain a version history for.LICENSE
: MIT License.README.md
: The current file. Contains the necessary information and instructions to set up and run this project locally, the link to the video demonstration for this project, and contribution information.Database-Design-and-Implementation-Report.pdf
: The Database Design and Implementation report as required on the Assessment page on Canvas.assets/
: This folder contains the Project Requirement Specifications PDF file and other miscellaneous medias.client-mall/
: This NodeJS project directory contains the source code for the Mall frontend client.client-whadmin/
: This NodeJS project directory contains the source code for the Warehouse Administrator's frontend client.server/
: This NodeJS project directory contains the source code for the Warehouse Administrator's frontend client.database/mysql
: This NodeJS project folder contains the setup script (NodeJS), utilities SQL scripts, and sample data for the local MySQL database instance. See Installation - Database - MySQL below for more detail.database/mongodb
: This NodeJS project folder contains the setup script (NodeJS) and sample data for the local MongoDB database instance. See Installation - Database - MongoDB below for more detail.
- Database: MySQL and MongoDB.
- Backend API Server: NodeJS, Express, and Mongoose.
- Frontend: Vite, React, Bootstrap, and Axios.
Dependency | Version |
---|---|
NodeJS | 18.*.* |
MySQL Community Server | 8.0.33 |
MySQL Shell | 8.0.33 |
MongoDB Community Server | 6.0.* |
-
From the project's root directory, navigate to
database/mysql/
directory:cd database/mysql
-
Initialize the MySQL database:
-
Without mock-data:
npm ci npm run setup # You will be prompted for your MySQL server root username and password
-
With mock-data (Optional - for testing purpose only):
npm ci npm run setup-with-mock-data # You will be prompted for your MySQL server root username and password
-
Alternatively, you can manually set up the MySQL database using MySQL Shell and our provided SQL setup scripts for more granular control:
- Connect to your local instance of MySQL as the root user:
mysql -u<root-username> -p
- Execute the setup SQL scripts located in the
database/mysql/
directory in the following order:source reset.sql
(Warning - this will wipe all existing data)source init/tables.sql
source init/indexing.sql
source init/business_rules.sql
source init/users.sql
source init/mock_data.sql
(Optional - for testing purpose only)
- Connect to your local instance of MySQL as the root user:
-
-
From the project's root directory, navigate to
database/mongdodb/
directory:cd database/mongodb
-
Initialize the MongoDB database:
-
Without mock-data:
npm ci npm run setup
-
With mock-data (Optional - for testing purpose only):
npm ci npm run setup-with-mock-data
-
cd server
npm clean-install
cd client-mall
npm clean-install
cd client-whadmin
npm clean-install
- Make sure your local instance of MySQL is running and have been initialized according to the instructions above.
- Make sure your local instance of MongoDB is running and have been initialized according to the instructions above.
- Start API server:
This will start the API server listening at http://localhost:3000/
cd server npm run start
- Start Mall frontend:
This will start the Mall frontend at http://localhost:3001/
cd client-mall npm run dev
- Start Warehouse Dashboard frontend:
This will start the Warehouse Dashboard frontend at http://localhost:3002/
cd client-whadmin npm run dev
Available on YouTube.
SID | Name | Role |
---|---|---|
s3924826 | Tran Minh Nhat | Technical Writer |
s3864188 | Phan Thanh Loi | Frontend Developer |
s3963207 | Do Le Long An | Backend Developer |
s3877562 | Vo Tuong Minh (Mike) | Database Admin |
- Separate the FE and BE of the project and deploy it
- Testing the concurrency control when multiple users are buying the same thing