🚀 SciLynk v2 — Topics, Reliability, & a New Foundation
SciLynk is back, and v2 is the biggest release we've ever shipped. After a long hiatus, we rebuilt the foundation: every entity page now uses the modern Topics model, the auth + API surface is locked down, the framework is current, and the codebase shed nearly 60% of its weight along the way. This release is the platform that the v2 UI revamp (coming feature-by-feature) is being built on.
✨ New
- Topics replace Concepts: The deprecated Concepts model has been replaced with a cleaner four-level Topics hierarchy (domain → field → subfield → topic). All paper, author, and search pages now use Topics; URLs moved from /concept/C… to /topic/T…. Old URLs return 404 — this was a clean break, not a redirect.
- Sources replace Journals: /journal/S… is now /source/S… and the entity page recognizes journals, repositories, conferences, ebook platforms, and book series with appropriate labels.
- Topic hierarchy on every paper: Every paper now shows its full domain → field → subfield → topic breadcrumb, with the primary topic highlighted.
- Funding gets a proper home: The paper detail page now shows funders and individual award IDs side-by-side, joined automatically when both are present.
- Affiliation now plural: Authors can have more than one current affiliation; we show all of them.
💡 Improvements
- Reliability: Three pages that used to return 500 errors (paper detail, funder, concept) now render cleanly. Every entity page is null-safe against incomplete data from the research database.
- Performance: First-load JavaScript for the paper page dropped from 140 kB to 120 kB. Twelve unused npm dependencies removed.
- Modern stack: Next.js 13 → 15. Mongoose 6 → 8. Stripe 12 → 17. TypeScript is set up for incremental migration.
- Centralized API configuration: Backend API requests are now centralized for easier maintenance and configuration updates.
- HTTP status codes: Eighteen routes that used to return 200 on errors now return proper 4xx codes.
- Atomic credit accounting for Lynx: Credits are now reserved server-side before the OpenAI call, refunded if it fails, and impossible for the client to skip.
🔒 Security
- Verification tokens are cryptographic now: We replaced the forgeable base64 _id|email tokens (anyone who knew your _id could verify your account) with bcrypt-hashed random tokens.
- Collection access is enforced: A bug let any logged-in user delete or modify any collection by ID. Owner / editor checks are now in place on every mutation.
- /api/summarize is no longer a free OpenAI proxy: It now requires a session and reserves credits before calling OpenAI. Previously anyone who found the URL could burn the OpenAI key.
- All 41 API routes enforce HTTP method: GET on a POST-only route returns 405 instead of accidentally running.
- Defense in depth: Routes validate input and check auth before connecting to the database, so a malformed call gets a clean 400 even during a DB outage.
- Stripe webhook is idempotent: We process each event once via a unique index; retries no longer create duplicate invoice rows.
🗑️ Removed
- Legacy /concept and /journal pages (URLs return 404; replaced by /topic and /source).
- The unauthenticated /api/summarize Edge proxy (rebuilt as a session-gated Node route).
- The client-side /api/credits/consume endpoint (credits are deducted server-side now).
- Orphaned routes: /api/feed/getFeedNames, /api/follow/getFollowedAuthor, /api/user/plan, /api/user/inactive.
- All AWS SES email infrastructure (the wiring was broken; restoration via Resend/Postmark coming in a future release).
- The moment, axios, gpt3-tokenizer, openai, aws-sdk, @aws-sdk/client-ses, @next-auth/mongodb-adapter, eventsource-parser, react-rnd, react-highlight-words, validator, and fs npm packages — all unused.
🔜 Coming Next
v2 is the foundation. The next series of releases (one feature at a time) brings the UI overhaul:
- A cohesive light/dark theme with a system-aware toggle
- A Twitter-style elegant feed (and proper onboarding for new users)
- A redesigned paper page with inline AI summaries, citation graph, FWCI badges, and a citation generator (BibTeX, RIS, CSL-JSON)
- Search-as-you-type with a global cmd-k palette
- Restored email so saved searches and verification actually work end-to-end
Have something you'd like to see in v2's feature releases? Email us.

