first commit
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
commit
5f307a8862
117
README.md
Normal file
117
README.md
Normal 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).
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user