Yet another store, eh!
Hosted on Render: https://bytebuy.onrender.com/
-
Interactive Product Display: Engage users with dynamic product image looping on hover, enhancing the browsing experience.
-
Efficient Sales Management: Admins set sales, defining discounts for items, boosting pricing strategies.
-
User-Centric Requests: Non-signed users send 30 requests/60s, logged-in users send 100, optimizing engagement.
-
Streamlined Image Handling: Admins effortlessly upload images to Cloudinary, optimized via 'webp' format and resized to 1200px width by 1000px height.
-
Advanced Order Control: Admins filter orders by ID, payment, and delivery status, simplifying management.
-
Swift Product Search: Users find items via name, brand, or description, promoting seamless navigation.
-
Empowered Reviews: Users review, edit, or delete product feedback, fostering valuable interactions.
Experience ByteBuy: Where Functionality Meets User-Centric Design.
- First clone the repo. To do so, open the terminal and enter:
git clone https://github.com/ritish78/ByteBuy.git
- You need to supply these environment variables:
EXPRESS_SERVER_PORT=5000
NODE_ENV=production
MONGODB_URL=
JWT_SECRET=
PAYPAL_CLIENT_ID=
CLOUDINARY_CLOUD_NAME=
CLOUDINARY_API_KEY=
CLOUDINARY_API_SECRET=
UPSTASH_REDIS_URL=
MAX_REQ_ALLOWED_OF_AUTH_USER_PER_MINUTE=100
MAX_REQ_ALLOWED_OF_NOT_SIGNEDIN_PER_MINUTE=30
WINDOW_SIZE_IN_SECONDS=60
- If you have docker installed, then you can run this command:
docker compose up --build
The server will have started on port 5000
.
- If you don't have docker installed, then run the build command inside the ByteBuy root folder:
npm run build
- After the build command installs all the dependencies for frontend and backend, enter:
npm run server
- The server should run on port
5000
. Go to http://localhost:5000 to view the website.
- Backend:
Node.js
as Runtime,express
for server,express-validator
for validating user input. - Frontend:
React
Library which runs usingJavascript
.Redux
is used for state management. - Database:
MongoDB
andRedis
.Mongoose
npm package is used to interact with MongoDB.Redis
is hosted onUpstash
. - Security:
Bcrypt
for hashing password, Http-cookie to storeJWT
which is then used for verifying user. - Image Manipulation:
Sharp
library is used to convert uploaded images towebp
format. - Cloud Storage:
Cloduinary
for the uploaded pictures,AWS
for MongoDB andUpstash
for Redis.
For complete available API endpoints visit: API Endpoints