Skip to content

strawhatdev01/giveforward

Repository files navigation

GiveForward

Built for DevCareer x Nomba Hackathon

A transparent, mobile-first donation platform connecting donors with verified community causes across Nigeria. Built with Next.js, Nomba's payment infrastructure, and Resend for branded email receipts.

Status: Build Phase MVP — DevCareer x Nomba Hackathon 2026


Problem

Millions of Nigerians want to support community causes — building wells, funding scholarships, rebuilding mosques and churches — but lack a trusted, transparent platform to do so. Existing options take high fees, lack real-time tracking, or don't verify the causes they list.

Solution

GiveForward connects donors directly with verified community causes. Every naira is tracked. Donors get instant receipts, real-time progress updates, and full visibility into where their money goes — with zero platform fees.


Screenshots

Landing page Browse causes Cause detail
Hero Causes Detail
Donation flow Email receipt Admin dashboard
Donate Email receipt Admin

Tech stack

Layer Technology
Framework Next.js 15 (App Router) + TypeScript
Styling Tailwind CSS v4
Database PostgreSQL (Neon) via Prisma ORM
Payments Nomba Checkout API, Webhooks
Email Resend (branded donation receipts)
Deployment Vercel

Nomba APIs integrated

  • Checkout API — Secure payment flow (card, bank transfer, USSD)
  • Webhooks — Real-time payment confirmation and donation recording
  • Virtual Accounts — Per-cause dedicated bank accounts for direct transfers

Features

Donor experience

  • Browse verified causes with live progress bars
  • Search and filter causes by category
  • Donate via card, bank transfer, or USSD (Nomba Checkout)
  • Direct bank transfer to per-cause virtual accounts
  • Branded email receipt for every donation
  • Anonymous donation option
  • Optional support message with donations
  • Campaign images for visual storytelling

Admin dashboard

  • Secure admin login with rate limiting
  • Create new fundraising campaigns
  • Edit existing campaigns
  • Delete campaigns and associated donations
  • View all campaigns with progress at a glance
  • Monitor recent donations in real time
  • Optional Nomba Virtual Account creation per cause (requires production credentials)

Getting started

# Clone the repo
git clone https://github.com/strawhatdev01/giveforward.git
cd giveforward

# Install dependencies
npm install

# Set up environment variables
cp .env.local.example .env.local
# Edit .env.local with your Nomba sandbox credentials and Resend API key

# Push the schema and seed data
npx prisma db push
npx prisma db seed

# Run the dev server
npm run dev

Visit http://localhost:3000 to see the app.


Project structure

giveforward/
├── app/
│   ├── page.tsx                     Landing page (hero, about, causes)
│   ├── layout.tsx                   Root layout with metadata
│   ├── globals.css                  Tailwind entry point
│   ├── causes/[id]/
│   │   ├── page.tsx                 Cause detail page
│   │   ├── donate/page.tsx          Donation flow page
│   │   └── success/page.tsx         Success / receipt page
│   ├── admin/
│   │   ├── page.tsx                 Admin dashboard
│   │   ├── login/page.tsx           Admin login page
│   │   └── create/page.tsx          Create new campaign form
│   └── api/
│       ├── nomba/
│       │   ├── checkout/route.ts    POST — Create Nomba checkout
│       │   └── webhook/route.ts     POST — Handle payment events
│       ├── admin/login/route.ts     POST — Admin authentication
│       └── causes/route.ts          GET/POST — List / create causes
├── components/
│   ├── header.tsx                   Navigation header
│   ├── footer.tsx                   Site footer
│   └── causes-grid.tsx              Searchable, filterable cause cards
├── lib/
│   ├── data.ts                      Database queries (Prisma)
│   ├── db.ts                        Prisma client singleton
│   ├── email.ts                     Resend email receipts
│   └── nomba.ts                     Nomba API client
├── prisma/
│   ├── schema.prisma                Database schema
│   └── seed.ts                      Seed data
├── public/
│   └── favicon.svg
├── proxy.ts                         Admin route protection middleware
├── .env.local.example               Environment variable template
└── README.md

End-to-end donor journey

Landing page  →  Browse causes  →  Open a cause  →  Donate  →  Nomba Checkout  →  Success page  →  Email receipt

This complete flow is fully functional end-to-end.


Environment variables

Variable Description
DATABASE_URL PostgreSQL connection string (Neon)
NOMBA_BASE_URL Nomba API base URL
NOMBA_ACCOUNT_ID Nomba account ID
NOMBA_CLIENT_ID Nomba client ID
NOMBA_CLIENT_SECRET Nomba client secret
NOMBA_WEBHOOK_SECRET Nomba webhook signing secret
RESEND_API_KEY Resend API key for email receipts
ADMIN_EMAIL Admin login email
ADMIN_PASSWORD Admin login password

Milestones completed

  • Project architecture and database schema designed
  • Mobile-first UI implemented with Next.js and Tailwind CSS
  • Campaign listing with search and category filters
  • Campaign detail page with progress and recent donations
  • PostgreSQL database integrated using Prisma ORM
  • Nomba Checkout API integrated for donation payments
  • Nomba webhook endpoint for payment confirmation
  • Branded email receipts via Resend (domain verified: kratius.com)
  • Admin dashboard with campaign management
  • Admin login with rate limiting
  • Anonymous donation support
  • Responsive, mobile-first design
  • Nomba Virtual Accounts for per-cause dedicated bank details
  • Cause image upload (via URL)
  • Campaign editing and management
  • Donation history for repeat donors (tracked via email)

License

This project is built for the DevCareer x Nomba Hackathon 2026. Not licensed for commercial use.

About

GiveForward - A transparent, mobile-first donation platform for verified causes across Nigeria. Built with Next.js, Nomba Checkout & Virtual Accounts, and Resend email receipts. DevCareer x Nomba Hackathon entry.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages