This is a full-stack ecommerce project.
Authentication and authorization have been implemented in this project using JSON Web Tokens (JWT). When a user successfully logs in or signs up, a JWT token is generated on the backend with a 24-hour expiration time. This token is then stored on the frontend and included in subsequent requests to authorize access to protected routes, such as product editing or deletion.
Passwords are securely hashed before being inserted into the database. This ensures that even if the database is compromised, the actual passwords remain protected.
During the signup process, email and password validation has been implemented to ensure data integrity and security. The following requirements are enforced:
Email validation: The entered email address must be valid.
Password validation: The entered password must meet the following criteria:
- Minimum length of eight characters.
- Must contain at least one number.
- Must contain at least one special character.
- Must contain at least one uppercase letter.
As a user, you have access to the following features:
Dark/Light mode: You can toggle between dark and light mode for a personalized viewing experience.
Product View: You can view products on the website.
Add to Cart: You can add products to your cart.
Cart Page: You can view the items in your cart and edit product quantity or remove products from your cart.
Checkout Page: You can proceed to the checkout page to enter your credit card information and view your card information.
After signing up or loggin in, you have access to the following features:
Admin Home: You can sign up or log in to access the admin home.
Add Products: You can add new products to the store.
Edit Products: You can edit existing products in the store.
Delete Products: You can delete products from the store.
Dark/Light mode: You can toggle between dark and light mode for a personalized viewing experience.
To login as an admin, click the "Login" button in the navbar and enter the following credentials:
Username: test@email.com
Password: Example@1
Note: You can sign up as well
The backend repository for this project can be found at https://github.com/abdulaimusah/mystore-backend.
The live project can be found at https://mystore-5y1b.onrender.com/
- ReactJS: A JavaScript library for building user interfaces.
- ExpressJS: A fast and minimalist web application framework for Node.js.
- Tailwind CSS: A utility-first CSS framework for rapidly building custom user interfaces.
- MongoDB: A popular NoSQL database for storing and retrieving data.
- JSON Web Tokens (JWT): A compact and secure method of representing claims between parties as a JSON object.
- Yup: A JavaScript schema builder for validating and transforming data.
- bcrypt: A library used for hashing passwords and ensuring secure password storage.
These technologies were carefully selected to provide a robust and efficient development environment, as well as to deliver a seamless and responsive user experience.