A TikTok-style interface for exploring research papers across multiple sources including arXiv, medRxiv, bioRxiv, PubMed and HackerNews.
- ๐ฑ 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
- 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
- Clone and install dependencies:
git clone https://github.com/yourusername/arxiv-tok.git
cd arxiv-tok
npm install
-
(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.
- Copy
-
Run development server:
npm run dev
- 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
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
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
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
- 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
- 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
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - See LICENSE for details