PaperTok
A scrollable, personalized feed of scientific papers.
Open PaperTok · Release notes · Report a bug · Donate
Screenshots of PaperTok 0.3, captured locally with a disposable Firebase emulator account. Paper results come from live scholarly sources.
PaperTok helps you find research when you don't know what to search for. Pick your fields, scroll, and the feed learns from what you read, like, save, skip and follow.
[!NOTE]
PaperTok is under active development. It is not affiliated with arXiv, OpenAlex, PubMed
or any other data provider.
What's new in 0.3
University library access, recommendations that adapt to your reading pace, a redesigned search palette, PDF export and a citation map built for phones. Read the 0.3 release notes.
Features
Discover
- Personalized feed from arXiv, OpenAlex, PubMed, OpenReview, Hugging Face and
- Touch and keyboard: swipe or use the arrow keys, pull to refresh on phones, undo
- Search papers, authors, topics, institutions and funded projects with
/, with a
- Similar papers from the card's action rail, next to likes, saves and connections.
- Follow authors, topics, institutions and projects. Explorer pages list publications,
Read
- Read in plain words at Beginner, University or Researcher level when supported full
- University library access: verify a university email, including a secondary address
- Citation map: explore references and citing papers on desktop or phone, re-center on
- PDF and LaTeX export of the rewrite with your selected highlights and notes, the
Keep
- Reading lists with colors and public links you can share.
- The PaperTok Weekly: an opt-in Monday email with new papers from what you follow.
- Installable on your home screen, with light and dark themes.
Run locally
Requires Node 22.18 or later.
git clone https://github.com/mugar123/papertok.git
cd papertok
npm ci
cp .env.example .env.local
npm run dev
The example points the frontend at a local Cloudflare Worker. Start it with
npx wrangler dev --local --port 8787; provider credentials belong in the ignored
.dev.vars file, as described in worker/README.md.
Firebase web configuration is already bundled in src/services/firebase.ts.
For signed-in development, use npm run dev:emulators with firebase-tools and Java 21
or later. It starts local Auth and Firestore emulators and signs in a disposable account;
Worker routes that require production identity reject its tokens. See the
local testing guide for account switching and limits.
Run npm run check before opening a pull request.
Analytics and error monitoring
Reader analytics distinguish reader_open (the internal reader becomes visible),
paper_open (an attempt to open the original/PDF), and paper_rewrite (an attempted
Worker request). paper_rewrite_result reports success, incomplete output,
failure or cancellation, with the reading level, cache status, bounded duration
and an allowlisted error code. Cached results do not count as Worker requests.
auth_prompt_view records the sign-in dialog's reason; auth_result distinguishes
successful, cancelled and failed Google/GitHub attempts without account details.
Sentry receives frontend and Worker errors in separate papertok-web and
papertok-worker projects. Frontend collection covers the React error boundary,
uncaught JavaScript errors and unhandled promise rejections, on production hosts
and behind the analytics opt-out. Worker collection covers uncaught request,
scheduled-task and Durable Object failures, caught router and rewrite failures,
and otherwise unreported 5xx responses. Expected 4xx responses are excluded.
Backend operational reporting is independent of browser analytics consent.
Reports keep standard error types, code locations, release identifiers and
allowlisted operation/status tags. Messages, request data, account details,
paper content and breadcrumbs are removed; transport IP inference is suppressed.
Tracing, replay, logs and metrics are disabled. app_error remains a product
counter in PostHog. Hidden frontend source maps upload during Vite builds and
are deleted from the published assets. Set SENTRY_AUTH_TOKEN in the Vercel
Production build environment; never use a VITE_* variable for this credential.
The Worker deployment command uploads its maps separately (see worker/README.md).
Contributing
Bug reports, ideas and pull requests are welcome. For large changes, open an issue first. See CONTRIBUTING.md and SECURITY.md.
Donators
PaperTok is an independent open-source project. These people support it with their own money. Thank you.
Acknowledgements
PaperTok depends on open scholarly infrastructure, especially arXiv, OpenAlex and PubMed.
License
MIT. Built by Nicolás Muñoz, with UI design by Samuel and contributions from Pablo Presa and bipo.