feat(site): 🛬 PCBJam landing page — waitlist, sections, Tailwind
Replace the placeholder homepage with the PCBJam waitlist conversion page
(13 sections from the copy spec), shared chrome, and a real email-capture
backend, keeping the site zero-runtime-JS / zero-web-font.
- Tailwind v4 via @tailwindcss/postcss (the Vite plugin breaks on Astro 6
rolldown-vite); Preflight skipped; brand tokens in :root + @theme inline.
- Waitlist: /api/waitlist serverless route (prerender=false) + Resend, with
dual JSON/303 responses; WaitlistForm progressive enhancement bound on
astro:page-load (survives ClientRouter swaps); honeypot + validation.
- New components (Icon, Placeholder, DemoVideo, SectionBand, Chip, EECredit,
StatBar, Pillar, Step, CheckItem, WaitlistForm) + 13 section components.
- Redesigned Header (sticky, mobile menu, CTA) + 4-col Footer (KiCad
attribution); BaseLayout gains full-bleed mode + OG/canonical meta.
- Assets scaffolded with marked placeholders; EE/generic/client SVGs copied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 14:59:13 +02:00
|
|
|
|
---
|
|
|
|
|
|
import SectionBand from '../components/SectionBand.astro';
|
|
|
|
|
|
import Chip from '../components/Chip.astro';
|
|
|
|
|
|
import Icon from '../components/Icon.astro';
|
|
|
|
|
|
|
|
|
|
|
|
const proof = [
|
|
|
|
|
|
'WebAssembly',
|
|
|
|
|
|
'Real-time collaboration (Yjs/CRDT)',
|
|
|
|
|
|
'Rich-text & ProseMirror editors',
|
|
|
|
|
|
'AI / LLM features',
|
|
|
|
|
|
'Fintech & Stripe',
|
|
|
|
|
|
];
|
|
|
|
|
|
const clients = [
|
|
|
|
|
|
{ name: 'Skiff', file: 'clients/skiff.svg' },
|
|
|
|
|
|
{ name: 'Memrise', file: 'clients/memrise.svg' },
|
|
|
|
|
|
{ name: 'AXDRAFT', file: 'clients/axdraft.svg' },
|
|
|
|
|
|
{ name: 'Lex', file: 'clients/lex.svg' },
|
|
|
|
|
|
{ name: 'Filtered', file: 'clients/filtered.svg' },
|
|
|
|
|
|
{ name: 'SwaraLink', file: 'clients/swaralink.svg' },
|
|
|
|
|
|
];
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
<SectionBand id="built-by" tone="soft" labelledby="ee-h2">
|
|
|
|
|
|
<div class="section-head">
|
|
|
|
|
|
<span class="eyebrow">Who’s behind PCBJam</span>
|
|
|
|
|
|
<h2 id="ee-h2">We’re Emergence Engineering. We build hard things in the browser.</h2>
|
|
|
|
|
|
<p class="lead">
|
|
|
|
|
|
PCBJam exists because we got obsessed with a genuinely hard problem: running a full,
|
|
|
|
|
|
native C++ EDA suite — and real-time multiplayer — entirely in a browser, on WebAssembly.
|
|
|
|
|
|
That’s the kind of work we do for a living. Emergence Engineering is a full-stack software
|
|
|
|
|
|
studio (🇪🇺, remote-first) that builds WASM ports, real-time collaborative editors, AI
|
|
|
|
|
|
features, and the payments and infrastructure behind them — for startups and scale-ups who
|
|
|
|
|
|
need the hard parts done right.
|
|
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<div class="cluster proof">
|
|
|
|
|
|
{proof.map((p) => <Chip label={p} />)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<p class="trusted muted">Trusted by teams at</p>
|
|
|
|
|
|
<div class="clients">
|
|
|
|
|
|
{clients.map((c) => <Icon name={c.file} mode="img" size="1.5rem" alt={c.name} />)}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<blockquote class="quote">
|
feat(site): 🫙 PCBJam landing revisions — branding, accuracy, positioning graphic
Founder review pass on the landing page, plus commit the landing-page
research/spec docs under features/lp.
Branding & assets:
- New PCBJam mark: convert the jam-jar image to favicon.svg (trimmed, rounded
tile) and use it in the browser tab, header, and footer.
- Footer "Built by": flower mark + "Emergence Engineering" in white Oswald (the
blog's title font, self-hosted via @fontsource) so it's legible on dark.
- Produce the positioning quadrant graphic (public/graphics) and drop the placeholder.
Copy / accuracy:
- Remove header GitHub link; point "Built by EE" + footer "About" to
emergence-engineering.com; Built-by CTA -> mailto:contact@emergence-engineering.com.
- Replace the wrong testimonial with Greg Detre's real quote from EE's site.
- Drop blog icons from Multiplayer/Pillars/How-it-works; add "Coming soon" to
live-cursors & pin-comment; drop the hard-coded Yjs mention.
- Rework monetization to free+local / paid cloud-sync; remove "no metered AI",
"no per-seat toll", and the Flux price claim; soften the AI section.
- Reframe waitlist copy (incl. confirmation email) to newsletter + early access.
Fixes:
- Offset only #waitlist for the sticky header (scroll-margin-top); section
anchors keep their original behavior.
Docs:
- Commit features/lp (copy spec, brand guide, competitive research) via force-add
over the /features/ gitignore.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 17:14:19 +02:00
|
|
|
|
“They are incredibly smart, you can trust them, and they’re great to work with. I cannot
|
|
|
|
|
|
recommend them highly enough.”
|
|
|
|
|
|
<cite>— Greg Detre, Chief Data Scientist & CTO</cite>
|
feat(site): 🛬 PCBJam landing page — waitlist, sections, Tailwind
Replace the placeholder homepage with the PCBJam waitlist conversion page
(13 sections from the copy spec), shared chrome, and a real email-capture
backend, keeping the site zero-runtime-JS / zero-web-font.
- Tailwind v4 via @tailwindcss/postcss (the Vite plugin breaks on Astro 6
rolldown-vite); Preflight skipped; brand tokens in :root + @theme inline.
- Waitlist: /api/waitlist serverless route (prerender=false) + Resend, with
dual JSON/303 responses; WaitlistForm progressive enhancement bound on
astro:page-load (survives ClientRouter swaps); honeypot + validation.
- New components (Icon, Placeholder, DemoVideo, SectionBand, Chip, EECredit,
StatBar, Pillar, Step, CheckItem, WaitlistForm) + 13 section components.
- Redesigned Header (sticky, mobile menu, CTA) + 4-col Footer (KiCad
attribution); BaseLayout gains full-bleed mode + OG/canonical meta.
- Assets scaffolded with marked placeholders; EE/generic/client SVGs copied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 14:59:13 +02:00
|
|
|
|
</blockquote>
|
|
|
|
|
|
|
feat(site): 🫙 PCBJam landing revisions — branding, accuracy, positioning graphic
Founder review pass on the landing page, plus commit the landing-page
research/spec docs under features/lp.
Branding & assets:
- New PCBJam mark: convert the jam-jar image to favicon.svg (trimmed, rounded
tile) and use it in the browser tab, header, and footer.
- Footer "Built by": flower mark + "Emergence Engineering" in white Oswald (the
blog's title font, self-hosted via @fontsource) so it's legible on dark.
- Produce the positioning quadrant graphic (public/graphics) and drop the placeholder.
Copy / accuracy:
- Remove header GitHub link; point "Built by EE" + footer "About" to
emergence-engineering.com; Built-by CTA -> mailto:contact@emergence-engineering.com.
- Replace the wrong testimonial with Greg Detre's real quote from EE's site.
- Drop blog icons from Multiplayer/Pillars/How-it-works; add "Coming soon" to
live-cursors & pin-comment; drop the hard-coded Yjs mention.
- Rework monetization to free+local / paid cloud-sync; remove "no metered AI",
"no per-seat toll", and the Flux price claim; soften the AI section.
- Reframe waitlist copy (incl. confirmation email) to newsletter + early access.
Fixes:
- Offset only #waitlist for the sticky header (scroll-margin-top); section
anchors keep their original behavior.
Docs:
- Commit features/lp (copy spec, brand guide, competitive research) via force-add
over the /features/ gitignore.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 17:14:19 +02:00
|
|
|
|
<a class="btn btn-ghost" href="mailto:contact@emergence-engineering.com">
|
feat(site): 🛬 PCBJam landing page — waitlist, sections, Tailwind
Replace the placeholder homepage with the PCBJam waitlist conversion page
(13 sections from the copy spec), shared chrome, and a real email-capture
backend, keeping the site zero-runtime-JS / zero-web-font.
- Tailwind v4 via @tailwindcss/postcss (the Vite plugin breaks on Astro 6
rolldown-vite); Preflight skipped; brand tokens in :root + @theme inline.
- Waitlist: /api/waitlist serverless route (prerender=false) + Resend, with
dual JSON/303 responses; WaitlistForm progressive enhancement bound on
astro:page-load (survives ClientRouter swaps); honeypot + validation.
- New components (Icon, Placeholder, DemoVideo, SectionBand, Chip, EECredit,
StatBar, Pillar, Step, CheckItem, WaitlistForm) + 13 section components.
- Redesigned Header (sticky, mobile menu, CTA) + 4-col Footer (KiCad
attribution); BaseLayout gains full-bleed mode + OG/canonical meta.
- Assets scaffolded with marked placeholders; EE/generic/client SVGs copied.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 14:59:13 +02:00
|
|
|
|
Need something hard built? → Talk to the team
|
|
|
|
|
|
</a>
|
|
|
|
|
|
</SectionBand>
|
|
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
|
.proof {
|
|
|
|
|
|
margin-bottom: 2rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
.trusted {
|
|
|
|
|
|
font-size: 0.85rem;
|
|
|
|
|
|
text-transform: uppercase;
|
|
|
|
|
|
letter-spacing: 0.06em;
|
|
|
|
|
|
margin: 0 0 0.75rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
.clients {
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
gap: 1.5rem 2rem;
|
|
|
|
|
|
opacity: 0.85;
|
|
|
|
|
|
margin-bottom: 2rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
.quote {
|
|
|
|
|
|
margin: 0 0 2rem;
|
|
|
|
|
|
padding-left: 1rem;
|
|
|
|
|
|
border-left: 3px solid var(--accent);
|
|
|
|
|
|
font-size: 1.05rem;
|
|
|
|
|
|
max-width: 38rem;
|
|
|
|
|
|
}
|
|
|
|
|
|
.quote cite {
|
|
|
|
|
|
display: block;
|
|
|
|
|
|
margin-top: 0.5rem;
|
|
|
|
|
|
font-style: normal;
|
|
|
|
|
|
font-size: 0.9rem;
|
|
|
|
|
|
color: var(--fg-muted);
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|