This is a web-based Coffee Shop application. The idea for this application arose from the popularity of coffee in offices and day to day life. The benifits of these are:
- Convenient menu browsing
- Ingredient and nutritional info
- Loyalty points collection
- Skip the line with pre-orders
- Fewer order mistakes
- Increased sales and upsells
- Efficient order processing
- Enhanced brand presence
- Direct customer communication
- React Js
- Tailwind CSS
- Redux
- Context API
- Figma
- Django
- JWT
- SQLite
- Docker
- GitHub Actions
- NGINX load balancer
- Selenium Testing
Here is what you can do with the Coffee Shop Web Application:
- Users can register on the application using their email, name, and password.
- To ensure accuracy, users are required to retype their password for verification.
- Once the user clicks on the sign-up button, the backend generates a hash of the password and stores it in the database.
- Users can log in using their credentials, with backend verification using JWT authentication.
- Upon successful verification, an authentication token is assigned to the user and stored in the browser's local storage for 90 days.
- Token renewal occurs automatically after 90 days if the user remains logged in.
- Users can select different products and add them to their cart.
- Users can access their profile by clicking on their name in the navigation bar, allowing them to view their information.
- Within the cart, users can adjust the quantity of selected items or remove them entirely.
- The cart dynamically updates to display the total price and quantity of items added.
- For version control, GitHub is utilized and a CI/CD pipeline is created using GitHub Actions.
- Whenever code is pushed to GitHub, the pipeline triggers. Initially, Selenium tests ensure that the Login page loads correctly.
- Subsequently, a new image is generated and deployed to the local server.
- Two servers are deployed, managed by an NGINX load balancer for optimal load distribution.
- Watchtower continually monitors for new Docker images and automatically updates running containers with the latest versions.
- Add additional authorization features.
- Add payment functionality.