Skip to content

Devlinx-s/ResearchNest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

31 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ResearchNest - Academic Question Bank & Paper Generation System

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.

ResearchNest Banner

✨ Key Features

πŸ“š Question Bank Management

  • 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

πŸ“ Intelligent Paper Generation

  • 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

πŸ›οΈ Academic Organization

  • 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

πŸš€ Quick Start

Prerequisites

  • Python 3.11+
  • pip (Python package manager)
  • Git (for cloning the repository)
  • SQLite (included) or PostgreSQL

Installation

  1. Clone the Repository

    git clone https://github.com/Devlinx-s/ResearchNest.git
    cd ResearchNest
  2. Set Up Virtual Environment

    # Create and activate virtual environment
    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install Dependencies

    pip install -r requirements.txt
  4. Configuration Create a .env file 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
  5. Initialize Database

    flask db upgrade
  6. Run the Application

    flask run
  7. Access the System

    • Open your browser: http://localhost:5000
    • Admin Login: admin@researchnest.local / admin123
    • Instructor/Student: Register with your institutional email

πŸ“š Documentation

Project Structure

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

Database Models

Core Models

  • 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

API Endpoints

Authentication

  • POST /login - User login
  • POST /register - New user registration
  • POST /logout - User logout

Question Management

  • GET /questions - List all questions
  • POST /questions - Create new question
  • GET /questions/<id> - Get question details
  • PUT /questions/<id> - Update question
  • DELETE /questions/<id> - Delete question

Paper Generation

  • POST /generate-paper - Generate new question paper
  • GET /generated-papers - List generated papers
  • GET /generated-papers/<id>/download - Download paper

πŸ› οΈ Development

Running Tests

pytest

Creating Migrations

flask db migrate -m "Migration message"
flask db upgrade

Code Style

  • Follow PEP 8 guidelines
  • Use type hints for better code clarity
  • Write docstrings for all public methods

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built with ❀️ for educational institutions
  • Special thanks to all contributors and the open-source community

πŸ“§ Contact

For support or queries, please email: support@researchnest.local


Made with ❀️ by the ResearchNest Team

Β© 2025 ResearchNest. All rights reserved.

β”œβ”€β”€ models.py # Database models (User, Subject, Unit, Topic, Question, etc.) β”œβ”€β”€ question_processor.py # Core question extraction and paper generation logic β”œβ”€β”€ routes.py # Application routes and views β”œβ”€β”€ forms.py # Form definitions using Flask-WTF β”œβ”€β”€ utils.py # Helper functions and utilities β”œβ”€β”€ requirements.txt # Python dependencies β”œβ”€β”€ static/ # Static files (CSS, JS, images) β”‚ β”œβ”€β”€ css/ β”‚ └── js/ └── templates/ # Jinja2 templates β”œβ”€β”€ admin/ # Admin interface templates β”œβ”€β”€ questions/ # Question management templates └── ... ```

πŸ”§ System Requirements

  • Python 3.11 or higher
  • SQLite (included) or PostgreSQL
  • 1GB RAM minimum, 2GB+ recommended
  • 100MB free disk space (plus space for uploaded files)

πŸ”’ Security Features

  • Secure password hashing with Werkzeug
  • CSRF protection
  • File type validation
  • Role-based access control
  • Session management
  • Input sanitization

πŸ“š Documentation

For Administrators

  • Manage departments, subjects, and courses
  • Set up academic structures
  • Monitor system usage
  • Generate reports

For Instructors

  • Upload and organize question banks
  • Create custom question papers
  • Track question usage and difficulty
  • Manage class materials

For Students

  • Access question banks
  • Practice with past papers
  • Download study materials
  • Track progress

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Built with ❀️ for educational institutions
  • Special thanks to all contributors
  • Inspired by the need for better academic resource management

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors