Connecting People with Purpose - A modern platform that bridges the gap between passionate individuals, organizations, and meaningful social causes through intelligent matching and interactive discovery.
ImpactMatch is a comprehensive social impact platform that revolutionizes how people engage with causes they care about. Using an intuitive swipe-based interface, interactive mapping, and intelligent matching algorithms, we make it effortless to discover, connect with, and contribute to social initiatives that align with your values.
- π¨ Modern Design: Vibrant glassmorphic UI with smooth Framer Motion animations
- πΊοΈ Location-Based Discovery: Find 200+ causes near you with interactive Leaflet maps
- π Smart Matching: AI-powered TF-IDF algorithm matches causes to your interests
- π Impact Tracking: Gamified system with points, badges, and analytics
- β Verified NGOs: Transparent verification system for organizations
- π‘οΈ Secure Authentication: JWT-based auth with role-based access control
- π¨βπΌ Admin Dashboard: Comprehensive management panel with real-time analytics
- Features
- Tech Stack
- Installation
- Usage
- Demo Credentials
- Project Structure
- API Documentation
- Contributing
- License
- Swipe Matching: Discover causes through an engaging Tinder-like interface with keyboard support
- Interactive Map: Visualize 200+ causes across 10 Indian cities with real-time filtering
- Personalized Dashboard: Track matches, contributions, and impact metrics with beautiful charts
- Profile Management: Create detailed profiles with city, interests, and preferences
- Badge System: Earn Bronze (50 pts), Silver (100 pts), and Gold (200 pts) badges
- Impact Buddy Chat: AI-powered chat assistant for finding causes
- Responsive Design: Seamless experience across desktop, tablet, and mobile
- Cause Creation: Post and manage social initiatives
- Volunteer Matching: Connect with interested individuals through smart algorithms
- Verification System: Get official verification badge with certificate upload
- Category Management: 10 categories (Environment, Health, Education, Animals, Sports, etc.)
- Location Tagging: Real coordinates for map display
- Impact Analytics: Track engagement, matches, and reach
- User Management: Full CRUD operations for all user types
- NGO Verification: Review and approve organization credentials with certificate viewing
- Cause Moderation: Manage and curate all causes on the platform
- Analytics Dashboard: Real-time statistics (users, causes, matches, verifications)
- Activity Logs: Monitor platform activities with timestamps and user tracking
- Search & Filter: Advanced tools for efficient management
- Data Export: Export user and cause data for reporting
| Technology | Version | Purpose |
|---|---|---|
| βοΈ React | 18.2.0 | UI framework with hooks |
| β‘ Vite | 4.4.5 | Fast build tool and dev server |
| π¨ TailwindCSS | 3.3.3 | Utility-first CSS framework |
| π Framer Motion | 10.16.4 | Smooth animations (300-450ms transitions) |
| πΊοΈ React Leaflet | 4.2.1 | Interactive maps with OpenStreetMap |
| π Lucide React | 0.263.1 | Beautiful icon system (500+ icons) |
| π Recharts | 2.8.0 | Data visualization and charts |
| π React Toastify | 9.1.3 | Toast notifications |
| π React Router | 6.15.0 | Client-side routing |
| π‘ Axios | 1.5.0 | HTTP client for API calls |
| π΄ React Tinder Card | 1.6.4 | Swipeable card interface |
| π― React Spring | 9.7.3 | Spring-physics animations |
| Technology | Version | Purpose |
|---|---|---|
| π’ Node.js | 16+ | JavaScript runtime |
| π Express.js | 4.18.2 | Web framework |
| π MongoDB | 5.x | NoSQL database |
| π¦ Mongoose | 7.5.0 | ODM for MongoDB |
| π JWT | 9.0.2 | Authentication tokens |
| π bcrypt | 5.1.1 | Password hashing |
| π€ Multer | 1.4.5-lts.1 | File upload handling |
| π CORS | 2.8.5 | Cross-origin resource sharing |
| π€ Natural | 6.7.0 | TF-IDF text similarity matching |
Ensure you have the following installed:
- Node.js v16 or higher (Download)
- npm v7+ (comes with Node.js)
- MongoDB (Local or Atlas)
- Git (Download)
# 1. Clone the repository
git clone https://github.com/YOUR_USERNAME/ImpactMatch.git
cd ImpactMatch
# 2. Backend Setup
cd impactmatch
npm install
cp .env.example .env
# Edit .env with your MongoDB URI and JWT secret
node data/createDemoData.js # Seed 200 causes
node data/createAdmin.js # Create admin account
npm start # Runs on http://localhost:5173
# 3. Frontend Setup (new terminal)
cd ../client
npm install
cp .env.example .env
# Edit .env with backend API URL
npm run dev # Runs on http://localhost:3000
# 4. Open http://localhost:3000 in your browsercd impactmatch
# Install all 9 backend packages
npm install express mongoose cors dotenv bcrypt jsonwebtoken multer body-parser
npm install -D nodemon
# Configure environment
cp .env.example .envEdit impactmatch/.env:
MONGODB_URI=mongodb://localhost:27017/impactmatch
JWT_SECRET=your_secure_random_secret_here_change_this
PORT=5173# Seed database with demo data
node data/createDemoData.js # Creates 200 causes across India
node data/createAdmin.js # Creates admin account
# Start backend server
npm start
# Output: "β ImpactMatch server running on port 5173"cd client
# Install all 16 frontend packages
npm install react react-dom react-router-dom axios framer-motion leaflet react-leaflet lucide-react recharts react-toastify react-spring react-tinder-card
npm install -D vite @vitejs/plugin-react tailwindcss postcss autoprefixer
# Configure environment
cp .env.example .envEdit client/.env:
VITE_API_URL=http://localhost:5173/api# Start development server
npm run dev
# Output: "Local: http://localhost:3000"For complete step-by-step instructions, see SETUP_GUIDE.md.
Navigate to http://localhost:3000/register and choose:
-
Individual: Personal volunteer account
- Provide name, email, password, city, interests
-
Organization: Company or group account
- Same fields as individual
-
NGO: Non-profit organization
- Requires certificate upload (PDF, JPG, PNG)
- Goes through admin verification process
Swipe View (/swipe):
- Swipe right (β) to show interest (+10 points)
- Swipe left (β) to pass
- Use mouse drag or keyboard arrows
- Filter by category (10 options)
- Filter by city (10 Indian cities)
- See AI similarity scores
Map View (/map):
- Interactive OpenStreetMap with markers
- 200+ causes across India
- Click markers for cause details
- Filter by verification status
- Zoom and pan controls
- Verified causes show green pulsing markers
Dashboard (/dashboard):
- Impact Score: Animated progress bar with current score
- Badges: Bronze (50), Silver (100), Gold (200)
- Joined Causes: List of all your matched causes
- Statistics Cards: Total causes, matches, verified
- Category Breakdown: Pie chart of your interests
- Recent Activity: Timeline of your actions
Access at /admin/login with admin credentials:
- Dashboard: Overview with 4 stat cards (users, causes, verifications, logs)
- User Management:
- View all users with search and filter
- Edit user details
- Delete users
- Role management
- NGO Verification:
- Review pending NGO applications
- View uploaded certificates
- Approve or reject with comments
- Cause Management:
- View all causes
- Edit or delete causes
- Monitor verification status
- Activity Logs:
- Track all platform activities
- Filter by user, action, date
- Export logs
Email: vismay@example.com
Password: demo123
City: Bangalore
Score: 80 points
Badge: Bronze
Access: Swipe, Map, Dashboard, Profile
Email: admin@impactmatch.com
Password: admin123
Access: Full admin dashboard, user management, NGO verification, activity logs
- Login as demo user
- Navigate to
/swipeto see matched causes - Swipe right on causes you like (+10 points each)
- Go to
/mapto see all 200 causes on the map - Check
/dashboardto see your progress - Logout and login as admin to see the admin panel
ImpactMatch/
β
βββ π client/ # Frontend React Application
β βββ π src/
β β βββ π components/ # Main UI Components (20+ files)
β β β βββ LandingPage.jsx # Homepage with hero and features
β β β βββ Login.jsx # User login
β β β βββ Register.jsx # Multi-type registration
β β β βββ Dashboard.jsx # User analytics dashboard
β β β βββ SwipePage.jsx # Swipe interface
β β β βββ SwipeCard.jsx # Individual cause card
β β β βββ MapView.jsx # Interactive Leaflet map
β β β βββ Navbar.jsx # Glassmorphic navbar with auto-hide
β β β βββ ProgressBar.jsx # Animated progress component
β β β βββ BadgeDisplay.jsx # Badge showcase
β β β βββ ...
β β βββ π admin/ # Admin Panel Components
β β β βββ AdminDashboard.jsx # Admin overview
β β β βββ UserManagement.jsx # CRUD for users
β β β βββ NGOVerification.jsx # NGO approval workflow
β β β βββ ActivityLogs.jsx # Activity monitoring
β β β βββ components/
β β β βββ Sidebar.jsx # Admin navigation
β β β βββ StatsCard.jsx # Stat display component
β β βββ π api/ # API Integration Layer
β β β βββ userAPI.js # User endpoints
β β β βββ matchAPI.js # Match endpoints
β β β βββ verifyAPI.js # Verification endpoints
β β βββ π utils/ # Utility Functions
β β β βββ formatters.js # Date, number formatting
β β βββ App.jsx # Main app component
β β βββ main.jsx # Entry point
β β βββ index.css # Global styles
β β βββ constants.js # App constants
β βββ public/ # Static assets
β βββ index.html # HTML template
β βββ package.json # Frontend dependencies
β βββ vite.config.js # Vite configuration
β βββ tailwind.config.js # Tailwind configuration
β βββ postcss.config.cjs # PostCSS configuration
β
βββ π impactmatch/ # Backend Node.js Application
β βββ π models/ # MongoDB Schemas
β β βββ User.js # User model with auth
β β βββ Cause.js # Cause model with geo data
β β βββ Match.js # Match relationship
β β βββ Verification.js # Verification records
β β βββ NGODetails.js # NGO-specific data
β β βββ ActivityLog.js # Admin activity tracking
β βββ π routes/ # Express API Routes
β β βββ userRoutes.js # /api/user/* (register, login, profile)
β β βββ matchRoutes.js # /api/match/* (causes, swipe, matches)
β β βββ adminRoutes.js # /api/admin/* (users, stats, logs)
β β βββ verifyRoutes.js # /api/verify/* (NGO verification)
β β βββ dashboardRoutes.js # /api/dashboard/* (analytics)
β β βββ chatRoutes.js # /api/chat/* (AI suggestions)
β βββ π utils/ # Backend Utilities
β β βββ auth.js # JWT middleware
β β βββ upload.js # Multer file upload
β β βββ logger.js # Winston logging
β β βββ matcher.js # TF-IDF matching algorithm
β β βββ geolocation.js # Coordinate utilities
β β βββ blockchain.js # (Future) Blockchain integration
β βββ π data/ # Seed Scripts & Data
β β βββ createDemoData.js # Seed 200 causes
β β βββ createAdmin.js # Create admin account
β β βββ generateCauses.js # Generate cause data
β β βββ causes.json # Cause templates
β β βββ users.json # User templates
β βββ π config/
β β βββ db.js # MongoDB connection
β βββ π uploads/ # User-uploaded files (certificates)
β βββ server.js # Express server entry point
β βββ package.json # Backend dependencies
β βββ .env.example # Environment template
β
βββ π README.md # This file
βββ π SETUP_GUIDE.md # Detailed installation guide
βββ π QUICK_SETUP.md # Quick reference card
βββ π ADMIN_PANEL_README.md # Admin panel documentation
βββ π ADMIN_PANEL_COMPLETE.md # Admin implementation details
βββ π CLEANUP_COMPLETE.md # Project cleanup summary
βββ π .gitignore # Git ignore rules
βββ π LICENSE # MIT License
http://localhost:5173/api
POST /user/register
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"password": "password123",
"city": "Bangalore",
"interests": "environment,education",
"accountType": "individual"
}
Response: { token, user }POST /user/login
Content-Type: application/json
{
"email": "john@example.com",
"password": "password123"
}
Response: { token, user }GET /user/profile
Authorization: Bearer <token>
Response: { user }GET /match/causes
Response: { causes: [...] }POST /match
Content-Type: application/json
Authorization: Bearer <token>
{
"userId": "user_id_here"
}
Response: { matches: [...] } // Top 10 causes with similarity scoresPOST /match/swipe
Content-Type: application/json
Authorization: Bearer <token>
{
"userId": "user_id",
"causeId": "cause_id",
"action": "like"
}
Response: { match, user } // +10 points on likeGET /admin/users
Authorization: Bearer <admin_token>
Response: { users: [...] }PUT /admin/users/:id
Authorization: Bearer <admin_token>
Content-Type: application/json
{ ...updated_fields }
Response: { user }DELETE /admin/users/:id
Authorization: Bearer <admin_token>
Response: { message: "User deleted" }GET /admin/verifications
Authorization: Bearer <admin_token>
Response: { verifications: [...] }PUT /admin/verify/:id
Authorization: Bearer <admin_token>
Content-Type: application/json
{
"status": "approved" | "rejected",
"comments": "Reason here"
}
Response: { verification }GET /admin/logs
Authorization: Bearer <admin_token>
Response: { logs: [...] }GET /admin/stats
Authorization: Bearer <admin_token>
Response: {
totalUsers, totalCauses, totalMatches, totalVerifications,
recentUsers, recentCauses
}- Register as Individual
- Register as Organization
- Register as NGO (with certificate upload)
- Login with demo credentials
- Logout and re-login
- Update profile information
- Swipe right on causes (+10 points)
- Swipe left on causes
- Use keyboard arrows for swiping
- Filter causes by category
- Filter causes by city
- View map with all 200 markers
- Click map markers to see cause details
- View dashboard with statistics
- Check badge progression (Bronze at 50)
- Login as admin
- View user management table
- Search and filter users
- Edit user details
- Delete a user
- View pending NGO verifications
- Approve/reject an NGO
- View activity logs
- Check platform statistics
- Test on mobile (< 640px)
- Test on tablet (640-1024px)
- Test on desktop (> 1024px)
- Check navbar auto-hide on scroll
- Verify all animations are smooth
# Backend tests
cd impactmatch
npm test
# Frontend tests
cd client
npm testWe welcome contributions! Here's how you can help:
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/ImpactMatch.git - Create a branch:
git checkout -b feature/AmazingFeature - Make changes and commit:
git commit -m 'Add AmazingFeature' - Push to branch:
git push origin feature/AmazingFeature - Open a Pull Request on GitHub
- Code Style: Follow existing patterns (ESLint config included)
- Commits: Use clear, descriptive commit messages
- Comments: Add comments for complex logic
- Documentation: Update README/docs as needed
- Testing: Test thoroughly before submitting
- Issues: Check existing issues before creating new ones
# Run frontend and backend together
npm run dev:all # (if you set this up)
# Check for linting errors
cd client && npm run lint
# Format code
npm run format# Check MongoDB is running
mongosh
# Should connect without errors
# Check port 5173 is available
# Windows: netstat -ano | findstr :5173
# Mac/Linux: lsof -i :5173
# Restart MongoDB
# Windows: net start MongoDB
# Mac: brew services restart mongodb-community
# Linux: sudo systemctl restart mongod- Verify backend is running:
curl http://localhost:5173/health - Check
client/.envhas correctVITE_API_URL - Check browser console for CORS errors
- Clear browser cache and restart dev server
- Check browser console for errors
- Verify causes exist: Run
node impactmatch/data/createDemoData.js - Check MongoDB connection
- Ensure Leaflet CSS is imported in
main.jsx
- Check
impactmatch/uploads/directory exists - Verify file size < 5MB
- Check file type is PDF, JPG, or PNG
- Ensure multer middleware is configured
# Reset database (WARNING: Deletes all data)
mongosh impactmatch --eval "db.dropDatabase()"
# Re-seed
cd impactmatch
node data/createDemoData.js
node data/createAdmin.jsThis project is licensed under the MIT License.
MIT License
Copyright (c) 2025 ImpactMatch
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
- Live Demo: Coming soon
- Documentation: SETUP_GUIDE.md
- Admin Panel Guide: ADMIN_PANEL_README.md
- Quick Setup: QUICK_SETUP.md
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Vismay - Creator & Developer - GitHub Profile
- OpenStreetMap - Map tiles and data
- Lucide - Beautiful icon system
- MongoDB - Robust database
- React Community - Excellent libraries
- TailwindCSS - Utility-first CSS framework
- Framer Motion - Smooth animations
- All contributors and users of ImpactMatch
- GitHub Issues: For bug reports and feature requests
- Email: your-email@example.com
- Twitter: @YourHandle
- Discord: Coming soon
- Total Files: 83
- Lines of Code: ~25,000
- Components: 20+
- API Endpoints: 25+
- Database Models: 6
- Demo Causes: 200
- Supported Cities: 10
- Categories: 10
- Development Time: Your timeline here
- GPS check-in verification at cause locations
- QR code attendance scanning
- Mobile app (React Native)
- Push notifications for new causes
- Social sharing of verified impact
- Real-time leaderboard
- OpenAI embeddings for semantic matching
- Video testimonials for causes
- In-app messaging between users and NGOs
- Payment integration for donations
- Volunteer hour tracking
- Integration with LinkedIn credentials
- Multi-language support
- Dark mode
Made with β€οΈ for Social Impact
β Star this repo if you find it helpful! β