Upload papers, parse them with layout-aware AI, chat with your documents using RAG, and track research metrics β all in one place.
| Service | Platform | Link |
|---|---|---|
| π₯οΈ Frontend Web App | Vercel | paperlens-research.vercel.app |
| βοΈ Backend API | Render | paperlens-research.onrender.com |
| Layer | Technology | Purpose |
|---|---|---|
| Core Framework | React 18 (Vite SPA) | Fast, modern single-page app |
| Routing | React Router v6 | Client-side navigation |
| State & Auth | Supabase Auth | Google OAuth & Email/Password |
| Styling | Vanilla CSS | Custom tokens, glassmorphism, responsive design |
| Icons | Lucide React | Lightweight icon set |
| Layer | Technology | Purpose |
|---|---|---|
| Web Framework | FastAPI (Python 3.10+) | High-performance async API |
| RAG System | LlamaIndex | Retrieval-augmented generation pipeline |
| LLM | Gemini API (via LlamaIndex) | Answering & summarization |
| Document Parsing | LlamaParse | Layout-aware PDF ingestion |
| Database & Storage | Supabase (PostgreSQL) | Data + PDF object storage |
| Auth Verification | Supabase JWT middleware | Secure request validation |
PaperLens/
βββ FrontEnd/ # React Frontend (Vite)
β βββ src/
β β βββ Components/ # Reusable UI components (Sidebar, etc.)
β β βββ context/ # Authentication and global contexts
β β βββ lib/ # Client initializations (Supabase client)
β β βββ pages/ # Page components (Dashboard, LoginPage, etc.)
β β βββ styles/ # CSS files and global variables
β β βββ utils/ # Utility modules (API fetch helper, services)
β β βββ App.css
β β βββ App.jsx # Main routing & application entry
β β βββ main.jsx
β βββ index.html
β βββ package.json
β βββ vercel.json # Vercel SPA routing configuration
β βββ vite.config.js
β
βββ BackEnd/ # FastAPI Backend
β βββ app/
β β βββ api/
β β β βββ routes/ # API endpoints (auth, chat, dashboard, papers)
β β β βββ api.py # Centralized router definition
β β βββ core/ # Configuration & security settings
β β βββ models/ # Data schemas and Pydantic validation models
β β βββ services/ # Core business logic (LlamaIndex, LLM, ingestion)
β β βββ utils/ # Helper utilities
β β βββ main.py # Application entry point & CORS configuration
β βββ Dockerfile # Containerization configuration
β βββ requirements.txt # Python dependencies
β βββ .dockerignore
βββ README.md # Project documentation
- π Secure Authentication β User management via Supabase Auth, including email sign-in and Google OAuth.
- π Smart Dashboard β Visualize research stats (papers uploaded, questions asked, words indexed) and recent activity.
- π Advanced Document Parsing β LlamaParse extracts complex tables, formulas, and layouts from scientific papers.
- π¬ Interactive RAG Chat β Chat directly with your uploaded papers via Gemini API for context-rich Q&A and summaries.
- ποΈ Paper Repository β Searchable list of uploaded papers with preview and details.
VITE_SUPABASE_URL=your_supabase_url
VITE_SUPABASE_ANON_KEY=your_supabase_anon_key
VITE_API_URL=http://localhost:8000 # Set to https://paperlens-research.onrender.com for productionSUPABASE_URL=your_supabase_url
SUPABASE_SERVICE_KEY=your_supabase_service_role_key
SUPABASE_JWT_SECRET=your_supabase_jwt_secret
GEMINI_API_KEY=your_gemini_api_key
LLAMA_PARSE_KEY=your_llamaparse_api_keycd BackEnd
# Create and activate a virtual environment
python -m venv venv
# Windows:
.\venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run the development server
uvicorn app.main:app --reload --port 8000docker build -t paperlens-backend .
docker run -p 8000:8000 --env-file .env paperlens-backendcd ../FrontEnd
# Install dependencies
npm install
# Run the development server
npm run devOpen http://localhost:5173 in your browser.
Turning papers into conversations