Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

46 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ImpactLink β€” Crowdfunding Platform

React Node.js MongoDB Redis Razorpay

ImpactLink is a full-stack crowdfunding web application that empowers individuals and organisations to launch campaigns, raise funds, and make a real-world impact β€” securely and at scale.

Features Β· Tech Stack Β· Project Structure Β· Getting Started Β· API Overview Β· Security Β· Deployment


✨ Features

For Users

  • πŸ” Secure Authentication β€” JWT-based login, signup, password reset via email OTP, and token refresh
  • πŸš€ Campaign Management β€” Create, edit, and delete fundraising campaigns with rich details, goals, and deadlines
  • πŸ’³ Integrated Payments β€” Donate to campaigns via Razorpay (UPI, card, netbanking) with server-side payment verification
  • πŸ“Š Personal Dashboard β€” Track your campaigns, donations made, and funds raised in real time
  • πŸ‘€ User Profile & Settings β€” Manage profile details, avatar, and account preferences
  • πŸ” Search & Filter β€” Discover campaigns by category, goal, and progress

For Admins

  • πŸ›‘οΈ Admin Dashboard β€” Overview of platform-wide statistics (users, campaigns, donations)
  • πŸ“‹ Campaign Moderation β€” View and manage all campaigns across the platform
  • πŸ‘₯ User Management β€” View and manage registered users
  • πŸ“¬ Contact Submissions β€” Review and respond to contact form messages

Platform

  • πŸ“§ Automated Email Notifications β€” Transactional emails via Nodemailer with asynchronous processing via BullMQ + Redis
  • πŸ“… Scheduled Jobs β€” Automated campaign status management via node-cron
  • πŸ“ˆ Error Monitoring β€” Real-time error tracking via Sentry (v10)
  • πŸ“ Structured Logging β€” HTTP and application logs via Morgan + Winston

πŸ›  Tech Stack

Frontend

Technology Purpose
React 19 UI framework
Vite Build tool & dev server
React Router v7 Client-side routing
Framer Motion + GSAP Animations & micro-interactions
Axios HTTP client
Recharts Data visualisation (dashboard charts)
Lucide React + React Icons Icon libraries
Bootstrap 5 Component styling base
React Toastify Notifications

Backend

Technology Purpose
Node.js + Express.js REST API server
MongoDB + Mongoose Primary database (ODM)
Redis + BullMQ Job queue for async email delivery
JWT Authentication & session management
Razorpay Payment gateway integration
Nodemailer Transactional email delivery
Helmet HTTP security headers
express-rate-limit Rate limiting (auth + general routes)
express-mongo-sanitize NoSQL injection prevention
Winston + Morgan Application & HTTP logging
Sentry Real-time error tracking & performance
node-cron Scheduled background jobs
bcryptjs Password hashing
envalid Environment variable validation

πŸ“‚ Project Structure

crowdfunding/
β”œβ”€β”€ impactlink-frontend/          # React + Vite SPA
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/                # Route-level page components
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Campaigns.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ CampaignDetails.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ CreateCampaign.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ EditCampaign.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Profile.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Settings.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Donations.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ AdminDashboard.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ AdminUsers.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ AdminDonations.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Login.jsx / Signup.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ForgotPassword.jsx / ResetPassword.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ About.jsx / Contact.jsx
β”‚   β”‚   β”‚   └── NotFound.jsx
β”‚   β”‚   β”œβ”€β”€ components/           # Reusable UI components (Navbar, Footer, etc.)
β”‚   β”‚   β”œβ”€β”€ context/              # React Context providers (Auth, etc.)
β”‚   β”‚   β”œβ”€β”€ services/             # API service layer
β”‚   β”‚   β”œβ”€β”€ utils/                # Utility functions & Axios instance
β”‚   β”‚   └── assets/               # Static assets
β”‚   β”œβ”€β”€ index.html
β”‚   └── vite.config.js
β”‚
β”œβ”€β”€ impactlink-backend/           # Node.js + Express REST API
β”‚   β”œβ”€β”€ server.js                 # App entry point & middleware setup
β”‚   β”œβ”€β”€ routes/                   # Route definitions
β”‚   β”‚   β”œβ”€β”€ auth.js               # /api/auth
β”‚   β”‚   β”œβ”€β”€ campaign.js           # /api/campaigns
β”‚   β”‚   β”œβ”€β”€ donation.js           # /api/donations
β”‚   β”‚   β”œβ”€β”€ payment.js            # /api/payments (Razorpay)
β”‚   β”‚   β”œβ”€β”€ dashboard.js          # /api/dashboard
β”‚   β”‚   β”œβ”€β”€ admin.js              # /api/admin
β”‚   β”‚   β”œβ”€β”€ admindash.js          # /api/admin/dashboard
β”‚   β”‚   β”œβ”€β”€ user.js               # /api/user
β”‚   β”‚   └── contact.js            # /api/contact
β”‚   β”œβ”€β”€ controllers/              # Business logic handlers
β”‚   β”œβ”€β”€ models/                   # Mongoose schemas
β”‚   β”‚   β”œβ”€β”€ User.js
β”‚   β”‚   β”œβ”€β”€ Campaign.js
β”‚   β”‚   β”œβ”€β”€ Donation.js
β”‚   β”‚   β”œβ”€β”€ Token.js
β”‚   β”‚   β”œβ”€β”€ Contact.js
β”‚   β”‚   └── Admin.js
β”‚   β”œβ”€β”€ middleware/               # Auth & error middleware
β”‚   β”œβ”€β”€ config/                   # DB, Redis, env validation
β”‚   β”œβ”€β”€ jobs/                     # node-cron scheduled tasks
β”‚   β”œβ”€β”€ queues/                   # BullMQ queue definitions
β”‚   β”œβ”€β”€ workers/                  # BullMQ worker processes (email)
β”‚   β”œβ”€β”€ utils/                    # Winston logger & helpers
β”‚   └── scripts/                  # Database seed scripts
β”‚
└── README.md

πŸš€ Getting Started

Prerequisites

1. Clone the Repository

git clone https://github.com/atharvashivari/ImpactLink.git
cd ImpactLink

2. Backend Setup

cd impactlink-backend
npm install

Create a .env file in impactlink-backend/:

PORT=5000
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key
JWT_REFRESH_SECRET=your_jwt_refresh_secret

RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret

EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password

REDIS_URL=redis://localhost:6379       # Optional
SENTRY_DSN=your_sentry_dsn             # Optional
CLIENT_URL=http://localhost:5173

Start the backend:

# Development (with hot reload)
npm run dev

# Production
npm start

3. Frontend Setup

cd impactlink-frontend
npm install

Create a .env file in impactlink-frontend/:

VITE_API_URL=http://localhost:5000/api
VITE_RAZORPAY_KEY_ID=your_razorpay_key_id

Start the frontend:

npm run dev

The app will be available at http://localhost:5173.

4. Seed the Database (Optional)

To populate the database with demo campaigns, users, and donations:

cd impactlink-backend
node scripts/seedDatabase.js

πŸ“‘ API Overview

All API routes are prefixed with /api.

Route Description
POST /api/auth/signup Register a new user
POST /api/auth/login Login and receive JWT tokens
POST /api/auth/logout Invalidate refresh token
POST /api/auth/forgot-password Send password reset OTP
POST /api/auth/reset-password Reset password with OTP
GET /api/campaigns List all campaigns
POST /api/campaigns Create a new campaign (auth required)
GET /api/campaigns/:id Get campaign details
PUT /api/campaigns/:id Update a campaign (owner only)
DELETE /api/campaigns/:id Delete a campaign (owner only)
POST /api/payments/create-order Create Razorpay payment order
POST /api/payments/verify Verify payment & record donation
GET /api/donations List user's donations (auth required)
GET /api/dashboard Get user dashboard statistics
GET /api/admin/dashboard Admin platform statistics
POST /api/contact Submit a contact form message

πŸ”’ Security

ImpactLink implements a multi-layered security approach:

Measure Implementation
HTTP Security Headers helmet β€” sets CSP, HSTS, X-Frame-Options, etc.
NoSQL Injection Prevention express-mongo-sanitize
Rate Limiting Auth routes: 15 req/15 min Β· General: 100 req/15 min
Password Hashing bcryptjs with salt rounds
JWT Authentication Access token + refresh token rotation
Payment Verification Razorpay signature verification server-side
Input Validation Server-side validation on all sensitive inputs
Environment Validation envalid β€” prevents startup with missing env vars
Error Monitoring Sentry for real-time exception tracking

☁️ Deployment

The project is configured for deployment on:


πŸ“„ Documentation

File Description
docs/PRD.md Product Requirements Document β€” features, data models, user roles & roadmap
docs/TECH_STACK.md Full tech stack reference with package versions & key design decisions

πŸ‘€ Author

Atharva Shivari


Built with ❀️ by Atharva Shivari

About

A production-grade MERN crowdfunding platform featuring Redis-powered performance caching, Mongoose ACID transactions for secure payments, and Sentry/Winston for full-stack observability. Integrated with Razorpay SDK and secured with multi-layered middleware (Helmet, Rate-Limiting, Mongo-Sanitize). πŸš€

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages