Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1169

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 1176
8000 GitHub - adhikasp/arxivtok: ArxivTok ๐Ÿ“š: Browse ArXiv papers with a TikTok-style vertical swipe interface.
Nothing Special   »   [go: up one dir, main page]

Skip to content

adhikasp/arxivtok

ย 
ย 

Repository files navigation

ArXivTok ๐Ÿ“ฑ

A TikTok-style interface for exploring research papers across multiple sources including arXiv, medRxiv, bioRxiv, PubMed and HackerNews.

โœจ Features

  • ๐Ÿ“ฑ TikTok-style vertical swipe interface
  • ๐ŸŽฏ Multi-source paper browsing (arXiv, medRxiv, bioRxiv, PubMed, HackerNews)
  • ๐Ÿง  AI-powered abstract simplification using Google's Gemini
  • ๐Ÿ‘ค Customizable explanation personas (college student, professional, layman)
  • โค๏ธ Save favorite papers
  • ๐Ÿ” Real-time search with suggestions
  • ๐Ÿ“ฒ Touch-optimized mobile experience
  • ๐Ÿงฎ LaTeX math rendering support
  • ๐Ÿ”„ Infinite scroll loading
  • ๐Ÿ“ฑ Responsive design for all devices

๐Ÿ› ๏ธ Tech Stack

  • Framework: SolidJS + SolidStart
  • Styling: TailwindCSS
  • Math Rendering: KaTeX
  • AI: Google Gemini API
  • Linting: ESLint with TypeScript and SolidJS plugins
  • APIs:
    • arXiv API
    • medRxiv API
    • bioRxiv API
    • PubMed API
    • HackerNews API

๐Ÿš€ Getting Started

  1. Clone and install dependencies:
git clone https://github.com/yourusername/arxiv-tok.git
cd arxiv-tok
npm install
  1. (Optional) Set up Gemini API key:

    • Copy .env.example to .env
    • Add your Gemini API key to GEMINI_API_KEY
    • If you don't configure this, the app will return the original abstract.
  2. Run development server:

npm run dev

๐Ÿ“ฑ Usage

  • Swipe up/down: Navigate between papers
  • Double tap: Like/unlike paper
  • Tap links: Open source papers
  • Search bar: Find specific papers
  • Source selector: Switch between paper sources
  • Persona selector: Change how abstracts are explained
    • Default: Simplified for general audience
    • College Student: Explained for students in that field
    • Professional: Technical explanation for experts
    • Layman: Simple explanation for non-technical readers

๐Ÿงน Linting

The project uses ESLint to maintain code quality and consistency:

# Run linter
pnpm lint

# Fix automatically fixable issues
pnpm lint:fix

The linter is configured to catch:

  • Unused imports and variables
  • Import ordering issues
  • SolidJS reactivity issues
  • Basic code hygiene problems

๐Ÿ“š API Integration

The app integrates with multiple academic paper sources:

  • arXiv: Computer Science, Physics, Mathematics
  • medRxiv: Medical research preprints
  • bioRxiv: Biology research preprints
  • PubMed: Life sciences and biomedical literature
  • HackerNews: Tech-focused discussions and papers

๐Ÿ—๏ธ Codebase Structure

The project follows a standard SolidStart application structure:

src/
โ”œโ”€โ”€ components/      # Reusable UI components
โ”‚   โ”œโ”€โ”€ ui/          # Basic UI elements
โ”‚   โ”œโ”€โ”€ PaperCard    # Paper display component
โ”‚   โ”œโ”€โ”€ SearchBar    # Search functionality
โ”‚   โ””โ”€โ”€ ...          # Other components
โ”œโ”€โ”€ lib/             # Core utilities and business logic
โ”‚   โ”œโ”€โ”€ papers.ts    # Paper data management
โ”‚   โ”œโ”€โ”€ favorites.ts # Favorites functionality
โ”‚   โ”œโ”€โ”€ gemini.ts    # AI abstract simplification
โ”‚   โ””โ”€โ”€ progress.ts  # Progress tracking
โ”œโ”€โ”€ routes/          # Application routes/pages
โ”œโ”€โ”€ app.tsx          # Main application component
โ””โ”€โ”€ app.css          # Global styles

Key Components

  • PaperCard.tsx: Main component for displaying individual papers with LaTeX support
  • PaperRoulette.tsx: Handles the TikTok-style paper swiping interface
  • SearchBar.tsx: Implements real-time search with suggestions
  • SourceMixer.tsx: Controls paper source selection and mixing
  • PersonaSelector.tsx: Controls abstract explanation style
  • FavoritesModal.tsx: Manages saved/favorite papers

Core Libraries

  • papers.ts: Core paper data fetching and processing
  • favorites.ts: Local storage management for favorite papers
  • gemini.ts: AI-powered abstract simplification with persona support
  • progress.ts: User progress and achievement tracking

๐Ÿค Contributing

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

๐Ÿ“„ License

MIT License - See LICENSE for details

About

ArxivTok ๐Ÿ“š: Browse ArXiv papers with a TikTok-style vertical swipe interface.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 91.1%
  • JavaScript 5.2%
  • CSS 3.1%
  • Dockerfile 0.6%
0