https://github.com/zeitgg/zeitlist
Simple Waitlist app with Upstash Redis & Arcjet Email Validation
https://github.com/zeitgg/zeitlist
arcjet nextjs redis upstash upstash-redis vercel waitlist
Last synced: about 1 month ago
JSON representation
Simple Waitlist app with Upstash Redis & Arcjet Email Validation
- Host: GitHub
- URL: https://github.com/zeitgg/zeitlist
- Owner: zeitgg
- License: mit
- Created: 2025-04-09T05:16:28.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-12-25T17:27:52.000Z (7 months ago)
- Last Synced: 2026-03-03T19:47:37.355Z (5 months ago)
- Topics: arcjet, nextjs, redis, upstash, upstash-redis, vercel, waitlist
- Language: TypeScript
- Homepage: https://zeitlist-one.vercel.app/
- Size: 4.76 MB
- Stars: 5
- Watchers: 1
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Zeitlist
this is a waitlist app. it uses redis. and arcjet to validate emails.

## Core Functionality
- Provides a simple form for users to submit their email.
- Validates submitted emails using Arcjet before processing.
- Stores valid emails in a Redis list managed by Upstash.
- Displays a live count of total signups.
## Tech Used
- **Framework:** Next.js
- **Database:** Upstash (Redis)
- **Email Validation:** Arcjet
- **Styling:** Tailwind CSS
- **Language:** TypeScript
## Local Setup
To get this running on your machine:
1. **Clone it:**
```bash
git clone ``https://github.com/zeitgg/zeitlist.git`
cd zeitlist
```
2. **Install dependencies:**
```bash
bun i
```
3. **Set up environment variables:**
You'll need API keys/URLs. Create a `.env.local` file in the root directory and dd these variables:
```plaintext
# Get from your Upstash dashboard
UPSTASH_REDIS_REST_URL="YOUR_UPSTASH_REDIS_URL"
UPSTASH_REDIS_REST_TOKEN="YOUR_UPSTASH_REDIS_TOKEN"
# Get from your Arcjet dashboard
ARCJET_SITE_KEY="YOUR_ARCJET_SITE_KEY"
```
4. **Run the dev server:**
```bash
bun dev
```
5. **Open in browser:** `http://localhost:3000`
## How it Works (Quick Overview)
1. User submits their email via the frontend.
2. The submission hits an API route (e.g., `/api/waitlist/`).
3. This API route first passes the email to Arcjet for validation.
4. If Arcjet approves, the email is added to a list in Redis using the Upstash SDK.
5. A separate API route (e.g., `/api/waitlist/count`) reads the length of the Redis list to get the current signup count.
6. The frontend fetches from the count endpoint and displays the number.
## Contributing
Issues and PRs welcome.
## License
[MIT License](LICENSE)