Welcome to the Practica 2023 Shop! This application showcases an extensive range of features to provide users with a seamless and enjoyable experience.
If you want to have admin privileges sign in with the following account:
Email: admin@gmail.com
Password: admin
To run the Practica 2023 Shop on your local machine, follow these steps:
- Clone this repository.
- Set up the necessary environment variables for authentication and other configurations.
- Setting up the server environment variables will be done in
shop-backend/Stagiu/appsettings.json
- Set up a database connection in
appsettings.json
which uses the following format:Server={your_server};Database={database};Trusted_Connection=True;TrustServerCertificate=True
. Set upBaseURL
andAudience
to the sameURL
value (the clientURL
) inappsettings.json
- In
shop-client/src/axios.config.ts
setbaseURL
toServer URL
- Install NPM dependencies in
shop-client
by navigating to it, opening a terminal, and writingnpm i
. - Start the server from your IDE (Microsoft Visual Studio) and launch the application (in terminal or IDE terminal with
npm run dev
).
Below is a detailed description of the various functionalities and technologies implemented in this project.
The application allows users to filter products based on query strings, enabling them to find the products they are interested in quickly.
- JWT Tokens: The app uses JSON Web Tokens (JWT) for user authentication, ensuring secure communication between the client and server.
- Refresh Tokens: To enhance security and improve the user experience, refresh tokens are used to obtain new access tokens without requiring the user to re-enter their credentials.
Silent authentication is implemented to provide a smooth sign-in experience for users. It allows automatic authentication without prompting the user to enter their credentials repeatedly.
The admin dashboard provides powerful CRUD (Create, Read, Update, Delete) functionality for managing products and categories efficiently.
To control access and permissions, role-based authorization is implemented, ensuring that different user roles have appropriate access to specific parts of the application.
Certain pages within the application are protected, requiring users to be authenticated and have the necessary roles to access them.
Updates to the application are optimized to reduce unnecessary data transmission. Only modified fields are updated, resulting in better performance and reduced bandwidth usage.
To provide a consistent user experience, the app ensures that the user's cart is synchronized upon signing in, allowing them to seamlessly continue shopping.
The user interface is skillfully styled using Tailwind CSS, providing a refreshing and visually appealing look.
- Frontend: TypeScript, React.js, HTML5, Tailwind CSS, Axios, Radix UI, React Router
- Backend: ASP.NET CORE, WEB API, Dapper
- Authentication: JSON Web Tokens (JWT), Refresh Tokens
If you are interested in contributing to the Practica 2023 Shop, you can submit pull requests or raise issues in the repository. Your contributions are highly appreciated!