commit 5f307a88625587b4707c4c9a67b65255fe620231 Author: “kirukib” <“kirubeljkl679@gmail.com”> Date: Wed May 20 11:56:02 2026 +0300 first commit Co-authored-by: Cursor diff --git a/README.md b/README.md new file mode 100644 index 0000000..3dfbc08 --- /dev/null +++ b/README.md @@ -0,0 +1,117 @@ +# Great Rift Valley Innovation Summit + +Marketing site for the [Great Rift Valley Innovation Summit](https://grvsummit.com/), built with Next.js App Router, TypeScript, Tailwind CSS, and [shadcn/ui](https://ui.shadcn.com/). + +## Getting started + +```bash +npm install +npm run download-assets # optional: refresh logos/speakers from grvsummit.com +npm run dev +``` + +Open [http://localhost:3000](http://localhost:3000). + +## Scripts + +| Command | Description | +|---------|-------------| +| `npm run dev` | Start dev server (Turbopack) | +| `npm run build` | Production build | +| `npm run start` | Start production server | +| `npm run lint` | ESLint | +| `npm run download-assets` | Download branding assets from official WordPress uploads | + +## shadcn/ui + +Add components: + +```bash +npx shadcn@latest add +``` + +Config: [`components.json`](components.json). Theme tokens live in [`app/globals.css`](app/globals.css) (GRV navy `#1F3D7E`, gold `#FFB300`). + +## Content + +Editable copy and data: [`content/`](content/). Images: [`public/branding/`](public/branding/). + +## Inquiry API + +`POST /api/inquiry` accepts JSON with `intent` (`general` | `exhibitor` | `sponsor` | `sales` | `press` | `newsletter`), `name`, `email`, `message`, and optional `company` / `phone`. v1 logs to the server console only. + +To wire email (e.g. Resend), update [`app/api/inquiry/route.ts`](app/api/inquiry/route.ts) and set env vars from [`.env.example`](.env.example). + +## Assets + +Logos and speaker cutouts are downloaded from the official site via `scripts/download-assets.mjs`. Confirm trademark and usage rights with EDTF before production deployment. + +## Pages + +- `/` — Home +- `/program` — Agenda +- `/pitch-competition` — Grant competition +- `/payment` — Ticket selection & checkout (API stub) +- `/payment/success` — Order confirmation +- `/exhibit` — Exhibitor inquiries +- `/sponsor` — Sponsorship tiers +- `/contact` — Contact channels & form + +## Calendar + +- **Add to calendar** dropdown on the hero, tickets section, and payment page +- **Google Calendar** / **Outlook** deep links +- **`.ics` download** at [`/calendar`](app/calendar/route.ts) for Apple Calendar / iCal + +## Payment API + +`POST /api/payment` accepts `ticketId`, `quantity`, `name`, `email`, `paymentMethod` (`card` | `bank`). v1 logs orders to the console; wire Stripe, Chapa, or similar for production. + +## Deploy – Cloudflare Workers (OpenNext) + +This project is configured for [**OpenNext on Cloudflare**](https://opennext.js.org/cloudflare). + +### One-time setup + +1. Install deps: `npm install` +2. Authenticate Cloudflare: + ```bash + npx wrangler@4 login + ``` + Or export **`CLOUDFLARE_API_TOKEN`** and **`CLOUDFLARE_ACCOUNT_ID`**. +3. Set production env vars in Cloudflare Workers (or your CI): + - `NEXT_PUBLIC_SITE_URL` (your production URL) + +### Deploy now + +```bash +npm run deploy +``` + +Alias: + +```bash +npm run deploy:cf +``` + +### Other useful commands + +```bash +npm run preview # build + local Workers preview runtime +npm run upload # build + upload worker version (no immediate rollout) +npm run cf-typegen # generate cloudflare-env.d.ts from wrangler bindings +``` + +### CI (optional) + +Workflow file: [`.github/workflows/cloudflare-workers-opennext.yml`](.github/workflows/cloudflare-workers-opennext.yml) + +Add repo secrets: +- `CLOUDFLARE_API_TOKEN` +- `CLOUDFLARE_ACCOUNT_ID` + +### Notes + +- OpenNext Cloudflare does **not** support `export const runtime = "edge"`; those exports were removed. +- Build output is generated under **`.open-next/`** (gitignored). +