Back to Projects
Full StackCase Study

ZendaFund

Hybrid Crowdfunding Platform with Role-Based Dashboards.

Next.js 15TypeScriptNode.jsExpress.jsMongoDBBetter AuthStripeImgBB

🎯 The Goal

Build a one-stop crowdfunding hub where Creators can launch and manage campaigns, Supporters can discover and fund them with platform credits, and Admins can moderate the entire ecosystem from a single dashboard.

Tech Stack & Architecture

Frontend

Next.js 15 App Router (TypeScript) merging the UI and API routes into a single monolith for fast, unified deployment.

Authentication

Better Auth with a MongoDB adapter, using secure httpOnly cookies instead of localStorage tokens to mitigate XSS.

Payments

Stripe-powered credit purchase system (100 credits for $10) with webhook-driven balance updates.

Database

MongoDB Atlas storing campaigns, users, donations, and notifications, with singleton connection caching.

Key Challenge

Enforcing role-based access control (RBAC) for Supporter, Creator, and Admin roles across both routing and API layers, while keeping the credit conversion math and refund logic consistent and error-free.

The Solution

Built middleware-level session and role verification on every protected route and API endpoint, paired with an automated refund mechanism that returns credits to a Supporter's wallet whenever a Creator deletes a campaign or rejects a donation.

🚀 Results & Impact

  • Secure, cookie-based session architecture with strong XSS mitigation
  • Automated, error-free credit conversion and refund flow
  • Real-time notification system that keeps all three roles informed of key platform events

🔮 Future Plans

"Adding real-time chat between Creators and Supporters, campaign milestone tracking, and a public API for embedding campaign widgets on external sites."