YannAhlgrim 0a5ec1d43e readme
2026-07-09 14:34:50 +02:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 12:27:16 +00:00
2026-07-09 14:34:50 +02:00
2026-07-09 12:27:16 +00:00

Linked Papers

A lightweight, self-hosted web app for exploring academic paper reference graphs. Search for a paper and see an interactive graph of the papers it cites. Node size is proportional to citation count.

Features

  • Search by paper title, DOI, or arXiv ID
  • Interactive force-directed graph (vis-network)
  • Node size based on citation count
  • Click a node to see details; double-click to re-center the graph
  • File-based JSON cache (survives container restarts)
  • Works offline for previously cached graphs
  • Uses OpenAlex for all paper data
  • Shows only outgoing references (papers the seed paper cites)
  • Dockerized

Data Source

OpenAlex is free. Anonymous usage has rate limits; if you hit them often, get a free API key and set it in a .env file (see below).

Quick Start

# (Optional) Add your OpenAlex API key
cp .env.example .env
# edit .env with your OA_API_KEY and OA_EMAIL

# Build and run
docker-compose up -d --build

# Open locally
# http://127.0.0.1:5000

Configuration

Edit docker-compose.yml to tune these environment variables:

Variable Default Description
CACHE_TTL_DAYS 30 Days before cached graph is refreshed
SEARCH_LIMIT 20 Number of search results, sorted by citation count
REFERENCE_LIMIT 100 Top N papers cited by the seed paper (outgoing)
OA_API_KEY (from .env) OpenAlex API key (higher rate limits)
OA_EMAIL (from .env) Email for OpenAlex polite pool (recommended)

Set it in .env and restart:

cp .env.example .env
# edit .env with your OA_API_KEY and OA_EMAIL
docker-compose up -d

Cache

Cached graphs are stored as JSON files in ./cache/. To clear the cache:

rm -f cache/*.json

You can also inspect the cache files directly — they are plain JSON.

Troubleshooting

503 from OpenAlex

OpenAlex has its rate limit and sends a 503 if exceeded. Set OA_API_KEY and OA_EMAIL for higher limits.

Offline Mode

If the APIs are unreachable but a cached graph exists, the app returns the cached graph automatically.

Useful Commands

# View logs
docker-compose logs -f

# Restart
docker-compose restart

# Stop
docker-compose down

# Rebuild after code changes
docker-compose up -d --build
S
Description
Linked research papers explorer with nodes graph
Readme 38 KiB
Languages
Python 48.9%
JavaScript 28.4%
CSS 13.5%
HTML 7.4%
Dockerfile 1.8%