|
Some checks are pending
Deploy to Cloudflare Workers (OpenNext) / deploy (push) Waiting to run
Use mainwhite.svg on white sections with curvy green transitions into flat green bands, improve text and button contrast, and deploy via OpenNext on Cloudflare Workers. Co-authored-by: Cursor <cursoragent@cursor.com> |
||
|---|---|---|
| .github/workflows | ||
| app | ||
| components | ||
| content | ||
| lib | ||
| public | ||
| scripts | ||
| .dev.vars | ||
| .env.example | ||
| .gitignore | ||
| components.json | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| open-next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
| wrangler.jsonc | ||
Great Rift Valley Innovation Summit
Marketing site for the Great Rift Valley Innovation Summit, built with Next.js App Router, TypeScript, Tailwind CSS, and shadcn/ui.
Getting started
npm install
npm run download-assets # optional: refresh logos/speakers from grvsummit.com
npm run dev
Open http://localhost:3000.
If you see ENOENT errors under .next/…/app-build-manifest.json or _buildManifest.js.tmp, stop the server, run rm -rf .next, then npm run dev again. Use npm run dev:clean to do both. Turbopack (npm run dev:turbo) is opt-in and can be flaky with manifest writes on some setups.
Scripts
| Command | Description |
|---|---|
npm run dev |
Start dev server (webpack — stable default) |
npm run dev:turbo |
Dev server with Turbopack (faster, optional) |
npm run dev:clean |
Remove .next cache then start dev (fixes broken dev cache) |
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:
npx shadcn@latest add <component>
Config: components.json. Theme tokens live in app/globals.css (GRV navy #1F3D7E, gold #FFB300).
Content
Editable copy and data: content/. Images: 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 and set env vars from .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
.icsdownload at/calendarfor Apple Calendar / iCal (direct URL still works if you share it)
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.
One-time setup
- Install deps:
npm install - Authenticate Cloudflare:
Or exportnpx wrangler@4 loginCLOUDFLARE_API_TOKENandCLOUDFLARE_ACCOUNT_ID. - Set production env vars in Cloudflare Workers (or your CI):
NEXT_PUBLIC_SITE_URL(your production URL)
Deploy now
npm run deploy
predeploy automatically removes .next and .open-next first so each deploy matches a clean local build (avoids stale worker bundles).
Alias:
npm run deploy:cf
Other useful commands
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
Add repo secrets:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
Notes
- OpenNext Cloudflare does not support
export const runtime = "edge"; those exports were removed. - Build output is generated under
.open-next/(gitignored). open-next.config.tsimports@opennextjs/cloudflare— that package must be installed locally (npm install). Using onlynpx @opennextjs/cloudflarewithout installing deps will fail with “Could not resolve@opennextjs/cloudflare”.- Use Node 20 or 22 LTS for deploys. Node 25 is not recommended for Wrangler / workerd toolchains.
- Local
next devdoes not wire OpenNext’s miniflare shim unless you setOPENNEXT_CLOUDFLARE_DEV=1(only needed if you callgetCloudflareContextin app code during dev). Production deploys are unchanged.
Troubleshooting
ENOENT / missing app-build-manifest.json or _buildManifest.js.tmp in dev
Stop the dev server, delete the cache (rm -rf .next), and run npm run dev again. Prefer the default dev script (webpack); use dev:turbo only if you need Turbopack.
ETIMEDOUT downloading workerd or other npm packages
Retry when the network is stable, or use a VPN / different DNS. You can also raise timeouts:
npm config set fetch-timeout 600000
npm config set fetch-retries 5
Then run npm install again before npm run deploy.