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: