- Yes. The scientific record is too important to be hidden behind paywalls. Science should
- be open, not only for reading, but also for reusing.
-
-
- That's why user contributions to ResearchHub are shared under the{' '}
-
- Creative Commons Attribution License
- {' '}
- (CC BY 4.0). This license allows anyone to reuse the content for any purpose, as long as
- attribution is provided. We consider a hyperlink or URL back to the source page on
- ResearchHub sufficient attribution.
-
-
- The CC BY license is the gold standard of open licenses for scholarly content. It is used
- by publishers such as{' '}
-
- PLOS
-
- ,{' '}
-
- eLife
-
- ,{' '}
-
- Distill
-
- , and{' '}
-
- BMC
-
- . By choosing CC BY, ResearchHub ensures user content can be reused to further science, by
- way of text mining, sharing, translation, and many other forms of reuse. This sets
- ResearchHub apart from other places to discuss science, like ResearchGate or Reddit, which
- do not apply an open license to all user-contributed content.
-
-
- ),
- },
- {
- question: 'What papers can I legally upload to ResearchHub?',
- answer: (
-
-
- Users can create a ResearchHub page for any paper, allowing for summary and discussion.
- However, due to copyright, only certain papers are eligible for fulltext PDF upload.
- Specifically, please only upload fulltexts of papers released under one of the following
- open licenses:{' '}
-
- CC BY
- {' '}
- or{' '}
-
- CC0
-
- .
-
-
- To determine whether an article is released under one of these licenses, check for any
- text in the PDF stating a license or refer to the webpage where you downloaded the PDF. If
- you are the author of a paper and would like to upload the fulltext to ResearchHub, apply
- a supported license to the paper at an existing publicly available location. In other
- words, PDFs uploaded to ResearchHub should be available elsewhere on the web with a
- supported license. We do not currently publish original articles that are not available
- elsewhere.
-
-
- Disappointed that you cannot upload a paper's PDF due to copyright? We are too. While open
- access publishing is growing in popularity, many papers are still published in toll access
- journals without open licenses. We can change this by encouraging scientists to publish in
- open access journals and use platforms like ResearchHub that remove legal barriers from
- science.
-
-
- ),
- },
- {
- question: 'Who created this site?',
- answer: (
-
-
- ResearchHub is being developed by a small team of passionate founders working in San
- Francisco, CA.
-
-
- The idea for the site was initially proposed in this{' '}
-
- blog post
-
- .
-
-
- ),
- },
- {
- question: 'How can I help?',
- answer: (
-
-
- The easiest way to help the community grow is to sign in and start contributing content.
-
-
- 1. Sign in
-
- Create your account in just a few clicks, using Google Sign In.
-
-
- 2. Upload a paper
-
- Is there a research paper you thought was particularly insightful?
-
-
- 3. Write/edit a summary
-
- Is there a paper that you can help explain in plain English?
-
-
- 4. Upvote (or downvote) a paper
-
- Is there a paper already on the site that you have an opinion on?
-
-
- 5. Start a discussion.
-
- Is there a question you have about a paper?
-
-
- 6. Follow us on Twitter
-
- Hear our latest updates as we make progress.
-
- ResearchHub's mission is to accelerate the pace of scientific research. Our goal is to
- make a modern mobile and web application where people can collaborate on scientific
- research in a more efficient way, similar to what GitHub has done for software
- engineering.
-
-
- Researchers should be able to publish articles (preprint or postprint) and discuss the
- findings in a completely open and accessible forum dedicated solely to the relevant
- article.
-
-
-
-
-
-
-
-
-
-
-
-
-
- "Hubs" as an Alternative to Journals
-
-
- Within the ResearchHub platform, research papers are stored and grouped in 'Hubs' by
- area of research. Individual Hubs will essentially act as live journals within focused
- areas, with highly upvoted posts (i.e. the paper and its associated summary and
- discussion) moving to the top of each Hub.
-
- To help bring this nascent community together and incentivize contribution to the
- platform, a newly created ERC20 token, ResearchCoin (RSC), has been created. To
- incentivize users, ResearchHub issues tokens that users can earn and transfer to one
- another by sharing, curating, and discussing topics within the platform. Users can
- also transfer tokens to one another on the platform by creating "bounties" to
- incentivize other users to engage with their post. Rewards for contributions are
- proportionate to how valuable the community perceives the actions to be - as measured
- by upvotes.
-
-
- ResearchCoin is also linked to reputation on the platform--with reputation being
- measured as a user's lifetime earnings of ResearchCoin minus erosion due to downvotes.
- Reputation is linked to certain privileges in the app, as well as a mechanism for
- moderation within the community.
-
- );
-};
diff --git a/app/about/components/AboutValues.tsx b/app/about/components/AboutValues.tsx
deleted file mode 100644
index 7ed008998..000000000
--- a/app/about/components/AboutValues.tsx
+++ /dev/null
@@ -1,44 +0,0 @@
-import { Globe, Star, Rocket } from 'lucide-react';
-
-const values = [
- {
- title: 'Accessible to everyone',
- text: 'The scientific record is too important to be hidden behind paywalls and in ivory towers. ResearchHub is accessible to everybody, everywhere, with no content residing behind paywalls and no costs to participate. Summaries are written in plain English to improve accessibility.',
- icon: ,
- },
- {
- title: 'Collaborative',
- text: 'Academic research is too siloed today. ResearchHub encourages academics and non-academics alike to interact in a public and collaborative manner. An incentive for such behavior is provided in the form of ResearchCoin.',
- icon: ,
- },
- {
- title: 'Efficient',
- text: 'It can take 3-5 years today to go through the process of applying for funding, completing the research, submitting a paper to journals, having it reviewed, and finally getting it published. We believe research could be completed at least one order of magnitude more efficiently.',
- icon: ,
- },
-];
-
-export const AboutValues = () => {
- return (
-
- );
-};
diff --git a/app/about/layout.tsx b/app/about/layout.tsx
index d63876c45..2cabfa283 100644
--- a/app/about/layout.tsx
+++ b/app/about/layout.tsx
@@ -1,30 +1,6 @@
import { Metadata } from 'next';
import { buildOpenGraphMetadata, SITE_CONFIG } from '@/lib/metadata';
-import { generateFAQStructuredData } from '@/lib/structured-data';
-import { LeftSidebar as MainLeftSidebar } from '../layouts/LeftSidebar';
-
-const faqItems = [
- {
- question: 'Is content created on ResearchHub open?',
- answer:
- 'Yes. User contributions to ResearchHub are shared under the Creative Commons Attribution License (CC BY 4.0), allowing anyone to reuse the content for any purpose with attribution.',
- },
- {
- question: 'What papers can I legally upload to ResearchHub?',
- answer:
- 'Users can create a ResearchHub page for any paper. However, only papers released under CC BY or CC0 open licenses are eligible for fulltext PDF upload.',
- },
- {
- question: 'Who created this site?',
- answer:
- 'ResearchHub is being developed by a small team of passionate founders working in San Francisco, CA.',
- },
- {
- question: 'How can I help?',
- answer:
- 'Sign in, upload a paper, write or edit a summary, upvote or downvote papers, start a discussion, or follow us on Twitter.',
- },
-];
+import { generateOrganizationStructuredData } from '@/lib/structured-data';
export const metadata: Metadata = {
...buildOpenGraphMetadata({
@@ -37,27 +13,14 @@ export const metadata: Metadata = {
template: `%s | ${SITE_CONFIG.name}`,
},
other: {
- 'application/ld+json': JSON.stringify(generateFAQStructuredData(faqItems)),
+ 'application/ld+json': JSON.stringify(generateOrganizationStructuredData()),
},
};
export default function AboutLayout({ children }: Readonly<{ children: React.ReactNode }>) {
return (
-
-
- {/* Main Left Sidebar - 70px fixed width (minimized) */}
-
-
-
-
- {/* Main Content Area */}
- {children}
-
+
+ {children}
);
}
diff --git a/app/about/page.tsx b/app/about/page.tsx
index 834f4f644..99fd79015 100644
--- a/app/about/page.tsx
+++ b/app/about/page.tsx
@@ -1,33 +1,43 @@
'use client';
-import { AboutValues } from './components/AboutValues';
-import { AboutMission } from './components/AboutMission';
-import { AboutContact } from './components/AboutContact';
-import { AboutFAQ } from './components/AboutFAQ';
-import { AboutResearchCoin } from './components/AboutResearchCoin';
-import { usePathname } from 'next/navigation';
-import { PageBanner } from './components/PageBanner';
-import { AboutTabs } from './components/AboutTabs';
+import { SubtabsNav, type SubtabsSection } from '@/components/about/SubtabsNav';
+import { Hero } from '@/components/about/Hero';
+import { FundedAt } from '@/components/about/FundedAt';
+import { Problem } from '@/components/about/Problem';
+import { Solution } from '@/components/about/Solution';
+import { FundingMarketplace } from '@/components/about/FundingMarketplace';
+import { ResearchCoin } from '@/components/about/ResearchCoin';
+import { Endaoment } from '@/components/about/Endaoment';
+import { TeamSection } from '@/components/about/TeamSection';
+import { CTASection } from '@/components/about/CTASection';
+import { LandingPageFooter } from '@/components/landing/LandingPageFooter';
-const AboutPage = () => {
- const pathname = usePathname();
+const sections: ReadonlyArray = [
+ { id: 'about', label: 'About' },
+ { id: 'team', label: 'Team' },
+];
+const AboutPage = () => {
return (
-
hello@researchhub.com
@@ -677,7 +692,7 @@ const TOSPage = () => {
and concerns here or by emailing us at{' '}
hello@researchhub.com
@@ -715,7 +730,7 @@ const TOSPage = () => {
if you provide us with written notice of your desire to do so by email at{' '}
hello@researchhub.com
{' '}
@@ -727,13 +742,13 @@ const TOSPage = () => {
the American Arbitration Association ("AAA") under its Consumer
Arbitration Rules (the "AAA Rules") then in effect, except as modified by these Terms.
The AAA Rules are available at{' '}
-
+
www.adr.org
{' '}
or by calling 1-800-778-7879. A party who wishes to start arbitration must submit a
written Demand for Arbitration to AAA and give notice to the other party as specified
in the AAA Rules. The AAA provides a form Demand for Arbitration at{' '}
-
+
www.adr.org
+ Endaoment is a US 501(c)(3) nonprofit providing crypto-native donor-advised funds for
+ science. Funders can give via DAF with the same speed and transparency as native RSC —
+ and receive tax-deductible receipts.
+
+ The funding marketplace links funding agencies with a global pool of researchers. It
+ operates through a simple pipeline designed to promote transparency and
+ reproducibility.
+
+
+
+
+
+
+
+ );
+};
diff --git a/components/about/FundingPipeline.tsx b/components/about/FundingPipeline.tsx
new file mode 100644
index 000000000..8e5cac634
--- /dev/null
+++ b/components/about/FundingPipeline.tsx
@@ -0,0 +1,173 @@
+'use client';
+
+import { useState } from 'react';
+import Image from 'next/image';
+import { Check } from 'lucide-react';
+import { cn } from '@/utils/styles';
+import { MonoLabel } from './MonoLabel';
+import { pipelineSteps, type PipelineStep } from './data/pipelineSteps';
+
+const StepProductImage = ({ step }: { step: PipelineStep }) => (
+
+ ResearchHub is an online platform designed to enhance the speed and transparency of
+ science — built on a simple premise: that science provides the most benefit when
+ it's done quickly, openly, and with a high level of rigor and reproducibility.
+
+
+
+ );
+};
diff --git a/components/about/MonoLabel.tsx b/components/about/MonoLabel.tsx
new file mode 100644
index 000000000..1c40832be
--- /dev/null
+++ b/components/about/MonoLabel.tsx
@@ -0,0 +1,20 @@
+import { ReactNode } from 'react';
+import { cn } from '@/utils/styles';
+
+interface MonoLabelProps {
+ children: ReactNode;
+ className?: string;
+}
+
+/**
+ * Geist Mono helper for inline labels (stat captions, step counters, tags) that
+ * are not section eyebrows. Consolidates inline font-family usage so callers
+ * never reference --font-geist-mono directly.
+ */
+export const MonoLabel = ({ children, className }: MonoLabelProps) => {
+ return (
+
+ {children}
+
+ );
+};
diff --git a/components/about/Problem.tsx b/components/about/Problem.tsx
new file mode 100644
index 000000000..5e8a7b663
--- /dev/null
+++ b/components/about/Problem.tsx
@@ -0,0 +1,102 @@
+import { X } from 'lucide-react';
+import { AboutContainer } from './AboutContainer';
+import { Eyebrow } from './Eyebrow';
+import { MonoLabel } from './MonoLabel';
+
+interface Issue {
+ key: string;
+ title: string;
+ description: string;
+}
+
+const issues: Issue[] = [
+ {
+ key: '01',
+ title: "Peer reviewers aren't paid",
+ description:
+ 'Slow reviews, inconsistent quality — scientists donate their time while publishers profit.',
+ },
+ {
+ key: '02',
+ title: 'Publishing takes years',
+ description:
+ 'Convincing reviewers to work for free gets harder every year. Findings sit in limbo.',
+ },
+ {
+ key: '03',
+ title: 'Paywalls gatekeep research',
+ description:
+ "Taxpayers fund studies they can't read. Science is locked behind journal subscriptions.",
+ },
+ {
+ key: '04',
+ title: 'Grants are broken',
+ description:
+ 'Review processes drag on for months or years — and much of the money goes to indirect costs, not experiments.',
+ },
+];
+
+export const Problem = () => {
+ return (
+
+
+
+
+ § 01 · The problem
+
+ Science works, but barely.
+
+
+ It's no secret — just ask any scientist. The system is antiquated, and science is
+ suffering as a result. There must be a better way.
+
+
+
+
+
+ Traditionally
+
+
+ {issues.map((issue) => (
+
+
+
+ {issue.title}
+
+
+ ))}
+
+
+
+
+ {issues.map((issue) => (
+
+
+ {issue.key}
+
+
+
+ {issue.title}
+
+
+ {issue.description}
+
+
+
+ ))}
+
+
+
+
+
+ );
+};
diff --git a/components/about/ResearchCoin.tsx b/components/about/ResearchCoin.tsx
new file mode 100644
index 000000000..71502e176
--- /dev/null
+++ b/components/about/ResearchCoin.tsx
@@ -0,0 +1,150 @@
+import { ExternalLink } from 'lucide-react';
+import { AboutContainer } from './AboutContainer';
+import { Eyebrow } from './Eyebrow';
+import { MonoLabel } from './MonoLabel';
+import { Icon } from '@/components/ui/icons/Icon';
+import { colors } from '@/app/styles/colors';
+
+interface RscUseCase {
+ number: string;
+ tag: string;
+ title: string;
+ body: string;
+ cta: string;
+ href: string;
+}
+
+const useCases: RscUseCase[] = [
+ {
+ number: '01',
+ tag: 'Endowments',
+ title: 'Earn high-yield Funding Credits',
+ body: 'Endowments let committed funds keep earning, so more of every dollar goes toward science over time.',
+ cta: 'How Endowments work',
+ href: '#',
+ },
+ {
+ number: '02',
+ tag: 'Bounties',
+ title: 'Reward the work that moves research forward',
+ body: 'Researchers use RSC bounties to reward peer review, replication, data, and useful discussion.',
+ cta: 'Browse open bounties',
+ href: '/bounties',
+ },
+ {
+ number: '03',
+ tag: 'Self-funding',
+ title: 'Fund your own research with what you earn',
+ body: 'Earn RSC from community contributions, then put it back into your own proposals and bounties.',
+ cta: 'Start a proposal',
+ href: '/grants',
+ },
+];
+
+export const ResearchCoin = () => {
+ return (
+
+
+
+
+ § 04 · RSC
+
+ The incentive layer for open science.
+
+
+
+
+ ResearchCoin (RSC) is an ERC20
+ token that rewards the work that actually advances science — funding it, reviewing it,
+ replicating it, discussing it.
+
+ );
+};
diff --git a/components/about/Solution.tsx b/components/about/Solution.tsx
new file mode 100644
index 000000000..050f84dc7
--- /dev/null
+++ b/components/about/Solution.tsx
@@ -0,0 +1,101 @@
+import { Check, X } from 'lucide-react';
+import { AboutContainer } from './AboutContainer';
+import { SectionHeader } from './SectionHeader';
+import { MonoLabel } from './MonoLabel';
+
+interface ComparisonRow {
+ old: string;
+ next: string;
+}
+
+const rows: ComparisonRow[] = [
+ {
+ old: 'Peer reviewers work for free',
+ next: 'Peer reviewers are paid for fast, rigorous reviews',
+ },
+ {
+ old: 'Papers locked behind paywalls',
+ next: 'Research articles published openly — no paywalls, no delays',
+ },
+ {
+ old: 'Grants take months or years to review',
+ next: 'Funding opportunities are easy to find and simple to apply to',
+ },
+ {
+ old: 'Most grant money goes to indirect costs',
+ next: 'Capped indirect costs — more money to the actual experiments',
+ },
+];
+
+export const Solution = () => {
+ return (
+
+
+
+ Imagine if we could redesign
+ the entire system{' '}
+ from the ground up.
+ >
+ }
+ lead="These are some of the features you'll find on ResearchHub — the hub for open science, where researchers, funders, and the public meet to share and discuss research."
+ />
+
+
+
+
+ On ResearchHub
+
+
+ {rows.map((row) => (
+
+
+
+ {row.next}
+
+
+ ))}
+
+
+
+
+
+
+ → Today
+
+
+ → On ResearchHub
+
+
+ {rows.map((row, index) => (
+
+
+
+
+ {row.old}
+
+
+
+
+
+ {row.next}
+
+
+
+ ))}
+
+
+
+
+ );
+};
diff --git a/components/about/SubtabsNav.tsx b/components/about/SubtabsNav.tsx
new file mode 100644
index 000000000..865b016ab
--- /dev/null
+++ b/components/about/SubtabsNav.tsx
@@ -0,0 +1,103 @@
+'use client';
+
+import { useEffect, useState } from 'react';
+import Link from 'next/link';
+import { Logo } from '@/components/ui/Logo';
+import { cn } from '@/utils/styles';
+
+export interface SubtabsSection {
+ id: string;
+ label: string;
+}
+
+interface SubtabsNavProps {
+ sections: ReadonlyArray;
+ /**
+ * Approximate height of the sticky bar; used as the scroll-spy probe offset
+ * and the smooth-scroll target offset on click. Defaults to the desktop bar
+ * height; a few pixels of tolerance on mobile is intentional.
+ */
+ offset?: number;
+}
+
+const prefersReducedMotion = () => {
+ if (typeof window === 'undefined') return false;
+ return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
+};
+
+export const SubtabsNav = ({ sections, offset = 56 }: SubtabsNavProps) => {
+ const [active, setActive] = useState(sections[0]?.id ?? '');
+
+ useEffect(() => {
+ if (typeof window === 'undefined' || sections.length === 0) return;
+
+ const ids = sections.map((s) => s.id);
+ const handleScroll = () => {
+ const probeY = window.scrollY + offset + 40;
+ let current = ids[0];
+ for (const id of ids) {
+ const el = document.getElementById(id);
+ if (el && el.offsetTop <= probeY) current = id;
+ }
+ setActive(current);
+ };
+
+ handleScroll();
+ window.addEventListener('scroll', handleScroll, { passive: true });
+ return () => window.removeEventListener('scroll', handleScroll);
+ }, [sections, offset]);
+
+ const handleClick = (event: React.MouseEvent, id: string) => {
+ event.preventDefault();
+ const el = document.getElementById(id);
+ if (!el) return;
+ const top = el.getBoundingClientRect().top + window.scrollY - offset;
+ window.scrollTo({
+ top,
+ behavior: prefersReducedMotion() ? 'auto' : 'smooth',
+ });
+ if (typeof window !== 'undefined' && window.history?.replaceState) {
+ window.history.replaceState(null, '', `#${id}`);
+ }
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+};
diff --git a/components/about/TeamSection.tsx b/components/about/TeamSection.tsx
new file mode 100644
index 000000000..657452971
--- /dev/null
+++ b/components/about/TeamSection.tsx
@@ -0,0 +1,67 @@
+import Image from 'next/image';
+import { AboutContainer } from './AboutContainer';
+import { Eyebrow } from './Eyebrow';
+import { team, SocialKey } from './data/team';
+import { SOCIAL_LABELS, SOCIAL_ORDER, TeamSocialIcon } from './TeamSocialIcon';
+
+const isSocialKey = (key: string): key is SocialKey =>
+ (SOCIAL_ORDER as ReadonlyArray).includes(key);
+
+export const TeamSection = () => {
+ return (
+
+
+ § 06 · Team
+