Bulk Upload: Import and validate products from a CSV file.
Error Reporting: Invalid rows are saved to a separate CSV for easy correction.
Paginated View: Browse all products with simple page navigation.
Search: Filter products by brand, color, or price range.
Product Management: Update and delete products by their SKU.
Node.js (Express.js framework)
MySQL (for product database)
csv-parser (for CSV reading)
multer (for file uploads)
dotenv (for environment variables)
node -v
npm -v
npm init -y
npm install express mysql2 multer csv-parser dotenv
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=yourpassword
DB_NAME=productsdb
DB_PORT=3306
To connect the data MySQL is used so make sure it is installed.
If not this is the link : https://dev.mysql.com/downloads/installer
CREATE DATABASE IF NOT EXISTS productsdb;
USE productsdb;
CREATE TABLE IF NOT EXISTS products (
sku VARCHAR(50) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
brand VARCHAR(50) NOT NULL,
color VARCHAR(30),
size VARCHAR(10),
mrp DECIMAL(10,2) NOT NULL,
price DECIMAL(10,2) NOT NULL,
quantity INT NOT NULL
);
Enable local infile support: SET GLOBAL local_infile = 1;
Start MySQL client with: "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysql.exe" --local-infile=1 -u root -p
Run inside your database: USE productsdb;
node index.js
POST /upload
GET /products?page=1&limit=10
GET /products/search?brand=XYZ&color=Red&minPrice=100&maxPrice=500
GET /products/:sku
PUT /products/:sku
DELETE /products/:sku