Production website for fosterrx.com
The decision intelligence layer for clinical trial execution.
This repository contains the complete source for the Foster Rx marketing and company website. It is a single-file static site deployed via Firebase Hosting to a custom domain. There are no build tools, frameworks, or dependencies — the entire site ships as one self-contained HTML file.
This site auto-deploys to Firebase Hosting (fosterrx-prod project)
on push to main via the GitHub Action in
.github/workflows/firebase-deploy.yml.
The custom domain fosterrx.com is bound to the Firebase site in the
Firebase console; DNS records (A/AAAA) point at Firebase Hosting IPs.
If the GitHub Action fails or you need to deploy locally:
firebase deploy --only hosting --project fosterrx-prodThis requires the Firebase CLI installed and authenticated against
the fosterrx-prod project.
.well-known/angis-signing-key-v1.pub and
.well-known/angis-signing-key-v1.fingerprint are the published
ANGIS ed25519 public key and its SHA-256 fingerprint. Firebase
Hosting is configured (firebase.json → headers) to serve these
with Content-Type: application/x-pem-file,
Cache-Control: public, max-age=3600, and
Access-Control-Allow-Origin: * so any client can fetch and verify
ANGIS intelligence report certificates.
foster-rx-domain/
├── index.html ← Production site (deploy from repo root)
├── og-image.html ← Source file for generating the OG/social preview image
├── firebase.json ← Firebase Hosting config (site, ignore rules, headers)
├── .firebaserc ← Firebase project binding (fosterrx-prod)
├── README.md ← This file
├── LICENSE ← Proprietary license
├── .github/
│ └── workflows/
│ └── firebase-deploy.yml ← Auto-deploy on push to main (WIF-based)
├── .well-known/
│ ├── angis-signing-key-v1.pub ← ANGIS ed25519 public key (PEM)
│ └── angis-signing-key-v1.fingerprint ← SHA-256 of the DER pubkey
└── assets/
├── logo.png ← Foster Rx brand logo (nav + footer)
├── gabrielle-foster.jpg← Founder photo (team section)
├── team-logos.png ← Composite affiliation strip (MIT, Hopkins, Takeda, etc.)
└── og-image.png ← Social preview image for LinkedIn/Slack/iMessage (1200×630px)
Note:
og-image.pngmust be generated manually fromog-image.html. See Generating the OG Image below.
The site is a single-file static HTML application. All CSS and JavaScript are inlined in index.html. There is no build step, no bundler, no server-side code.
Loaded from Google Fonts at runtime:
- Cormorant Garamond — headings and serif display text
- DM Mono — labels, badges, monospaced UI elements
- DM Sans — body copy
| ID | Description |
|---|---|
#hero |
Full-viewport headline with CTA buttons |
#problem |
Stat cards (28% / 90% / $2.1M) + root cause analysis |
#solution |
Four feature cards explaining the platform |
#offerings |
Three offering cards (Core Platform / Data / Discovery) |
#traction |
Patent, KOL count, orphan assets chips |
#team |
Founder card with photo, bio, affil logos, badges |
#cta |
Full-width call to action |
footer |
4-column grid: brand, platform, company, contact |
All mailto: links are assembled at runtime via JavaScript to avoid exposure to static scrapers. Do not hardcode email addresses directly in HTML attributes.
var u = 'info', d = 'fosterrx', t = 'com';
var email = u + '@' + d + '.' + t;assets/logo.png
Brand logo — used in the nav bar and footer. Should be a transparent PNG, ideally 2× resolution. Displays at 36px height in nav, 30px in footer.
assets/gabrielle-foster.jpg
Founder portrait. Displays at 120×120px circular crop. Falls back to a "GF" monogram placeholder if missing.
assets/team-logos.png
Composite strip of affiliation logos. Rendered with mix-blend-mode: screen against the dark card background.
assets/og-image.png
Social preview image for LinkedIn, Slack, iMessage, WhatsApp, and X. Must be exactly 1200×630px.
og-image.html is a standalone 1200×630px HTML file that renders the social preview card.
To export as PNG:
- Open
og-image.htmlin Chrome - Set browser zoom to 100% (critical for correct dimensions)
- Open DevTools →
Cmd+Shift+P→ type "Capture full size screenshot" - Save as
og-image.png - Move to
assets/og-image.pngin this repo
index.html includes a full meta tag block in <head>:
<title>— browser tab and search result title<meta name="description">— search snippet<meta name="keywords">— secondary keyword signal- OpenGraph (
og:*) — LinkedIn, Slack, iMessage previews - Twitter Card (
twitter:*) — X link previews <link rel="canonical">— prevents duplicate indexing
Do not change the
og:imagepath without also updatingassets/og-image.png.
Google Analytics 4 (GA4) can be added by inserting the following snippet into <head> in index.html, replacing G-XXXXXXXXXX with the actual Measurement ID:
<!-- Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>The Measurement ID is found in Google Analytics → Admin → Data Streams → Web → your stream.
| Resource | URL |
|---|---|
| Live site | fosterrx.com |
| Book a meeting | Outlook Bookings |
| Company LinkedIn | linkedin.com/company/foster-rx-llc |
| Patent | No. 19/459,855 (pending) |
| Contact | info@fosterrx.com |
This is a single-person repository. All edits go directly to main and deploy immediately via GitHub Pages.
When editing index.html:
- Test locally by opening in a browser before pushing
- All CSS is in the
<style>block in<head>— color tokens are in:root - All JavaScript is in
<script>blocks at the bottom of<body> - Do not introduce external JS dependencies without reviewing load-order implications
- Preserve the email obfuscation pattern — do not hardcode
info@fosterrx.comin HTML
--ink: #0e1c18 /* page background */
--deep: #132119 /* section background */
--surface: #1a2e2a /* card background */
--teal: #4a8a7d /* primary accent */
--teal-lt: #6aaa9d /* lighter accent, hover states */
--cream: #f0ebe0 /* primary text */
--sand: #d8d1c2 /* secondary text */Proprietary. All rights reserved. © Foster Rx LLC.
