GRV-Summit-Site/README.md
“kirukib” 5f307a8862 first commit
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-20 11:56:02 +03:00

118 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).