- I built a website where different restaurant owners can easily manage their billing operations, menu and also compare them with other restaurants.
- Customers can easily browse different restaurants, see their menu on the site, compare and also estimate the bill beforehand.
- Users must login themselves to add their restaurant to the site using their Email.
- The password is stored in database in a hashed format using BcryptJs.
- For Authorization, Token Based Authentication has been added using JSON Web Token (JWT) with RSA cryptographic algorithm.
- The authenticated APIs and routes are protected and can be accessed only if user has a token assigned to him on successful login.
- User remains logged in till the refresh token expires or the user logs out himself. The refresh token is used to generate the access token after short periods of time which is infact used for authorization.
- The FrontEnd is built using Reactjs, CSS/Bootstrap, HTML and Hooks API for state management in React.
- Axios Library for API integration and making requests to backend.
- The Backend is built using Nodejs with Express framework.
- For database, ClearDB cloud service for MySQL is used for storing data and querying is done via Sequelize ORM.
- Redis for mapping access and refresh tokens, used for authentication and authorization.
- Cloudinary API for uploading and storing images on the cloud.
- The Website is deployed on Heroku.
- Comprehensive Error Handling has been added for different functions and APIs.
- Code is fully modularized and refactored, all the buisness logic part is separated from the APIs, middlewares, models etc.