Fundora is a full-stack crowdfunding platform that helps supporters back meaningful projects with credits, enables creators to launch and manage campaigns, and gives administrators the tools to moderate the platform safely.
| Field | Value |
|---|---|
admin@fundora.com |
|
| Password | Admin123! |
For a real production launch, replace
ADMIN_PASSWORDwith a strong private password.
- Three role-aware dashboards: Supporter, Creator, and Admin
- Email/password authentication with JWT and persistent private routes
- Google Sign-In for quick onboarding
- Supporters receive 50 credits; creators receive 20 credits on registration
- Top-funded and closing-soon campaign discovery sections
- Search, category, funding goal, deadline, and sorting filters
- Campaign detail page with contribution workflow
- Creator contribution approval/rejection with automatic supporter refund
- Creator campaign creation, update, deletion, earnings, and withdrawals
- Stripe Checkout credit packages and webhook-based credit fulfilment
- Admin campaign approval, user management, withdrawals, and reports
- In-app notifications with read and mark-all-read interactions
- ImgBB image uploading for profile and campaign images
- Mobile, tablet, and desktop responsive UI with Framer Motion animations
| Supporter | Creator | Admin |
|---|---|---|
| Explore and contribute to campaigns | Launch, update, and delete campaigns | Approve/reject campaign submissions |
| Purchase credits with Stripe | Review supporter contributions | Manage users and roles |
| Track contribution/payment history | Request withdrawals | Process withdrawals and reports |
| Receive contribution status notifications | View campaign and earnings statistics | Monitor platform statistics |
| Area | Technology |
|---|---|
| Frontend | Next.js 15, TypeScript, Tailwind CSS, Framer Motion, React Hook Form, Zod |
| Backend | Express.js, TypeScript, JWT, Zod |
| Database | MongoDB Atlas, Mongoose |
| Payments | Stripe Checkout + webhooks |
| Images | ImgBB |
| Deployment | Vercel (client) + Render (server) |
Fundora/
├── client/ # Next.js frontend
│ ├── app/ # Routes and pages
│ ├── components/ # UI components
│ └── lib/ # Auth, API, types, demo data
├── server/ # Express API
│ └── src/
│ ├── routes/ # Auth, campaigns, payments, admin
│ ├── models/ # Mongoose models
│ └── middleware/ # JWT and role authorization
├── render.yaml # Render deployment blueprint
└── LICENSE # MIT License
Requirements: Node.js 20+ and a MongoDB Atlas database.
git clone https://github.com/GalibDev/Fundora.git
cd Fundora
npm run install:all
copy server\.env.example server\.env
copy client\.env.example client\.env.local
npm run dev- Client:
http://localhost:3000 - API:
http://localhost:5000
NEXT_PUBLIC_API_URL=http://localhost:5000/api
NEXT_PUBLIC_GOOGLE_CLIENT_ID=your-google-client-id
NEXT_PUBLIC_IMGBB_KEY=your-imgbb-key
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_...PORT=5000
MONGODB_URI=your-mongodb-atlas-uri
JWT_SECRET=use-a-long-random-secret
CLIENT_URL=http://localhost:3000
GOOGLE_CLIENT_ID=your-google-client-id
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
ADMIN_EMAIL=admin@fundora.com
ADMIN_PASSWORD=Admin123!Optional email notifications: add RESEND_API_KEY and EMAIL_FROM.
Configure this webhook endpoint in Stripe:
https://YOUR-RENDER-SERVICE.onrender.com/api/webhooks/stripe
Subscribe to checkout.session.completed. For testing, use card number 4242 4242 4242 4242, any future expiry date, and any CVC.
- Deploy the
serverfolder to Render withrender.yaml. - Configure MongoDB, JWT, Stripe, Google, ImgBB, and admin environment variables.
- Import the repository into Vercel and select
clientas the Root Directory. - Set
NEXT_PUBLIC_API_URLon Vercel to your Render API URL ending in/api. - Set
CLIENT_URLon Render to your Vercel domain and redeploy both services.
Released under the MIT License.
Made with care by GalibDev.