Skip to content

Avijit0001/ResearchO

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Researcho

Researcho Logo

AI-Powered Research Assistant

Generate reports, literature reviews, chat with documents, and create presentations β€” all powered by local AI.

FastAPI React Ollama Vite


🌟 Features

πŸ“ Quick Report Generation

Generate detailed technical reports on any topic with AI assistance:

  • Structured academic format (Title, Abstract, Introduction, Methodology, Analysis, Conclusion)
  • Automatic citation formatting
  • Download as PDF or DOCX

πŸ“š Literature Review

Search ArXiv for academic papers and generate comprehensive literature reviews:

  • Automatic paper discovery from ArXiv database
  • AI-synthesized summaries of research papers
  • Research gap identification
  • Cohesive academic writing style

πŸ’¬ RAG Chat Interface

Upload multiple PDF/DOCX documents and have intelligent conversations:

  • Multi-document support (like NotebookLM)
  • Context-aware responses based on your documents
  • Real-time WebSocket chat
  • Document management (add/remove documents)

🎯 Presentation Generator

Create PowerPoint presentations from research papers:

  • Automatic slide generation with key points
  • Editable slide preview before download
  • Custom title and bullet point editing
  • Direct PPTX download

πŸ› οΈ Tech Stack

Backend

Technology Purpose
FastAPI Modern Python web framework
Ollama Local LLM (qwen3-vl:2b multimodal)
LangChain LLM orchestration and RAG
FAISS Vector store for embeddings
HuggingFace Local embeddings (sentence-transformers)
ArXiv API Academic paper retrieval
python-pptx PowerPoint generation
ReportLab PDF generation

Frontend

Technology Purpose
React 19 UI library
Vite 7 Build tool and dev server
React Router v7 Client-side routing
Vanilla CSS Custom styling

πŸ“¦ Prerequisites

Before you begin, ensure you have the following installed:


πŸš€ Quick Start

1. Clone the Repository

git clone <your-repo-url>
cd MyPro

2. Set Up Ollama

# Install Ollama from https://ollama.ai

# Pull the required model
ollama pull qwen3-vl:2b

# Start Ollama server (if not running as a service)
ollama serve

3. Set Up the Backend

# Navigate to backend
cd backend

# Create virtual environment
python -m venv venv

# Activate virtual environment
# Windows:
.\venv\Scripts\activate
# Linux/macOS:
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Start the backend server
python mainback.py

The backend API will be available at http://localhost:8000

4. Set Up the Frontend

# Open a new terminal and navigate to frontend
cd frontend

# Install dependencies
npm install

# Configure environment (optional)
cp .env.example .env
# Edit .env to set: VITE_API_URL=http://localhost:8000

# Start the development server
npm run dev

The frontend will be available at http://localhost:5173


πŸ“ Project Structure

MyPro/
β”œβ”€β”€ backend/                    # FastAPI Backend
β”‚   β”œβ”€β”€ mainback.py            # Main application file
β”‚   β”œβ”€β”€ requirements.txt       # Python dependencies
β”‚   β”œβ”€β”€ pyproject.toml         # Project configuration
β”‚   β”œβ”€β”€ .env.example           # Environment template
β”‚   └── README.md              # Backend documentation
β”‚
β”œβ”€β”€ frontend/                   # React Frontend
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   └── researcho.png      # App favicon/logo
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/        # Reusable UI components
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ LoadingSpinner.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Toast.jsx
β”‚   β”‚   β”‚   └── ToastContainer.jsx
β”‚   β”‚   β”œβ”€β”€ contexts/          # React context providers
β”‚   β”‚   β”‚   └── AppContext.jsx
β”‚   β”‚   β”œβ”€β”€ hooks/             # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ sections/          # Page components
β”‚   β”‚   β”‚   β”œβ”€β”€ Home.jsx       # Landing page
β”‚   β”‚   β”‚   β”œβ”€β”€ Report.jsx     # Report generation
β”‚   β”‚   β”‚   β”œβ”€β”€ Review.jsx     # Literature review
β”‚   β”‚   β”‚   β”œβ”€β”€ RAG.jsx        # Document chat
β”‚   β”‚   β”‚   └── PPTX.jsx       # Presentation generator
β”‚   β”‚   β”œβ”€β”€ App.jsx            # Main app component
β”‚   β”‚   β”œβ”€β”€ App.css
β”‚   β”‚   β”œβ”€β”€ index.css          # Global styles
β”‚   β”‚   └── main.jsx           # Entry point
β”‚   β”œβ”€β”€ index.html
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ vite.config.js
β”‚   └── README.md              # Frontend documentation
β”‚
└── README.md                   # This file

πŸ”— API Reference

Base URL

http://localhost:8000

Endpoints

Health Check

Method Endpoint Description
GET / API info and endpoints
GET /api/health Health check

Report Generation

Method Endpoint Description
POST /api/generate/report Generate technical report
// Request Body
{ "content": "Your research topic" }

Literature Review

Method Endpoint Description
POST /api/generate/review Generate literature review
// Request Body
{ "content": "Your research topic" }

RAG Chat

Method Endpoint Description
POST /api/upload/pdf Upload PDF/DOCX files
POST /api/chat Chat with documents
WebSocket /api/chat/ws Real-time chat
GET /api/documents List documents
DELETE /api/documents/{id} Delete document
DELETE /api/documents Clear all documents
// Chat Request Body
{ "message": "Your question" }

Presentation

Method Endpoint Description
POST /api/generate/pptx Generate from file upload
POST /api/generate/pptx/from-id Generate from stored file
GET /api/pptx/download/{id} Download PPTX
POST /api/pptx/update Update slides

Downloads

Method Endpoint Description
POST /api/download/docx Download as DOCX
POST /api/download/pdf Download as PDF

βš™οΈ Configuration

Backend Configuration

Changing the LLM Model (backend/mainback.py):

llm = ChatOllama(model="qwen3-vl:2b")  # Default

# Alternatives:
# llm = ChatOllama(model="llama3:8b")
# llm = ChatOllama(model="mistral:7b")
# llm = ChatOllama(model="gemma2:9b")

CORS Settings (for production):

app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://yourdomain.com"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

Frontend Configuration

API URL (frontend/.env):

VITE_API_URL=http://localhost:8000

πŸ“ Available Scripts

Backend

Command Description
python mainback.py Start dev server
uvicorn mainback:app --reload Start with auto-reload
uvicorn mainback:app --workers 4 Production mode

Frontend

Command Description
npm run dev Start dev server
npm run build Build for production
npm run preview Preview production build
npm run lint Run ESLint

πŸ“– API Documentation

When the backend is running, interactive API documentation is available at:


🌐 Browser Support

Browser Minimum Version
Chrome 90+
Firefox 90+
Safari 14+
Edge 90+

🀝 Contributing

  1. Fork the repository
  2. Create your 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.


Researcho - AI-powered research assistance made simple.

Made with ❀️ for researchers everywhere.

About

A research assistant webapp that runs locally.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors