Logo Lanfrica

cribevent/website

Domaine:

digital infrastructure

Type de record:

software
Créateur:
cri
Hôte:
a fullstack event ticketing platform for Ghana's events # CribEvent A full-stack event ticketing platform built with Next.js (App Router), TypeScript, Tailwind CSS, **Supabase** (Postgres + Auth), and **Paystack** for payments. ## Getting started 1. Copy `.env.local.example` to `.env.local` and fill in your Supabase, Paystack, and Resend keys. 2. Run the SQL migrations in `supabase/migrations/` — see `supabase/README.md` for step-by-step setup, including how to promote a user to `admin` or `staff`. 3. Install and run: ```bash npm install npm run dev ``` Open localhost. ## IMPORTANT — file structure This is a real Next.js **App Router** project. Route files **must** be named exactly `page.tsx` (or `layout.tsx`, `not-found.tsx`, `route.ts`) inside their folder — the folder path defines the URL, not the file name. For example: ``` src/app/(customer)/account/tickets/page.tsx → /account/tickets src/app/(customer)/account/tickets/[ticketId]/page.tsx → /account/tickets/123 src/app/admin/scanner/page.tsx → /admin/scanner src/app/api/webhooks/paystack/route.ts → POST /api/webhooks/paystack ``` Don't rename these — Next.js won't recognize them as routes if you do. Only files under `src/components/` should be named after their component. If you're moving code by hand between machines, prefer copying whole folders (or just re-downloading the project) over retyping file names from memory — this is also what causes the "differs only in casing" TypeScript errors on case-insensitive filesystems (macOS/Windows) if a stray duplicate file exists. ## Architecture ``` src/ app/ (public)/ Homepage, event discovery, event details, about, contact (customer)/ /account, /account/tickets — requires a signed-in user (auth)/ /login, /signup admin/ /admin/** — requires role admin or staff (see below) checkout/ /checkout, /checkout/success api/ checkout/ POST — creates a pending order + starts a Paystack transaction …