Go to file
kirukib cb404ec079
Some checks failed
Deploy to Cloudflare Workers (OpenNext) / deploy (push) Has been cancelled
Align site colors with GRV brand book palette.
Centralize primary, secondary, tertiary, and neutral tokens and apply them across theme variables and UI components.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-04 14:45:22 +03:00
.github/workflows first commit + project setup 2026-05-20 11:57:21 +03:00
app Align site colors with GRV brand book palette. 2026-06-04 14:45:22 +03:00
components Align site colors with GRV brand book palette. 2026-06-04 14:45:22 +03:00
content Align site colors with GRV brand book palette. 2026-06-04 14:45:22 +03:00
lib Enhance footer and hero with brand backgrounds 2026-05-21 20:35:59 +03:00
public Enhance footer and hero with brand backgrounds 2026-05-21 20:35:59 +03:00
scripts Enhance footer and hero with brand backgrounds 2026-05-21 20:35:59 +03:00
.dev.vars first commit + project setup 2026-05-20 11:57:21 +03:00
.env.example first commit + project setup 2026-05-20 11:57:21 +03:00
.git-push-log.sh Enhance footer and hero with brand backgrounds 2026-05-21 20:35:59 +03:00
.gitignore - 2026-05-22 11:14:01 +03:00
components.json first commit + project setup 2026-05-20 11:57:21 +03:00
eslint.config.mjs first commit + project setup 2026-05-20 11:57:21 +03:00
next.config.ts Add site-wide topography patterns and refine section styling. 2026-05-20 20:34:36 +03:00
open-next.config.ts Add site-wide topography patterns and refine section styling. 2026-05-20 20:34:36 +03:00
package-lock.json Add site-wide topography patterns and refine section styling. 2026-05-20 20:34:36 +03:00
package.json Add site-wide topography patterns and refine section styling. 2026-05-20 20:34:36 +03:00
postcss.config.mjs first commit + project setup 2026-05-20 11:57:21 +03:00
README.md Add site-wide topography patterns and refine section styling. 2026-05-20 20:34:36 +03:00
tsconfig.json first commit + project setup 2026-05-20 11:57:21 +03:00
wrangler.jsonc first commit + project setup 2026-05-20 11:57:21 +03:00

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

  • .ics download at /calendar for 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

  1. Install deps: npm install
  2. Authenticate Cloudflare:
    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

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_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).
  • open-next.config.ts imports @opennextjs/cloudflare — that package must be installed locally (npm install). Using only npx @opennextjs/cloudflare without 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 dev does not wire OpenNexts miniflare shim unless you set OPENNEXT_CLOUDFLARE_DEV=1 (only needed if you call getCloudflareContext in 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.