A comprehensive web-based research scholar management system for IIT Mandi, built with Flask (Python) backend and React frontend.
- β Progress report submission and tracking
- β Leave application management
- β Meeting scheduling with guides
- β Document requests (certificates, transcripts)
- β Travel grant applications
- β Thesis submission
- β Research milestone tracking
- β Real-time notifications
- β Scholar progress monitoring
- β Feedback on progress reports
- β Meeting management
- β Leave application approval
- β Committee participation
- β Multi-scholar management dashboard
- β User management (scholars, guides, admins)
- β Committee management (APC, DC)
- β Document processing and approval
- β Travel grant approval workflow
- β System-wide analytics and reports
- β Email notifications
- Framework: Flask 3.0.0 (Python)
- Database: PostgreSQL 15+
- ORM: SQLAlchemy
- Authentication: JWT (Flask-JWT-Extended)
- File Handling: Flask file upload with validation
- Email: Flask-Mail
- Migrations: Flask-Migrate
- CORS: Flask-CORS
- Framework: React 18+ with Vite
- Styling: Tailwind CSS
- Routing: React Router v6
- State Management: Zustand
- HTTP Client: Axios
- Icons: Lucide React
- Notifications: React Hot Toast
- Version Control: Git & GitHub
- Development: Hot reload for both frontend and backend
- Database Migrations: Alembic (via Flask-Migrate)
Before you begin, ensure you have the following installed:
- Python 3.12.3 (exact version recommended)
- PostgreSQL 15+
- Node.js 18+ and npm
- Git
-
Clone the repository
git clone https://github.com/Shrestha-Kumar/research-module.git cd research-module -
Run the automated setup script
quick_setup_windows.bat
-
Follow the prompts to complete setup
-
Start the application
Terminal 1 - Backend:
cd backend rp\Scripts\activate python run.pyTerminal 2 - Frontend:
cd frontend npm run dev -
Open browser: http://localhost:5173
See WINDOWS_SETUP_GUIDE.md for detailed manual setup instructions (adapt commands for your OS).
For step-by-step instructions, see WINDOWS_SETUP_GUIDE.md
The system includes 11 main tables:
- users - Authentication and user profiles
- scholars - Scholar-specific information
- guides - Guide/supervisor information
- committees - APC and DC committees
- meetings - Meeting records and schedules
- progress_reports - Scholar progress submissions
- exams - Comprehensive exam records
- travel_grants - Travel grant applications
- thesis_submissions - Thesis submissions and status
- leave_applications - Leave requests and approvals
- student_documents - Document requests (certificates, transcripts)
After running the seed script, use these credentials to login:
| Role | Password | |
|---|---|---|
| Scholar | scholar@iitmandi.ac.in | scholar123 |
| Guide | guide@iitmandi.ac.in | guide123 |
| Admin | admin@iitmandi.ac.in | admin123 |
research-module/
βββ backend/
β βββ app/
β β βββ __init__.py
β β βββ models/ # Database models
β β βββ routes/ # API endpoints
β β βββ utils/ # Helper functions
β βββ migrations/ # Database migrations
β βββ uploads/ # File uploads
β βββ .env # Environment variables
β βββ requirements.txt # Python dependencies
β βββ run.py # Application entry point
β βββ seed.py # Sample data seeder
β
βββ frontend/
β βββ src/
β β βββ components/ # Reusable React components
β β βββ pages/ # Page components
β β βββ services/ # API service layer
β β βββ store/ # State management
β β βββ App.jsx # Root component
β β βββ main.jsx # Entry point
β βββ .env # Environment variables
β βββ package.json # Node dependencies
β βββ vite.config.js # Vite configuration
β
βββ quick_setup_windows.bat # Automated setup script
βββ WINDOWS_SETUP_GUIDE.md # Detailed setup guide
βββ README.md # This file
FLASK_APP=run.py
FLASK_ENV=development
SECRET_KEY=your-secret-key
JWT_SECRET_KEY=your-jwt-secret
DATABASE_URL=postgresql://postgres:password@localhost:5432/iit_mandi_research
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-passwordVITE_API_URL=http://localhost:5000/api# Health check
curl http://localhost:5000/api/health
# Login
curl -X POST http://localhost:5000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"scholar@iitmandi.ac.in","password":"scholar123"}'- Start both backend and frontend
- Navigate to http://localhost:5173
- Login with test credentials
- Test each feature module
POST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/logout- User logoutGET /api/auth/me- Get current user
GET /api/scholar/dashboard- Scholar dashboard dataGET /api/scholar/progress-reports- Get all progress reportsPOST /api/scholar/progress-report- Submit progress reportGET /api/scholar/meetings- Get all meetingsGET /api/scholar/leave-applications- Get leave applicationsPOST /api/scholar/leave- Apply for leavePOST /api/scholar/travel-grant- Apply for travel grantPOST /api/scholar/document-request- Request document
GET /api/guide/dashboard- Guide dashboard dataGET /api/guide/scholars- Get assigned scholarsPOST /api/guide/feedback- Provide feedback on reportsGET /api/guide/meetings- Get scheduled meetingsPUT /api/guide/leave/:id- Approve/reject leave
GET /api/admin/dashboard- Admin dashboardGET /api/admin/scholars- Get all scholarsGET /api/admin/guides- Get all guidesPOST /api/admin/user- Create new userPUT /api/admin/user/:id- Update userDELETE /api/admin/user/:id- Delete user
Backend won't start:
- Check PostgreSQL is running
- Verify DATABASE_URL in .env
- Ensure all dependencies are installed
- Check port 5000 isn't in use
Frontend won't start:
- Clear node_modules and reinstall:
rm -rf node_modules && npm install - Check Node.js version:
node --version - Verify .env has correct API URL
Database connection errors:
- Verify PostgreSQL service is running
- Check database exists:
psql -U postgres -l - Verify credentials in .env
Import errors:
- Activate virtual environment
- Reinstall requirements:
pip install -r requirements.txt
See WINDOWS_SETUP_GUIDE.md for more detailed troubleshooting.
git pull origin main
cd backend
rp\Scripts\activate # or source rp/bin/activate on Mac/Linux
pip install -r requirements.txt
flask db upgrade
cd ../frontend
npm install- Create a new branch:
git checkout -b feature/your-feature - Make your changes
- Test thoroughly
- Commit:
git commit -m "Description of changes" - Push:
git push origin feature/your-feature - Create Pull Request on GitHub
cd backend
rp\Scripts\activate
flask db migrate -m "Description of changes"
flask db upgrade
git add migrations/
git commit -m "Add migration: Description"- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
- Python: Follow PEP 8
- JavaScript/React: Follow Airbnb style guide
- Git Commits: Use conventional commits
- Code Review: All PRs require review
This project is proprietary software developed for IIT Mandi.
- Original Developer: Shrestha Kumar
- GitHub: https://github.com/Shrestha-Kumar/research-module
- Institution: IIT Mandi
For issues and questions:
- Check WINDOWS_SETUP_GUIDE.md
- Search existing GitHub issues
- Create a new issue with detailed description
- Contact the development team
- IIT Mandi for project requirements
- Flask and React communities
- All contributors to this project
After successful setup:
- Familiarize yourself with the codebase
- Read the API documentation above
- Test all features with the test credentials
- Join the team communication channels
- Pick up a task from the project board
Happy Coding! ππ»