A comprehensive Flask-based platform for educational institutions to manage question banks, generate custom question papers, and organize academic content by subjects, units, and topics.
- Document Processing: Upload and process PDF question papers
- Smart Extraction: Automatically extract questions with metadata
- Categorization: Organize by department, subject, unit, and topic
- Difficulty Classification: Auto-classify questions by difficulty level
- Custom Papers: Generate question papers based on criteria
- Smart Distribution: Control difficulty levels and mark allocation
- Multiple Formats: Support for various question types (MCQ, descriptive, etc.)
- Branded Output: Professional PDF generation with institutional branding
- Structured Hierarchy: Departments β Subjects β Units β Topics
- Advanced Search: Find questions by multiple criteria
- User Management: Role-based access control
- Analytics Dashboard: Track usage and generate reports
- Python 3.11+
- pip (Python package manager)
- Git (for cloning the repository)
- SQLite (included) or PostgreSQL
-
Clone the Repository
git clone https://github.com/Devlinx-s/ResearchNest.git cd ResearchNest -
Set Up Virtual Environment
# Create and activate virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install Dependencies
pip install -r requirements.txt
-
Configuration Create a
.envfile in the project root:# Application FLASK_APP=app.py FLASK_ENV=development SECRET_KEY=your-secret-key-here # Database DATABASE_URI=sqlite:///researchnest.db # File Uploads UPLOAD_FOLDER=uploads MAX_CONTENT_LENGTH=20971520 # 20MB # Email (optional) MAIL_SERVER=your-smtp-server.com MAIL_PORT=587 MAIL_USE_TLS=True MAIL_USERNAME=your-email@example.com MAIL_PASSWORD=your-email-password
-
Initialize Database
flask db upgrade
-
Run the Application
flask run
-
Access the System
- Open your browser:
http://localhost:5000 - Admin Login:
admin@researchnest.local/admin123 - Instructor/Student: Register with your institutional email
- Open your browser:
ResearchNest/
βββ app/ # Application package
β βββ __init__.py # App factory and extensions
β βββ models/ # Database models
β βββ routes/ # Application routes
β βββ static/ # Static files (CSS, JS, images)
β β βββ css/
β β βββ js/
β β βββ img/
β βββ templates/ # Jinja2 templates
β βββ auth/ # Authentication templates
β βββ admin/ # Admin interface templates
β βββ questions/ # Question management templates
βββ migrations/ # Database migrations
βββ tests/ # Test files
βββ uploads/ # User uploads
βββ .env.example # Example environment variables
βββ config.py # Configuration settings
βββ requirements.txt # Python dependencies
βββ README.md # This file
- User: System users (Admin, Instructor, Student)
- Department: Academic departments
- Subject: Courses within departments
- Unit: Course units
- Topic: Specific topics within units
- Question: Individual questions with metadata
- QuestionDocument: Source documents for questions
- GeneratedQuestionPaper: Generated exam papers
POST /login- User loginPOST /register- New user registrationPOST /logout- User logout
GET /questions- List all questionsPOST /questions- Create new questionGET /questions/<id>- Get question detailsPUT /questions/<id>- Update questionDELETE /questions/<id>- Delete question
POST /generate-paper- Generate new question paperGET /generated-papers- List generated papersGET /generated-papers/<id>/download- Download paper
pytestflask db migrate -m "Migration message"
flask db upgrade- Follow PEP 8 guidelines
- Use type hints for better code clarity
- Write docstrings for all public methods
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with β€οΈ for educational institutions
- Special thanks to all contributors and the open-source community
For support or queries, please email: support@researchnest.local
Made with β€οΈ by the ResearchNest Team
Β© 2025 ResearchNest. All rights reserved.
- Python 3.11 or higher
- SQLite (included) or PostgreSQL
- 1GB RAM minimum, 2GB+ recommended
- 100MB free disk space (plus space for uploaded files)
- Secure password hashing with Werkzeug
- CSRF protection
- File type validation
- Role-based access control
- Session management
- Input sanitization
- Manage departments, subjects, and courses
- Set up academic structures
- Monitor system usage
- Generate reports
- Upload and organize question banks
- Create custom question papers
- Track question usage and difficulty
- Manage class materials
- Access question banks
- Practice with past papers
- Download study materials
- Track progress
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with β€οΈ for educational institutions
- Special thanks to all contributors
- Inspired by the need for better academic resource management