this is for give to africa
# GiveToAfrica - Donation Platform
A production-grade, scalable donation platform for a nonprofit organization raising funds to support communities across Africa.
## Tech Stack
- **Frontend:** React 18 + TypeScript + Vite + Tailwind CSS
- **Backend:** Node.js + Express + Prisma ORM
- **Database:** PostgreSQL
- **Payments:** Stripe (international) + Flutterwave (Africa) + Paystack (Nigeria)
- **Email:** Resend
- **Deployment:** Docker + CI/CD via GitHub Actions
## Getting Started
### Prerequisites
- Node.js 20+
- PostgreSQL 16+
- npm or yarn
### Setup
1. Clone and install dependencies:
```bash
git clone
cd givetoafrica
npm install
```
2. Copy environment variables:
```bash
cp .env.example .env
```
Fill in your API keys from:
- Stripe Dashboard
- Flutterwave Dashboard
- Paystack Dashboard
- Resend
3. Set up the database:
```bash
npx prisma generate
npx prisma db push
```
4. Start development servers:
```bash
npm run dev:all
```
- Frontend:
localhost
- API:
localhost
### Docker
```bash
docker-compose up
```
## Project Structure
```
├── src/ # Frontend React app
│ ├── components/ # Shared components (Layout, Navbar, Footer, CookieConsent)
│ ├── pages/ # Page components
│ │ ├── HomePage.tsx # Landing page with CTAs
│ │ ├── DonatePage.tsx # Core donation flow
│ │ ├── CausesPage.tsx # Program listings
│ │ └── ...
│ └── lib/ # Utilities, constants, helpers
├── server/ # Backend Express API
│ ├── index.ts # Entry point
│ ├── routes/ # API route handlers
│ │ ├── donations.ts # Donation creation
│ │ ├── webhooks-*.ts # Payment provider webhooks
│ │ ├── auth.ts # Magic link authentication
│ │ ├── admin.ts # Admin dashboard API
│ │ └── donor-portal.ts # Donor portal API
│ └── lib/ # Server utilities
│ ├── stripe.ts # Stripe client
│ ├── flutter …