Logo Lanfrica

TechGateLabs/ibeji-foundation-website

Domain:

socioeconomic

Record type:

software
Creator:
Tec
Host:
Ibeji Foundation website - Direct help, lasting impact. Supporting families and communities across Nigeria through school feeding, renovations, scholarships, and urgent aid. # Ibeji Foundation (Next.js + TypeScript + Tailwind) Production-ready nonprofit site with a donate-first UX. ## Tech - Next.js 15.5.0 (App Router), React 18, TypeScript - Tailwind CSS, Vercel Analytics - Jest for utils - Payments: Paystack (hosted checkout) ## Requirements - Node 18/20+, Bun ≥ 1.1 ## Setup 1. Install deps - `bun i` 2. Env vars - Copy `.env.example` to `.env.local` and set as needed: - `NEXT_PUBLIC_SITE_URL` (localhost for local) - `PAYSTACK_PUBLIC_KEY` (optional for local) - `PAYSTACK_SECRET_KEY` (required for payments) - `PAYSTACK_MONTHLY_PLAN_CODE` (for monthly subscriptions) - `RESEND_API_KEY` (optional; enables receipts + contact email) - `CONTACT_TO_EMAIL` (optional; default contact@ibejifoundation.org) - `NEXT_PUBLIC_PLAUSIBLE_DOMAIN` (reserved) ## Run - Dev: `bun dev` - Typecheck: `bun run typecheck` - Lint: `bun run lint` - Tests: `bun test` ## Payments (Paystack) - Flow: - Client POSTs to `/api/payments/paystack/init` with `{ amount, email, monthly }`. - Server initializes transaction and returns `authorization_url`. - Browser redirects to Paystack hosted checkout. - Paystack redirects back to `/donate/thanks?amount=...&reference=...`. - Thanks page calls `/api/payments/paystack/verify?reference=...` to confirm. - On success, server logs and (if `RESEND_API_KEY`) emails a receipt. - Optional webhook: configure Paystack to POST events to `/api/payments/paystack/webhook` for an additional backstop on receipts. ## Pages - `/` Home (hero, stat bar, why‑give, stories, projects, CTA) - `/donate` Donate (presets, custom, one-time/monthly) - `/donate/thanks` Receipt page - `/projects` Projects and collaborations (curated previews) - `/galleries` Full photo galleries by category (from CSV/manifest) - `/impact` Impact metrics + methodology - `/news` list and `/news/[slug]` article (MDX in `content/news/`) - `/about`, `/contact` (+ `/api/contact`) - `/privacy`, `/terms` ## SEO & Images - robots disallows `/api/*`, `/admin/*` …