Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .sonarcloud.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# SonarQube Cloud — Automatic Analysis configuration.
#
# Exclude the vendored, generated Freya runtime bundle from analysis. It is a
# prebuilt third-party artifact (esbuild output; see website/tools/freya-vendor),
# not hand-authored source, so findings on it — e.g. Math.random() used to mint a
# fallback tool-use id — are noise rather than defects in this repo's code.
sonar.exclusions=website/friggframework-api/lib/**
sonar.cpd.exclusions=website/friggframework-api/lib/**
34 changes: 34 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Netlify configuration for the friggframework.org marketing site.
#
# The site lives in the website/ subdirectory of the Frigg monorepo, so we set
# the base directory to "website". Per Netlify's file-based configuration, all
# other paths in this file are resolved relative to that base directory.
[build]
base = "website"
publish = "."
functions = "friggframework-api"

# Ship the vendored Freya bundle and the roadmap catalog JSON alongside the
# functions so the "Ask Freya" assistant can load the runtime and retrieve
# ADR / API data at request time. Paths are relative to the base directory.
[functions]
included_files = ["friggframework-api/lib/**", "roadmap/data/*.json"]

# Proxy the public API host to the deployed serverless functions.
[[redirects]]
from = 'https://api.friggframework.org/*'
to = '/.netlify/functions/:splat'
status = 200

# Feedback host now lives on the roadmap subdomain.
[[redirects]]
from = 'https://feedback.friggframework.org/*'
to = 'https://roadmap.friggframework.org/:splat'
status = 301
force = true

[[redirects]]
from = 'http://feedback.friggframework.org/*'
to = 'http://roadmap.friggframework.org/:splat'
status = 301
force = true
8 changes: 8 additions & 0 deletions website/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Local Netlify state / build output
.netlify

# Function dependencies
node_modules

# Local env
.env
66 changes: 66 additions & 0 deletions website/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# friggframework.org marketing site

The public marketing site for the Frigg Integration Framework
(https://friggframework.org). It is a single, self-contained static page
(inline CSS + vanilla JS, no build step, no framework runtime) with a small set
of Netlify serverless functions for the newsletter / Slack Connect signup flow.

Previously this site lived in the `lefthook--demo-frigg-application` repo. It
now lives here in the Frigg core monorepo so the site can be iterated on
alongside the framework and deployed from the `next` branch via Netlify. The
page was rebuilt from the original Bootstrap/jQuery version into a modern,
dependency-free page with a light/dark/system theme toggle and messaging around
the current framework story (agents building integrations, integrations exposed
as MCP tools, owning your own stack).

## Layout

| Path | What it is |
|------|------------|
| `index.html` | The entire single-page site — inline CSS + JS, no build step |
| `fonts/webfonts/` | Self-hosted woff2 (Bricolage Grotesque, Hanken Grotesk, JetBrains Mono) |
| `assets/img/` | Logo mark + integration icons used in the marquee |
| `friggframework-api/` | Netlify serverless functions (`subscribe`, `submission-created`) |
| `../netlify.toml` | Netlify build config (base = `website`) — lives at the repo root |

## Design notes

- **Theme**: tokens are CSS custom properties on `:root`; `prefers-color-scheme`
sets the default and a header toggle stamps `data-theme="light|dark"` (stored
in `localStorage`) which overrides the media query in both directions.
- **No external requests**: fonts are self-hosted; the only third-party scripts
are the existing Google Analytics + PostHog snippets carried over from the
original site.
- **Motion** (weave canvas, terminal typing, scroll reveals) is disabled under
`prefers-reduced-motion`.
- The signup `<form>` keeps the exact field names (`email`, `slack-invite`,
`update-emails`) and `form-name` that the `submission-created` function reads,
so the Netlify Forms flow is unchanged.

## Netlify configuration

The Netlify build config is at the **repo root** (`../netlify.toml`) with
`base = "website"`, so every path in it is relative to this directory. The
functions directory is `friggframework-api/` and the publish directory is this
folder.

Redirects:

- `api.friggframework.org/*` → the deployed serverless functions
- `feedback.friggframework.org/*` → `roadmap.friggframework.org`

## Local development

From this directory:

```bash
npm install # installs the functions' deps (node-fetch, dotenv)
netlify dev # serves the static site + functions locally
```

The signup functions require these environment variables (set them in the
Netlify UI or a local `.env`, never commit them):

- `SLACK_TOKEN` — bot token used to invite signups to Slack Connect
- `SLACK_CONNECT_CHANNEL_ID` — target Slack channel
- `WEBHOOK_URL` — Zapier webhook the signup email is forwarded to
Binary file added website/assets/img/42matters-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/activecampaign-icon.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/airwallex-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/asana-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/attentive-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/clyde-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/clyde-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/connectwise-icon.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/contentful-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/contentstack-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/crossbeam-icon.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/crossbeam-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/deel-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/fastspring-icon.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/fastspring-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/freshbooks-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions website/assets/img/frigg-favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/frigg-hero-compressed.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/frigg-icon-white.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/frigg-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/frigg-logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions website/assets/img/frigg-logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/front-icon.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/frontify-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/google-calendar-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added website/assets/img/google-drive-icon.png
Binary file added website/assets/img/gorgias-icon.png
Binary file added website/assets/img/helpscout-icon.png
Binary file added website/assets/img/hubspot-icon.jpeg
Binary file added website/assets/img/huggg-icon.png
1 change: 1 addition & 0 deletions website/assets/img/huggg-logo.svg
Binary file added website/assets/img/ironclad-icon.png
1 change: 1 addition & 0 deletions website/assets/img/linear-icon.svg
Binary file added website/assets/img/marketo-icon.jpeg
Binary file added website/assets/img/microsoft-sharepoint-icon.png
Binary file added website/assets/img/microsoft-teams-icon.png
Binary file added website/assets/img/mondaycom-icon.jpeg
Binary file added website/assets/img/netx-icon.png
Binary file added website/assets/img/outreach-icon.jpeg
Binary file added website/assets/img/personio-icon.png
Binary file added website/assets/img/pipedrive-icon.png
1 change: 1 addition & 0 deletions website/assets/img/quickbooks-icon.svg
Binary file added website/assets/img/revio-icon.jpeg
Binary file added website/assets/img/rollworks-icon.jpeg
Binary file added website/assets/img/salesforce-icon.jpeg
Binary file added website/assets/img/salesloft-icon.png
Binary file added website/assets/img/slack-icon.jpeg
33 changes: 33 additions & 0 deletions website/assets/img/slack-icon.svg
Binary file added website/assets/img/stack-icon.jpeg
Binary file added website/assets/img/stripe-icon.png
Binary file added website/assets/img/terminus-icon.png
Binary file added website/assets/img/unbabel-icon.png
Binary file added website/assets/img/yotpo-icon.png
Binary file added website/assets/img/zoho-icon.png
Binary file added website/assets/img/zoom-icon.png
Binary file added website/fonts/webfonts/bricolage-grotesque.woff2
Binary file not shown.
Binary file added website/fonts/webfonts/hanken-grotesk.woff2
Binary file not shown.
Binary file added website/fonts/webfonts/jetbrains-mono.woff2
Binary file not shown.
Loading
Loading