This is a Next.js project bootstrapped with create-next-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev

Open http://localhost:3000 with your browser to see the result.

You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.

This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Deploy on Vercel

The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.

Check out our Next.js deployment documentation for more details.

Queue / Ticketing demo (WebSocket + JWT)

This repository contains a minimal demo of a queue system for high-concurrency ticket sales. Key ideas:

  • When an event reaches a concurrency threshold (e.g. 100 users), the server enables a queue for that event.
  • Users connect via WebSocket (Socket.IO). When queueing is active they are placed in a FIFO queue.
  • The server grants access (issues a signed JWT) to up to CONCURRENT_ACTIVE users (default 50) at a time.
  • The JWT is valid for a short period (default 15 minutes). When it expires the server revokes access and grants the next users in queue.
  • The client uses the JWT to authenticate purchase API calls.

Files added in this demo:

  • app/api/socketio/route.js — Next.js App Router API route that initializes the Socket.IO server, in-memory queue logic and JWT issuance (demo only).
  • .env.example — example environment variables for the queue system.
  • app/page.tsx — client UI (Next.js) that connects via Socket.IO and displays queue position, estimated wait, and purchase button.

Important notes and limitations:

  • The server implementation in server/index.js is an in-memory demo. For production use a shared, persistent store (Redis) for queue/locks and a robust MySQL schema if you need persistence.
  • Add authentication, rate-limiting, and persistent sessions before using in production.

Running locally

  1. Copy .env.example to .env and adjust values (especially JWT_SECRET).
  2. Install dependencies (already included in package.json):
pnpm install
  1. Start the Next.js dev server:
pnpm dev
  1. Open http://localhost:3000 - the page will automatically initialize the Socket.IO server via API call to /api/socketio, then connect to it on port 4000.

Next steps / improvements

  • Move queue state to Redis (ZSET) to support multiple server instances.
  • Persist issued tokens and sessions in DB to support revocation and auditing.
  • Add server-side validation of the JWT on purchase endpoints.
  • Add tests around queue promotion logic and token expiration.
Description
No description provided
Readme 254 KiB
Languages
TypeScript 53%
JavaScript 45.7%
CSS 1.3%