Skip to content

Commit 4de5f57

Browse files
committed
Landing: bring openscience.sh into the monorepo as frontend/landing
Imports the static landing page from the now-archived openscience-landing-page repo at its last stable state (original hero art), so the site deploys from this repo going forward. Vercel's root directory points at frontend/landing; vercel.json (clean URLs, headers, CSP) comes along unchanged.
1 parent 1f8cbee commit 4de5f57

24 files changed

Lines changed: 1341 additions & 0 deletions

frontend/landing/.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
.vercel
2+
.DS_Store
3+
node_modules
4+
*.log
5+
.playwright-mcp

frontend/landing/DESIGN.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Design
2+
3+
## Theme
4+
5+
Warm near-black, terminal-native editorial. A research-paper aesthetic rendered
6+
in a dark room: slab-serif display over a warm charcoal ground, JetBrains Mono
7+
for anything a machine would print, a single coral accent, paper grain and a
8+
faint graticule over everything. The lane is committed identity, not a greenfield
9+
choice — keep it.
10+
11+
## Color (OKLCH-equivalent, authored in HSL)
12+
13+
- `--bg` hsl(30 14% 7%) — warm near-black ground (the whole page)
14+
- `--bg-2` hsl(30 11% 10%), `--bg-3` hsl(30 10% 13%), `--panel` hsl(30 12% 9%)
15+
- `--fg` hsl(42 30% 90%) — warm cream ink (body)
16+
- `--fg-soft` 68%, `--fg-faint` 50%, `--fg-dim` 38% — the muted ramp
17+
- `--border` hsl(32 10% 17%), `--border-2` hsl(34 11% 24%) — hairlines
18+
- `--coral` hsl(14 66% 66%) + `--coral-deep` — the one accent, ≤10% of surface
19+
- `--gold` hsl(36 55% 70%), `--blue`, `--purple`, `--ok` — reserved for the
20+
product-shot mocks (terminal syntax, graph nodes), not for chrome.
21+
- Strategy: **Committed-dark.** The charcoal ground carries the brand; coral is
22+
the single spark. No second accent competes.
23+
24+
## Typography
25+
26+
- Display + body: **CMU Concrete** (the Computer Modern Concrete slab serif from
27+
TeX). Roman + Bold only, no italic — the family has none. Carries every human
28+
sentence: headings and prose.
29+
- Machine text: **JetBrains Mono** (400/500/700) — labels, code, terminal, meta,
30+
nav, chips. Never for prose.
31+
- Scale (tokens in `:root`): `--fs-display` clamp(44–84px) · `--fs-h1` (hero) ·
32+
`--fs-h2` (sections) · `--fs-h3` (card headlines) · `--fs-lede` 17–20px ·
33+
`--fs-prose` 17px. Mono locked to four steps: 14 code / 13 meta / 12 label /
34+
11 micro. Shared prose measure `--measure: 48ch`.
35+
- Rules: serif for all prose; mono only for machine text; one 18px header→lede
36+
gap everywhere; `text-wrap: balance` on headings.
37+
38+
## Components
39+
40+
- **Statement card** (`.card.g-red/.g-purple/.g-blue`): radial grainy gradient,
41+
mono kicker + serif headline + serif body, 10px radius. Paired with a product
42+
shot in a showcase row.
43+
- **Product shot** (`.shot`, `.term-svg`): browser/terminal chrome around a real
44+
mock — the animated-once terminal SVG, the web workspace, the Atlas graph, the
45+
connectors orbit. These are the page's imagery.
46+
- **Quickstart stepper** (`.qs-step`): full-width numbered rows (a real 3-step
47+
sequence, so numbers are earned), roomy command chips.
48+
- **Copy chip** (`.chip`): the `curl | bash` install line, click-to-copy.
49+
- **Footer**: mono link columns + giant clipped `openscience` wordmark, fully
50+
visible above the bottom edge.
51+
52+
## Layout
53+
54+
- Max width 1180px, fluid `clamp()` section padding for rhythm.
55+
- Alternating two-column showcase rows (card ⇄ shot), then lower-density
56+
typographic sections. Vary spacing; avoid uniform box grids (an identical card
57+
grid is the slop tell).
58+
- Full-bleed grainy engraving hero (a Doré-style two-angels woodcut, B&W) with a
59+
veil for headline contrast.
60+
61+
## Motion
62+
63+
Reveal-on-scroll (IntersectionObserver, staggered) over an always-safe default;
64+
the terminal types once then rests. Nothing blinks or loops in the chrome.
65+
`prefers-reduced-motion` shows everything statically. Ease-out only.

frontend/landing/PRODUCT.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Product
2+
3+
## Register
4+
5+
brand
6+
7+
## Users
8+
9+
Working scientists, ML engineers, and computational researchers evaluating an
10+
open-source research agent. They arrive skeptical of hype, fluent in the
11+
terminal, and looking for one thing: is this real, and can I read the source?
12+
The page has to earn a `curl | bash` or a GitHub star in one scroll.
13+
14+
## Product Purpose
15+
16+
The landing page for **OpenScience** (openscience.sh) — the open-source release
17+
of the SynSci CLI (`synsci`). It runs the whole research loop (read, hypothesize,
18+
implement, run, record) in the browser or the terminal, wires into ~30 scientific
19+
databases, and ships 17 domains of built-in skills. Free, AGPL-3.0, no account.
20+
Success = installs and GitHub stars from researchers who trust it because they
21+
can see exactly what it does.
22+
23+
## Brand Personality
24+
25+
Open, rigorous, grounded. The voice of a careful scientist, not a startup pitch.
26+
It shows real commands, real citations, real reproducible results instead of
27+
claiming capability. Warm paper-and-ink, not cold SaaS blue. Confident without
28+
shouting; every claim is something you could go verify in the source.
29+
30+
## Anti-references
31+
32+
- SaaS-cream / purple-gradient-on-white landing pages (the 2026 AI default).
33+
- "AI scientist" hype framing, "supercharge/seamless/transform" copy, badge-pill
34+
rows ("Open source · No account · Fast").
35+
- Green "phosphor" terminal costume; widget-bento dashboards with blinking lights.
36+
- Framing as "an alternative to X"; naming specific model vendors.
37+
- Anything that blinks or pulses. The user finds it enraging.
38+
39+
## Design Principles
40+
41+
1. **Show the real work.** Real terminal sessions, real database names, real
42+
citations and ΔΔG values. Never a mock that couldn't actually run.
43+
2. **Open by default.** The pitch is legibility: read it, fork it, write your own.
44+
The design should feel as inspectable as the source.
45+
3. **Calm confidence.** No hype, no urgency theater. Restraint reads as trust.
46+
4. **Warm-technical, not cold-SaaS.** Paper/ink warmth carried by the serif and
47+
the coral accent; the terminal supplies the technical register.
48+
5. **Fewer, better surfaces.** Boxes are a last resort. Let typography, imagery,
49+
and whitespace carry the page; reserve framed panels for real product shots.
50+
51+
## Accessibility & Inclusion
52+
53+
WCAG AA contrast on all body copy. `prefers-reduced-motion` fully honored (reveals
54+
and the terminal collapse to static). Nothing blinks or auto-plays audio. Focus
55+
states visible. Semantic landmarks and aria-labels on icon-only controls.
2.79 KB
Loading

frontend/landing/css/fonts.css

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/* CMU Concrete — the slab serif from the Computer Modern (TeX) family.
2+
Roman + Bold only, no italic. Self-hosted, no external requests. */
3+
@font-face {
4+
font-family: "CMU Concrete";
5+
font-style: normal;
6+
font-weight: 400;
7+
font-display: swap;
8+
src: url("/fonts/cmu-concrete-roman.woff") format("woff");
9+
}
10+
@font-face {
11+
font-family: "CMU Concrete";
12+
font-style: normal;
13+
font-weight: 700;
14+
font-display: swap;
15+
src: url("/fonts/cmu-concrete-bold.woff") format("woff");
16+
}
17+
18+
/* JetBrains Mono — the terminal, command blocks, labels, and data chips. */
19+
@font-face {
20+
font-family: "JetBrains Mono";
21+
font-style: normal;
22+
font-weight: 400;
23+
font-display: swap;
24+
src: url("/fonts/jetbrains-mono-400.woff2") format("woff2");
25+
}
26+
@font-face {
27+
font-family: "JetBrains Mono";
28+
font-style: normal;
29+
font-weight: 500;
30+
font-display: swap;
31+
src: url("/fonts/jetbrains-mono-500.woff2") format("woff2");
32+
}
33+
@font-face {
34+
font-family: "JetBrains Mono";
35+
font-style: normal;
36+
font-weight: 700;
37+
font-display: swap;
38+
src: url("/fonts/jetbrains-mono-700.woff2") format("woff2");
39+
}

0 commit comments

Comments
 (0)