Connecting donors and recipients through intelligent matching, fraud detection, and real-time tracking.
Givista is a full-stack donation platform that connects Donors with Receivers (individuals, orphanages, NGOs) across four donation categories β Money, Food, Clothes, and Blood. An AI microservice powers smart matching between donors and receivers using TF-IDF vectorization and cosine similarity, with built-in fraud detection to keep the platform trustworthy.
Platform
- JWT authentication with bcrypt password hashing
- Three user roles β Donor, Receiver, Admin β with full role-based access control
- Real-time donation tracking:
Pending β Matched β Dispatched β Received β Completed - Admin verification system for donations
- In-platform messaging between users
- Gamification β badges, leaderboards, impact tracking
AI-Powered
- Smart donorβreceiver matching via TF-IDF + Cosine Similarity
- Fraud detection using scikit-learn anomaly detection
- Pattern analytics across donation activity
βββββββββββββββββββ βββββββββββββββββββ ββββββββββββββββββββββββ
β Frontend β β Backend β β AI Microservice β
β β β β β β
β React 18 βββββββββΊβ Node.js βββββββββΊβ Python / Flask β
β TypeScript β β Express β β scikit-learn β
β Tailwind CSS β β Sequelize ORM β β β
β Vite β β JWT Auth β β β’ Recommendations β
β β β β β β’ Fraud Detection β
β :5173 β β :3000 β β :5000 β
βββββββββββββββββββ ββββββββββ¬ββββββββββ ββββββββββββββββββββββββ
β
ββββββββββΌββββββββββ
β MySQL Database β
β :3306 β
ββββββββββββββββββββ
| Layer | Technologies |
|---|---|
| Frontend | React 18, TypeScript, Vite, Tailwind CSS, React Router DOM, Axios |
| Backend | Node.js, Express, TypeScript, Sequelize ORM, MySQL, JWT, bcrypt, Multer |
| AI Service | Python 3.8+, Flask, scikit-learn, pandas, numpy, flask-cors |
| Infrastructure | Docker, Docker Compose |
givista/
βββ frontend/
β βββ src/
β βββ components/ # Navbar, ProtectedRoute, etc.
β βββ contexts/ # AuthContext
β βββ pages/
β β βββ dashboards/ # Donor / Receiver / Admin dashboards
β βββ types/ # TypeScript interfaces
β βββ App.tsx
β βββ main.tsx
β
βββ backend/
β βββ src/
β βββ controllers/ # auth, user, donation, request, recommendation, message
β βββ models/ # User, Donation, Request, Recommendation, Message
β βββ routes/ # auth, user, donation, request, admin
β βββ middleware/ # JWT auth middleware
β βββ services/ # AI service integration
β βββ server.ts
β
βββ ai_service/
β βββ app.py # Flask app with all endpoints
β βββ requirements.txt
β βββ model.pkl # Auto-generated on first run
β βββ vectorizer.pkl # Auto-generated on first run
β
βββ docker-compose.yml
βββ test-integration.sh
node --version # v18+
python --version # 3.8+
mysql --version # 5.7+git clone https://github.com/your-username/givista.git
cd givista
mysql -u root -p -e "CREATE DATABASE givista_db;"cd backend
cp .env.example .env # Fill in your DB credentials and JWT secret
npm install
npm run dev # http://localhost:3000cd frontend
cp .env.example .env # Set VITE_API_BASE_URL=http://localhost:3000/api/v1
npm install
npm run dev # http://localhost:5173cd ai_service
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python app.py # http://localhost:5000docker-compose up -dbackend/.env
DB_HOST=localhost
DB_PORT=3306
DB_NAME=givista_db
DB_USER=root
DB_PASSWORD=your_password
JWT_SECRET=your_secret_key_min_32_chars
JWT_EXPIRES_IN=7d
PORT=3000
NODE_ENV=development
AI_SERVICE_URL=http://localhost:5000
FRONTEND_URL=http://localhost:5173frontend/.env
VITE_API_BASE_URL=http://localhost:3000/api/v1
VITE_AI_SERVICE_URL=http://localhost:5000ai_service/.env
PORT=5000
FLASK_ENV=development
CORS_ORIGINS=http://localhost:3000,http://localhost:5173POST /api/v1/auth/signup
POST /api/v1/auth/login
GET /api/v1/donations
POST /api/v1/donations
GET /api/v1/donations/:id
PUT /api/v1/donations/:id
GET /api/v1/requests
POST /api/v1/requests
PUT /api/v1/requests/:id
GET /api/v1/recommendations
GET /api/v1/admin/stats
GET /api/v1/admin/users
GET /api/v1/admin/flagged
POST /api/v1/admin/verify
POST /recommend
POST /fraud-detect
GET /health
- Passwords hashed with bcrypt (10 rounds)
- JWT authentication with configurable expiry
- SQL injection prevention via Sequelize ORM
- CORS configured with strict origin validation
- XSS protection via React's built-in escaping
- Role-based access control across all routes
- Security headers on all responses
- No hardcoded secrets β all config via environment variables
| Table | Purpose |
|---|---|
users |
Accounts, roles, verification status |
donations |
Offerings with category and status |
requests |
Receiver requests with urgency levels |
recommendations |
AI-generated donorβreceiver matches |
matches |
Confirmed donorβreceiver pairs |
messages |
In-platform communication |
verification |
Admin verification records |
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add your feature' - Push the branch:
git push origin feature/your-feature - Open a Pull Request
Built with β€οΈ for connecting people who give with people who need.