Shopping App
Overview
This repository contains a comprehensive shopping application, built to demonstrate the power of combining several key technologies. It serves as a hands-on guide for integrating Clerk for user authentication, Next.js for frontend UI, Upstash Redis for backend data storage, QStash for email scheduling, and Upstash Ratelimit for rate-limiting.
Key Technologies
- Clerk: For secure user authentication, including sign-up, sign-in, and sign-out processes.
 - Next.js: As the frontend framework to build a reactive user interface. Upstash Redis: As the backend datastore for managing user sessions and cart data.
 - QStash: For scheduling emails based on user interactions.
 - Upstash Ratelimit: To implement rate-limiting features for preventing misuse.
 
Features
User Authentication
- Securely register new users.
 - Sign in existing users.
 - Sign out from the application.
 
Shopping Cart
- Add items to a unique cart for each user.
 - Remove items from the cart.
 - Modify the quantity of items in the cart.
 
Email Scheduling
- Schedule emails based on certain user actions using QStash.
 - Emails are dispatched by Resend.
 
User Ratings
- Users have the option to rate items.
 - Ratings are stored efficiently in Upstash Redis.
 
Rate-Limiting
- Utilizes Upstash Ratelimit to manage the rate of user interactions, such as rating items, to prevent misuse.
 
How to Get Started
- Clone the repository.
 - Install dependencies by running npm install.
 - Set up your Clerk, Upstash Redis, QStash, and Upstash Ratelimit accounts.
 - Populate the .env file with your API keys.
 - Run the project locally using npm run dev.
 - Feel free to clone, modify, and deploy this project as per your requirements.
 
Learn More
To learn more about Upstash and its services, check out the following resources: