BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Book a slot in organised 8-team football sessions. Secure payment, instant digital ticket, QR entry.
Translation pending
Sports & fitnessTypeScript · CSSGitHub @Anuoluwa-samuelOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Arena Pass aims to make football ticket management simpler, faster, and more organized, giving arena owners the tools they need to manage ticket sales while creating a seamless experience for fans.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Football arena session management and e-ticketing. Arena owners schedule sessions of 8 teams × 4 players (32 slots), customers book a slot and pay online, and staff validate QR tickets at the gate. Includes a CMS-style admin control centre with role-based access.
Admin: http://localhost:4000/admin — [email protected] / ChangeMe123!
Other seeded staff accounts (same password): grace.admin@, musa.manager@, folake.finance@, sam.staff@, tola.ticketagent@ (all @arenapass.local).Read the full README ↗Football arena session management and e-ticketing. Arena owners schedule sessions of 8 teams × 4 players (32 slots), customers book a slot and pay online, and staff validate QR tickets at the gate. Includes a CMS-style admin control centre with role-based access.
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack), React 19, TypeScript strict |
| UI | Tailwind CSS 4, shadcn/ui, Motion, Recharts |
| Database | PostgreSQL via Drizzle ORM. Embedded Postgres (PGlite) locally, managed Postgres in production |
| Auth | Server-side sessions (httpOnly cookies), scrypt password hashing, DB-stored RBAC |
| Payments | Provider abstraction: Paystack adapter + mock provider for development |
| Tests | Vitest (unit + integration on an in-memory Postgres), Playwright (e2e) |
npm install
cp .env.example .env # defaults work out of the box (embedded DB, mock payments)
npm run db:seed # migrations + baseline + sample data
npm run dev # http://localhost:4000
Admin: http://localhost:4000/admin — [email protected] / ChangeMe123!
Other seeded staff accounts (same password): grace.admin@, musa.manager@, folake.finance@, sam.staff@, tola.ticketagent@ (all @arenapass.local).
With PAYMENT_PROVIDER=mock, checkout redirects to a test page where you choose a successful or declined payment; the rest of the pipeline (verification, ticket issue, email) runs exactly as in production.
The embedded database lives in
.data/pgliteand is held exclusively by one process. Stopnpm run devbefore runningnpm run db:seedornpm run db:reset.
| Command | What it does |
|---|---|
npm run dev / build / start | Next.js |
npm run typecheck | tsc --noEmit |
npm run lint | ESLint (next/core-web-vitals + TypeScript) |
npm test | Vitest unit + integration suites |
npm run test:e2e | Playwright (needs npx playwright install chromium) |
npm run db:generate | Generate a SQL migration from server/db/schema.ts |
npm run db:migrate | Apply migrations + ensure baseline rows |
npm run db:seed | Migrate + baseline + development sample data |
npm run db:reset | Delete the embedded DB and reseed |
app/
(public)/ customer site: home, sessions, checkout, tickets, account, about, faq, contact
admin/ admin control centre (sidebar layout, RBAC-guarded pages)
api/ route handlers → services; uniform JSON envelope
server/ server-only code (never bundled to the client)
db/ schema, client (PGlite | pg), migrations, baseline, seed helpers
auth/ passwords, sessions, RBAC
services/ sessions, bookings, tickets, payments, customers, cms, media, users, analytics…
payments/ PaymentProvider interface, Paystack, mock
notifications/ email channel + templates
http/ errors, response envelope, validation, rate limiting, admin guard
storage/ object storage abstraction (local disk adapter)
lib/ client-safe: domain constants, status logic, formatting, zod schemas, api client
components/ ui primitives, site/, admin/, shared/
tests/ unit/, integration/, e2e/
docs/ AUDIT, ARCHITECTURE, DATABASE, API, DEPLOYMENT, SECURITY