A modern, full-stack EdTech CRM platform for managing student data, automated segmentation, and campaign delivery. Built with production-ready architecture featuring Redis Cloud integration, batch processing, and persistent session management.
- Google OAuth 2.0 integration with Passport.js
- Redis-powered session management (sessions persist across server restarts)
- Production-ready CORS and cookie security
- Bulk Upload: CSV/Excel files with intelligent batch processing
- Background Processing: Redis queue system processes large uploads without blocking
- Scalable Processing: Configurable batch sizes (100 students per batch with 1s delays)
- Data Validation: Robust file validation and error handling
- CRUD Operations: View, paginate, search, and delete student records
- Smart Segmentation: Rule-based student filtering (age, CGPA, course, etc.)
- Campaign Creation: Multi-channel campaign setup and delivery
- History Tracking: Complete campaign delivery logs and analytics
- Performance Metrics: Track campaign success rates and engagement
- Real-time student and campaign statistics
- Quick action buttons for common tasks
- Recent activity feed
- Performance overview charts
- React 18 with Vite for lightning-fast development
- Tailwind CSS for modern, responsive design
- Axios for API communication with credential support
- React Router for client-side routing
- Node.js & Express.js for robust server architecture
- MongoDB with Mongoose ODM for data persistence
- Redis Cloud for session storage and job queuing
- Passport.js for Google OAuth authentication
- Multer for file upload handling
- Redis Queue System for non-blocking bulk operations
- Custom Worker Process for batch student processing
- Configurable Processing with batch sizes and delays
- CSV Support with csv-parse library
- Excel Support with xlsx library
- File Validation and error handling
Minicrm/
βββ backend/
β βββ config/
β β βββ db.js # MongoDB connection
β β βββ passport.js # Google OAuth configuration
β β βββ redisClient.js # Redis Cloud connection
β β βββ studentWorker.js # Background job processor
β βββ models/
β β βββ studentModel.js # Student data schema
β β βββ campaignModel.js # Campaign schema
β β βββ userModel.js # User authentication schema
β β βββ communicationLog.js # Campaign delivery logs
β βββ routes/
β β βββ authRouter.js # Authentication endpoints
β β βββ studentRoute.js # Student CRUD & bulk upload
β β βββ campaignRoutes.js # Campaign management
β βββ uploads/ # Temporary file storage
β βββ index.js # Main server entry point
β βββ dev.js # Development server
β βββ package.json
βββ frontend/
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Main application pages
β β βββ context/ # React context providers
β β βββ App.jsx # Main application component
β βββ public/
β βββ index.html
β βββ package.json
βββ README.md
- Node.js 18+ and npm
- MongoDB Atlas account (or local MongoDB)
- Redis Cloud account (free tier available)
- Google Cloud Console project for OAuth
git clone <your-repo-url>
cd Minicrm
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../frontend
npm installCreate backend/.env:
# Database
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/minicrm?retryWrites=true&w=majority
# Redis Cloud
REDIS_HOST=your-redis-host
REDIS_PORT=your-redis-port
REDIS_USERNAME=default
REDIS_PASSWORD=your-redis-password
# Google OAuth
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# Security
JWT_SECRET=your-super-secure-jwt-secret
SESSION_SECRET=your-session-secret
# Environment
NODE_ENV=development
FRONTEND_URL=http://localhost:5173Create frontend/.env.development:
VITE_API_URL=http://localhost:3000# Terminal 1: Start backend server
cd backend
npm run dev
# Terminal 2: Start background worker
cd backend
node config/studentWorker.js
# Terminal 3: Start frontend
cd frontend
npm run devAccess the application at http://localhost:5173
- Upload: User uploads CSV/Excel file via frontend
- Queue: File is parsed and job is queued in Redis
- Process: Background worker processes students in batches of 100
- Progress: Real-time logging of batch processing progress
- Cleanup: Temporary files are automatically cleaned up
- Setup: Define campaign name, message, and delivery channel
- Segment: Use rule builder to filter target students
- Preview: Review segment size and student list
- Launch: Campaign is queued for delivery
- Track: Monitor delivery status and engagement metrics
For bulk student uploads, use CSV/Excel files with these columns:
| Column | Type | Required | Example |
|---|---|---|---|
| name | String | Yes | John Doe |
| age | Number | Yes | 22 |
| String | Yes | john@example.com | |
| cgpa | Number | Yes | 8.5 |
| courseName | String | Yes | Computer Science |
Download template: Available in the Bulk Upload section of the application
NODE_ENV=production
FRONTEND_URL=https://your-frontend-domain.com
REDIS_URL=redis://username:password@host:port # Alternative Redis config- Frontend: Vercel, Netlify (static hosting)
- Backend: Render, Railway, Heroku
- Database: MongoDB Atlas
- Redis: Redis Cloud, Upstash
- File Storage: Consider AWS S3 for production file handling
- Redis session persistence ensures zero-downtime deployments
- Background job processing prevents request timeouts
- Configurable batch processing for optimal performance
- Production-ready CORS and security headers