ArxivJS is a comprehensive full-stack research paper management system that combines a Node.js Express backend with a modern React frontend. Available as both a web application and Electron desktop application, it provides a unified interface for discovering, organizing, and summarizing research papers from arXiv and other sources using AI-powered summaries.
git clone https://github.com/your-username/arxivjs.git
cd arxivjsMake sure you have Node.js (v16+) and npm installed. The project uses a unified dependency management system for both frontend and backend:
npm installCreate a .env file in the root of the project and add your Gemini API key:
GEMINI_API_KEY=YOUR_API_KEYYou can use the Gemini API key by creating a project at https://console.cloud.google.com/projectselector2/home/dashboard, generating an API key at https://aistudio.google.com/apikey, and then activating the Generative Language API at https://console.cloud.google.com/apis/dashboard.
Write a user prompt to arxivjsdata/userprompt.txt file.
Following shows an example.
Please summarize the following paper.
The summary **must be written in Korean** and **must follow Markdown syntax** using a clear hierarchical structure with headings, bullet points, and formatting where appropriate.
Ensure the content is **concise, accurate, and easy to understand** for a technical but general audience.
Please follow these formatting rules:
- At the very top, display:
- The **paper title** on the first line as a "#" heading.
- The **author list** on the second line as plain text (comma-separated), below the title.
- Then use the following summary structure:
- ## 🧩 Problem to Solve
- Clearly describe the main research problem or question the paper aims to address.
- ## ✨ Key Contributions
- List the core findings and novel contributions as bullet points.
- ## 📎 Related Works
- Mention key prior works referenced in the paper.
- ## 🛠️ Methodology
- Describe the approach or algorithm used, preferably with steps or bullet points.
- ## 📊 Results
- Summarize quantitative or qualitative results briefly.
- ## 🧠 Insights & Discussion
- Explain the implications, any limitations, or significance of the results.
- ## 📌 TL;DR
- Provide a TL;DR summary of this paper, highlighting the main problem, proposed method, and key findings.
- Guidelines for writing in Markdown format:
1. Use braces around multi-character subscripts or superscripts in MathJax to avoid rendering errors.
2. Use $...$ for inline math and $$...$$ for block math to ensure compatibility with MathJax.
3. Do not use backticks (`) for math; use dollar signs ($) to allow proper MathJax rendering.
Here is the paper content:
{context}
- 🔍 arXiv Integration: Search and fetch papers by keywords and date ranges
- 📁 Topic Management: Create and organize research topics
- 🤖 AI Summaries: Generate paper summaries using Google's Gemini API
- 📄 PDF Processing: Extract text from uploaded PDFs or URLs
- 🌐 RESTful API: Complete API for all operations
- 🔄 Real-time Streaming: Live AI summary generation
- ⚛️ Modern React: Built with React 19 and Vite
- 🎨 8 Custom Themes: Multiple color schemes with persistence
- 🔍 Advanced Search: Real-time filtering with text highlighting
- 📖 Table of Contents: Auto-generated TOC with scroll tracking
- 🧮 Math Rendering: Full LaTeX support with MathJax
- 📱 Responsive Design: Optimized for mobile and desktop
- 🌐 Edge Reader Support: Semantic markup for better accessibility
- 🖥️ Electron Desktop: Native applications for Windows, macOS, and Linux
- 🌍 Web Application: Single-port deployment for easy hosting
- ⚡ Unified Development: Integrated build and development process
ArxivJS offers multiple development workflows:
npm run dev:unified- Builds React in watch mode + runs Express server
- Single port (8765-8768) with automatic rebuilding
- Best for rapid development
npm run dev- Builds React once, then runs Express server
- Single port deployment
- Good for testing production build
npm run dev:separate- React dev server (8765) + Express server (8766)
- Hot module replacement for React
- Traditional development approach
# Build and start production server
npm run build
npm run server# Start Electron app
npm start
# Build distribution packages
npm run dist # All platforms
npm run dist:win # Windows only
npm run dist:mac # macOS only
npm run dist:linux # Linux onlyOnce running, access the application at http://localhost:8765 (or the automatically assigned port).
arxivjs/
├── index.js # Express server with API endpoints
├── main.js # Electron main process
├── package.json # Unified dependencies (frontend + backend)
├── vite.config.js # Vite build configuration
├── index.html # React app entry point
├── src/ # React source code
│ ├── App.jsx # Main React component
│ ├── components/ # React components
│ └── utils/ # Utilities (themes, config, etc.)
├── public/ # Built React app (generated)
├── client/electron/ # Electron configuration
├── assets/ # Static assets
└── arxivjsdata/ # User data (topics, papers, summaries)
ArxivJS uses a unified full-stack architecture:
- Express Backend: Handles API requests, arXiv integration, AI summarization, and PDF processing
- React Frontend: Modern UI with advanced features like search, themes, and math rendering
- Single Port Deployment: Both frontend and API served from the same port (8765-8768)
- Vite Build System: Compiles React app into
public/directory for Express to serve - Electron Wrapper: Cross-platform desktop application support
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the ISC License.