Skip to content

ashutosh-ps/arxiv-explorer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

10 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

arXiv Explorer

A modern, brutalist-style web application for exploring and searching academic papers from arXiv.org. Built with React.js, featuring a clean black & white design, advanced search capabilities, and seamless user experience.

arXiv Explorer License Status

πŸš€ Features

Core Functionality

  • 7 Search Types: All fields, Title, Author, Category, Abstract, Advanced queries, and Direct ID lookup
  • Phrase-Matching Optimization: Intelligent query parsing with automatic quote wrapping for exact phrase searches
  • 155 Academic Categories: Complete arXiv taxonomy across 16 fields (Computer Science, Physics, Mathematics, Economics, Biology, and more)
  • Personal Library: Bookmark papers and track reading history with LocalStorage persistence
  • Dark/Light Mode: Full theme support with instant toggle and system preference detection

Search & Discovery

  • Infinite Scroll: Seamlessly load more results as you scroll - no pagination clicks needed
  • Search History: Recent searches saved locally with quick re-run functionality
  • Date Range Filter: Filter papers by publication date range
  • Advanced Filters: Sort by relevance/date, ascending/descending order

Citation & Export

  • BibTeX Export: Export single papers or bulk export all bookmarks as .bib files
  • Citation Formats: Copy citations in APA, MLA, IEEE, Chicago, or BibTeX format
  • Citation Preview: Preview formatted citations before copying

Modern UI/UX

  • Brutalist Design: Clean black & white aesthetic with sharp corners and 3D hover effects
  • 80+ Lucide Icons: Professional icon library replacing traditional emojis
  • Responsive Layout: Optimized for desktop, tablet, and mobile devices
  • 3D Interactions: Cuboid hover effects using CSS transforms and box-shadow
  • Smooth Animations: Polished transitions throughout the interface
  • Error Recovery: Retry buttons on failed API calls for better reliability

Technical Highlights

  • CORS Solution: Integrated proxy service for seamless cross-origin API requests
  • XML Parsing: Efficient DOMParser implementation for arXiv's Atom feed format
  • Client-Side Storage: No backend required - all data persisted in browser
  • Component Architecture: 15+ reusable React components with clean separation of concerns
  • Intersection Observer: Native browser API for efficient infinite scroll detection

πŸ› οΈ Tech Stack

  • Frontend: React 18.x, React Router v6
  • Styling: CSS3 with CSS Variables, CSS Transforms
  • Icons: Lucide React
  • API: arXiv API (export.arxiv.org)
  • State Management: React Context API, LocalStorage
  • Build Tool: Create React App
  • Proxy: AllOrigins API for CORS handling

πŸ“¦ Installation

Prerequisites

  • Node.js (v14 or higher)
  • npm or yarn

Setup

  1. Clone the repository
git clone https://github.com/yourusername/arxiv-explorer.git
cd arxiv-explorer
  1. Install dependencies
npm install
  1. Start development server
npm start

The app will open at http://localhost:3000

  1. Build for production
npm run build

🎯 Usage

Search for Papers

  1. Navigate to the Search page
  2. Select your search type (Title, Author, Category, etc.)
  3. Enter your query (e.g., "Attention Is All You Need")
  4. Apply filters for results per page and sorting options
  5. Click on any paper to view full details

Browse Categories

  1. Visit the Categories page
  2. Categories are organized by field (Computer Science, Physics, Mathematics, etc.)
  3. Click any group header to expand/collapse categories
  4. Click a category to view papers with infinite scroll support
  5. Each category shows the full arXiv taxonomy (155 categories across 16 fields)

Manage Your Library

  1. Bookmark papers by clicking the star icon
  2. View all bookmarked papers in My Library β†’ Bookmarks
  3. Check your reading history in My Library β†’ History
  4. Export all bookmarks as BibTeX file for citation managers
  5. Clear history anytime with one click

Copy Citations

  1. Open any paper by clicking on it
  2. Click the Cite button in the paper modal
  3. Select your preferred format (APA, MLA, IEEE, Chicago, BibTeX)
  4. Preview the formatted citation
  5. Click Copy to copy to clipboard

Dark Mode

  • Toggle dark/light mode using the moon/sun icon in the header
  • Theme preference is automatically saved

πŸ—οΈ Project Structure

arxiv-explorer/
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ index.html
β”‚   └── manifest.json
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ Header.js          # Navigation header with search and theme toggle
β”‚   β”‚   β”œβ”€β”€ PaperCard.js       # Paper preview card component
β”‚   β”‚   β”œβ”€β”€ PaperModal.js      # Full paper details modal with citations
β”‚   β”‚   └── SearchHistory.js   # Recent searches dropdown component
β”‚   β”œβ”€β”€ context/
β”‚   β”‚   └── DarkModeContext.js # Theme state management
β”‚   β”œβ”€β”€ data/
β”‚   β”‚   └── categories.js      # Complete arXiv taxonomy (155 categories)
β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”œβ”€β”€ HomePage.js        # Landing page with featured papers
β”‚   β”‚   β”œβ”€β”€ SearchPage.js      # Advanced search with infinite scroll
β”‚   β”‚   β”œβ”€β”€ CategoriesPage.js  # Category browser with collapsible groups
β”‚   β”‚   └── LibraryPage.js     # Bookmarks, history, and BibTeX export
β”‚   β”œβ”€β”€ services/
β”‚   β”‚   β”œβ”€β”€ arxivApi.js        # arXiv API integration layer
β”‚   β”‚   β”œβ”€β”€ citationService.js # Citation formatting (APA, MLA, IEEE, etc.)
β”‚   β”‚   └── storageService.js  # LocalStorage for bookmarks, history, search history
β”‚   β”œβ”€β”€ App.js                 # Main app component with routing
β”‚   β”œβ”€β”€ styles.css             # Global brutalist design system
β”‚   └── index.js               # App entry point
β”œβ”€β”€ package.json
└── README.md

πŸ”‘ Key Features Explained

Phrase-Matching Search

The app intelligently wraps multi-word queries in quotes to ensure exact phrase matching:

  • Query: Attention Is All You Need
  • API: ti:"Attention Is All You Need"
  • Result: Exact title match instead of OR-separated terms

Infinite Scroll

Uses Intersection Observer API for efficient scroll detection:

const observer = new IntersectionObserver((entries) => {
  if (entries[0].isIntersecting && hasMore) {
    loadMore();
  }
}, { threshold: 0.1 });

Citation Formats

Generate citations in multiple academic formats:

  • APA: Author, A. A. (Year). Title. arXiv preprint. https://arxiv.org/abs/ID
  • MLA: Author. "Title." arXiv, Year, arxiv.org/abs/ID.
  • IEEE: A. Author, "Title," arXiv:ID, Year.
  • Chicago: Author. "Title." arXiv preprint arXiv:ID (Year). URL.
  • BibTeX: Full @article{} entry for LaTeX

3D Hover Effects

Using CSS transforms and box-shadow to create cuboid depth:

.card:hover {
  transform: translate(4px, 4px);
  box-shadow: -4px -4px 0 var(--border-color);
}

CORS Proxy Solution

Since arXiv API doesn't support CORS, we use AllOrigins:

const proxyUrl = `https://api.allorigins.win/raw?url=${encodeURIComponent(arxivUrl)}`;

Complete arXiv Taxonomy

All 155 categories organized into 16 groups:

  • Computer Science (40 categories)
  • Mathematics (32 categories)
  • Physics (22 categories)
  • Astrophysics (6 categories)
  • Condensed Matter (9 categories)
  • And 11 more fields...

🎨 Design System

Color Scheme

  • Light Mode: White background (#ffffff), Black text (#000000)
  • Dark Mode: Black background (#000000), White text (#ffffff)
  • Borders: 2px solid, 0 border-radius for sharp corners

Typography

  • System font stack for optimal performance
  • Clear hierarchy with size and weight variations

Icons

  • Lucide React icons throughout
  • Consistent 16px-48px sizing based on context

🚧 Development

Available Scripts

  • npm start - Run development server
  • npm run build - Create production build
  • npm test - Run test suite (when configured)

Code Style

  • Functional React components with Hooks
  • Component-based architecture
  • CSS Variables for theming
  • Clean, commented code

πŸ“ API Reference

The app uses the arXiv API:

Base URL: https://export.arxiv.org/api/query

Search Query Prefixes:

  • all: - Search all fields
  • ti: - Search titles
  • au: - Search authors
  • abs: - Search abstracts
  • cat: - Search categories

Example Query:

https://export.arxiv.org/api/query?search_query=ti:"Machine Learning"&start=0&max_results=10

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  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 - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“§ Contact

For questions or feedback, please open an issue on GitHub.


Note: This is a frontend-only application. All data is fetched from arXiv's public API and stored locally in your browser. No backend server is required.

Releases

No releases published

Packages

 
 
 

Contributors