Skip to content

site: agentflare.dev landing page + Cloudflare Workers deploy - #203

Merged
getappz merged 5 commits into
masterfrom
site/landing-page
Jul 16, 2026
Merged

site: agentflare.dev landing page + Cloudflare Workers deploy#203
getappz merged 5 commits into
masterfrom
site/landing-page

Conversation

@getappz

@getappz getappz commented Jul 15, 2026

Copy link
Copy Markdown
Owner

The public landing site for agentflare.dev, live on Cloudflare Workers.

What's here

  • site/public/index.html — self-contained landing page: inline CSS/JS, SVG favicon, system-font terminal aesthetic, light + dark themes, animated hero terminal streaming the real "34.2M tokens saved" readout, copy-to-clipboard install commands, the honest attributed-benchmark table (mirrors the repo README's "no blended totals" framing).
  • site/src/worker.ts — serves public/ from the ASSETS binding; proxies /install.sh + /install.ps1 to the raw installer so curl -fsSL https://agentflare.dev/install.sh | sh resolves on the domain.
  • site/wrangler.jsonc — assets binding + agentflare.dev / www.agentflare.dev custom-domain routes. Same pattern as the sarvo apps/web worker.
  • site/public/404.html, site/package.json, site/README.md (deploy docs).

No build step — the page is hand-authored and shipped as-is.

Deploy

cd site && npm install && npm run deploy

Already deployed: https://agentflare.dev (Worker agentflare-web).

Notes

  • Content is truthful and matches the repo: benchmark numbers, install commands, v1.3.1, MIT/beta.
  • Numbers should be kept in sync with the root README.md metrics table.

Summary by CodeRabbit

  • New Features
    • Launched an agentflare landing site for Cloudflare Workers with responsive design, dark/light theming, animated terminal hero, reveal animations, copy-to-clipboard, and a tabbed install flow.
    • Added a custom 404 page and installer endpoints (/install.sh, /install.ps1) with edge caching and graceful fallback instructions.
    • Added social OG image assets generation workflow and bundled self-hosted font files.
  • Documentation
    • Added a complete deployment/setup README (local/dev/deploy, routing, and asset handling).
  • Chores
    • Added site scaffolding (Wrangler config, npm scripts, gitignore) plus OG render script and font license.

Self-contained landing page (inline CSS/JS, system-font terminal aesthetic,
light+dark) served from Cloudflare Workers static assets, matching the sarvo
apps/web pattern. Worker proxies /install.sh and /install.ps1 to the raw
installer so the hero command resolves on the domain.
@coderabbitai

coderabbitai Bot commented Jul 15, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds an agentflare landing site deployed through Cloudflare Workers, with static assets, custom domains, installer proxy routes, interactive marketing content, a 404 page, and deployment documentation.

Changes

Landing site

Layer / File(s) Summary
Site package and asset setup
site/package.json, site/wrangler.jsonc, site/.gitignore, site/public/fonts/LICENSE.txt
Adds Wrangler scripts, static asset and custom-domain configuration, local artifact exclusions, and the bundled font license.
Landing page and error page
site/public/index.html, site/public/404.html, site/scripts/render-og.mjs
Adds the responsive marketing page, theme switching, copy controls, install tabs, reveal animations, terminal typing, styled 404 response, and social-image rendering support.
Worker routing and deployment guidance
site/src/worker.ts, site/README.md
Routes installer requests through a cached GitHub raw proxy, serves other requests from ASSETS, and documents setup, deployment, routing, and editing.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant CloudflareWorker
  participant ASSETS
  participant GitHubRaw
  Browser->>CloudflareWorker: Request site path
  CloudflareWorker->>ASSETS: Fetch non-installer asset
  ASSETS-->>CloudflareWorker: Return site asset or 404 page
  CloudflareWorker->>GitHubRaw: Fetch installer script
  GitHubRaw-->>CloudflareWorker: Return installer response
  CloudflareWorker-->>Browser: Return site or installer response
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately summarizes the landing-page and Cloudflare Workers deployment changes.
Description check ✅ Passed The description covers the PR summary and deployment notes, but it omits the template's test plan and reviewer-notes sections.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch site/landing-page

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@site/README.md`:
- Around line 7-16: Add the text language identifier to the fenced directory
tree block in the README by changing its opening fence from an unlabeled fence
to a text-labeled fence, preserving the tree content and closing fence.
- Around line 38-41: Update the installer copy control in site/public/index.html
so its data-copy value uses the proxied https://agentflare.dev/install.sh URL
instead of the raw GitHub URL, while preserving the displayed command and
existing copy behavior.

In `@site/src/worker.ts`:
- Around line 29-38: Wrap the fetch(source) call in the worker’s upstream
installer flow with try/catch so rejected DNS, TLS, or connection requests also
return the existing documented 502 fallback response. Preserve the current
!upstream.ok handling and reuse the same response content and headers for caught
fetch failures.
- Around line 15-20: Update the RAW constant used by INSTALL_SCRIPTS to
reference an immutable commit SHA or versioned integrity-checked artifact
instead of the mutable master branch. Keep both installer mappings using this
pinned source, and update the revision deliberately whenever installer contents
change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 97263c19-3334-4ac1-a4ff-229a9d1a8637

📥 Commits

Reviewing files that changed from the base of the PR and between 3d93063 and a3a099d.

📒 Files selected for processing (6)
  • site/README.md
  • site/package.json
  • site/public/404.html
  • site/public/index.html
  • site/src/worker.ts
  • site/wrangler.jsonc

Comment thread site/README.md Outdated
Comment thread site/README.md
Comment thread site/src/worker.ts Outdated
Comment thread site/src/worker.ts Outdated
getappz added 3 commits July 15, 2026 23:36
Adds Commit Mono (OFL-1.1) under public/fonts/ — weights 400 + 700, @font-face
+ preload, served same-origin by the Worker so the page still makes no
third-party font request. Distinctive terminal-native display face over the
prior system-mono stack. License included.
- worker.ts: pin installer to immutable release tag (v1.3.1) instead of mutable
  master; wrap upstream fetch in try/catch so DNS/TLS failures return the 502
  fallback instead of a platform error.
- index.html: hero Copy button now copies the agentflare.dev/install.sh proxy
  URL (matches the displayed command); add og:image/twitter:image meta.
- og.png: 1200x630 branded social card (og.svg source + scripts/render-og.mjs).
- README: label the tree fence (MD040).

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@site/scripts/render-og.mjs`:
- Around line 3-5: Declare `@resvg/resvg-js` as a pinned devDependency in
site/package.json so the render-og.mjs bare ESM import resolves from a normal
site installation while preserving the documented npx execution path.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 759d3be5-de40-46f0-bbcb-384d2e9b14af

📥 Commits

Reviewing files that changed from the base of the PR and between e0d7009 and df0092a.

⛔ Files ignored due to path filters (2)
  • site/og.svg is excluded by !**/*.svg
  • site/public/og.png is excluded by !**/*.png
📒 Files selected for processing (4)
  • site/README.md
  • site/public/index.html
  • site/scripts/render-og.mjs
  • site/src/worker.ts
🚧 Files skipped from review as they are similar to previous changes (3)
  • site/src/worker.ts
  • site/README.md
  • site/public/index.html

Comment on lines +3 to +5
// Run: cd site && npx --yes --package=@resvg/resvg-js node scripts/render-og.mjs
import { readFileSync, writeFileSync } from "node:fs";
import { Resvg } from "@resvg/resvg-js";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
python - <<'PY'
import json
from pathlib import Path

p = json.loads(Path("site/package.json").read_text())
deps = {**p.get("dependencies", {}), **p.get("devDependencies", {})}
assert "`@resvg/resvg-js`" in deps, "`@resvg/resvg-js` is not declared in site/package.json"
print("dependency declared:", deps["`@resvg/resvg-js`"])
PY

Repository: getappz/agentflare

Length of output: 298


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- site/package.json ---'
python3 - <<'PY'
from pathlib import Path
import json
p = json.loads(Path("site/package.json").read_text())
for section in ("dependencies", "devDependencies", "peerDependencies", "optionalDependencies"):
    deps = p.get(section, {})
    if "`@resvg/resvg-js`" in deps:
        print(section, deps["`@resvg/resvg-js`"])
PY

echo '--- outline render-og.mjs ---'
ast-grep outline site/scripts/render-og.mjs --view expanded || true

echo '--- relevant lines ---'
cat -n site/scripts/render-og.mjs | sed -n '1,220p'

Repository: getappz/agentflare

Length of output: 1267


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '--- search `@resvg/resvg-js` declarations ---'
rg -n '"`@resvg/resvg-js`"|`@resvg/resvg-js`' site . || true

echo '--- site/og.svg header ---'
cat -n site/og.svg | sed -n '1,40p'

echo '--- site/package.json top ---'
cat -n site/package.json | sed -n '1,220p'

Repository: getappz/agentflare

Length of output: 3910


🌐 Web query:

npm exec --package bare import module resolution NODE_PATH temporary node_modules package availability

💡 Result:

The npm exec command (and its npx alias) manages package resolution and execution by modifying the PATH environment variable of the subshell rather than relying on NODE_PATH [1][2]. When you use the --package option, npm ensures the specified packages are available in the executed process [1][3]. If these packages are not already present in your local project's dependencies, npm downloads them to a temporary location within the npm cache [1]. This temporary directory is then added to the PATH environment variable of the executed command, making the package binaries accessible [1][2]. Locally installed binaries from your project's node_modules are also automatically included in the PATH of the executed process [2][3]. Regarding module resolution and NODE_PATH: 1. Module resolution: npm exec does not inherently use or respect the NODE_PATH environment variable for its own internal package resolution [4]. 2. Execution environment: While you may set environment variables like NODE_OPTIONS to influence the behavior of the Node.js process being executed (e.g., passing flags), the primary mechanism for package availability in npm exec is the manipulation of the PATH [1][2]. 3. NODE_PATH status: Usage of NODE_PATH is widely discouraged in the Node.js ecosystem, as it is largely deprecated, does not support ESM (ECMAScript Modules), and can lead to fragile environment-dependent behavior [4]. In summary, for npm exec, you should rely on --package to make necessary packages available [1]. If you need to configure Node.js runtime behavior, use NODE_OPTIONS instead of trying to manipulate module resolution via NODE_PATH [2].

Citations:


Declare @resvg/resvg-js in site/package.json. The script imports it as a bare ESM package, but it isn’t listed in the site manifest, so the documented npx --package=... node scripts/render-og.mjs path can still fail with ERR_MODULE_NOT_FOUND. A pinned devDependency keeps the generator runnable from a normal install.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@site/scripts/render-og.mjs` around lines 3 - 5, Declare `@resvg/resvg-js` as a
pinned devDependency in site/package.json so the render-og.mjs bare ESM import
resolves from a normal site installation while preserving the documented npx
execution path.

@getappz
getappz merged commit bd67d87 into master Jul 16, 2026
14 checks passed
@getappz
getappz deleted the site/landing-page branch July 16, 2026 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant