first commit

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
“kirukib” 2026-05-20 11:56:02 +03:00
commit 5f307a8862

117
README.md Normal file
View File

@ -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 <component>
```
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).