From c9fff9873e4f5c619fc639c27d9e10841c83038b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ahlert?=
Date: Thu, 19 Mar 2026 03:26:42 -0300
Subject: [PATCH 1/2] fix: deploy .htaccess and add HTML redirect fallbacks for
old doc paths
The deploy step used `cp -r ... /*` which skips dotfiles, so .htaccess
was never copied to the asf-site branch. Add `shopt -s dotglob` to fix.
Also generate static HTML redirect pages by scanning the Sphinx build
output at build time, as fallback in case ASF infra does not process
.htaccess. See PR #679 for context.
---
.github/workflows/build-site.yml | 37 ++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/.github/workflows/build-site.yml b/.github/workflows/build-site.yml
index af47db0e..85816a04 100644
--- a/.github/workflows/build-site.yml
+++ b/.github/workflows/build-site.yml
@@ -99,6 +99,42 @@ jobs:
echo "Docs:"
ls -la /tmp/site-output/docs/ | head -20
+ # TODO: Remove this step once we confirm ASF infra honors .htaccess (AllowOverride).
+ # This was added as a fallback for PR #679 (landing page migration) because:
+ # The .htaccess was not being deployed (dotglob fix above solves this) and
+ # ASF infra may not honor .htaccess for the publish serving mode in .asf.yaml.
+ # Once confirmed, the .htaccess 301s are sufficient and these static HTML
+ # redirects can be removed to avoid bloating the asf-site branch.
+ - name: Generate HTML redirect fallbacks
+ run: |
+ # Scan Sphinx build output and generate static HTML redirects for every page.
+ # These act as fallback if the server does not process .htaccess.
+ BASE_URL="https://burr.apache.org"
+ OUTPUT="/tmp/site-output"
+ DOCS_BUILD="docs/_build/html"
+ COUNT=0
+
+ # Find every index.html in the Sphinx output (dirhtml builder creates dir/index.html per page)
+ while IFS= read -r file; do
+ # Get path relative to build root, e.g. "getting_started/install/index.html"
+ rel="${file#$DOCS_BUILD/}"
+ dir="$(dirname "$rel")"
+
+ # Skip the docs root (landing page lives there) and paths already in site output
+ if [ "$dir" = "." ] || [ -e "$OUTPUT/$dir/index.html" ]; then
+ continue
+ fi
+
+ target="$BASE_URL/docs/$dir/"
+ mkdir -p "$OUTPUT/$dir"
+ printf '\n\n\n\n\nRedirecting to %s...\n' \
+ "$target" "$target" "$target" "$target" "$target" \
+ > "$OUTPUT/$dir/index.html"
+ COUNT=$((COUNT + 1))
+ done < <(find "$DOCS_BUILD" -name "index.html" -type f)
+
+ echo "Generated $COUNT HTML redirect fallbacks."
+
- name: Deploy to asf-site / asf-staging
if: github.event_name != 'pull_request'
run: |
@@ -126,6 +162,7 @@ jobs:
rm -rf /tmp/gh-pages/content
mkdir -p /tmp/gh-pages/content
+ shopt -s dotglob
cp -r /tmp/site-output/* /tmp/gh-pages/content/
cd /tmp/gh-pages
From f313d13d2e9b357562de58681e805756c24ad7d6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Ahlert?=
Date: Mon, 23 Mar 2026 02:33:03 -0300
Subject: [PATCH 2/2] website: replace placeholder testimonials with real
quotes
Swap placeholder testimonials with real user quotes from the
original Burr docs. Add company logos to the trusted-by section.
Remove inactive Twitter/X links from Community and Footer.
---
website/public/logos/taskhuman.svg | 3 ++
website/src/components/Community.tsx | 14 ++----
website/src/components/Footer.tsx | 3 +-
website/src/components/Testimonials.tsx | 36 +++++++++-----
website/src/lib/constants.ts | 63 +++++++++++++++----------
5 files changed, 70 insertions(+), 49 deletions(-)
create mode 100644 website/public/logos/taskhuman.svg
diff --git a/website/public/logos/taskhuman.svg b/website/public/logos/taskhuman.svg
new file mode 100644
index 00000000..4831a2ed
--- /dev/null
+++ b/website/public/logos/taskhuman.svg
@@ -0,0 +1,3 @@
+
diff --git a/website/src/components/Community.tsx b/website/src/components/Community.tsx
index 90daf7bf..b2d0d716 100644
--- a/website/src/components/Community.tsx
+++ b/website/src/components/Community.tsx
@@ -1,7 +1,7 @@
"use client";
-import { GITHUB_REPO, DISCORD_URL, TWITTER_URL } from "@/lib/constants";
-import { Github, MessageCircle, Twitter } from "lucide-react";
+import { GITHUB_REPO, DISCORD_URL } from "@/lib/constants";
+import { Github, MessageCircle } from "lucide-react";
import { MagicCard } from "@/components/ui/magic-card";
import { BlurFade } from "@/components/ui/blur-fade";
@@ -22,14 +22,6 @@ const LINKS = [
gradientFrom: "#6e7681",
gradientTo: "#30363d",
},
- {
- icon: Twitter,
- label: "Twitter / X",
- description: "Follow for updates and announcements",
- href: TWITTER_URL,
- gradientFrom: "#1DA1F2",
- gradientTo: "#7B2FBE",
- },
];
export default function Community() {
@@ -45,7 +37,7 @@ export default function Community() {
diff --git a/website/src/lib/constants.ts b/website/src/lib/constants.ts
index 465dbc65..c89cac68 100644
--- a/website/src/lib/constants.ts
+++ b/website/src/lib/constants.ts
@@ -3,7 +3,6 @@ export const BASE_PATH = process.env.NEXT_PUBLIC_BASE_PATH || "";
export const GITHUB_REPO = "https://github.com/apache/burr";
export const DOCS_URL = "/docs";
export const DISCORD_URL = "https://discord.gg/6Zy2DwP4f3";
-export const TWITTER_URL = "https://x.com/buraborr";
export const NAV_LINKS = [
{ label: "Features", href: "#features" },
@@ -66,46 +65,60 @@ export const INTEGRATIONS = [
export const TESTIMONIALS = [
{
- name: "Alex Johnson",
- title: "ML Engineer",
- company: "Acme Corp",
+ name: "Ashish Ghosh",
+ title: "CTO",
+ company: "Peanut Robotics",
+ logo: "https://www.google.com/s2/favicons?domain=peanutrobotics.com&sz=64",
quote:
- "Burr completely changed how we build AI agents. The state management and observability are game-changers for production systems.",
+ "After evaluating several other obfuscating LLM frameworks, their elegant yet comprehensive state management solution proved to be the powerful answer to rolling out robots driven by AI decision making.",
},
{
- name: "Sarah Chen",
- title: "Staff Engineer",
- company: "TechFlow",
+ name: "Ishita",
+ title: "Founder",
+ company: "Watto.ai",
+ logo: "https://www.google.com/s2/favicons?domain=watto.ai&sz=64",
quote:
- "We moved from a tangled mess of LangChain callbacks to clean, testable Burr actions. Our team velocity doubled.",
+ "Using Burr is a no-brainer if you want to build a modular AI application. It is so easy to build with and I especially love their UI which makes debugging a piece of cake. And the always ready to help team is the cherry on top.",
},
{
- name: "Marcus Rivera",
- title: "CTO",
- company: "DataPilot",
+ name: "Matthew Rideout",
+ title: "Staff Software Engineer",
+ company: "Paxton AI",
+ logo: "https://www.google.com/s2/favicons?domain=paxton.ai&sz=64",
+ quote:
+ "I just came across Burr and I'm like WOW, this seems like you guys predicted this exact need when building this. No weird esoteric concepts just because it's AI.",
+ },
+ {
+ name: "Rinat Gareev",
+ title: "Senior Solutions Architect",
+ company: "Provectus",
+ logo: "https://www.google.com/s2/favicons?domain=provectus.com&sz=64",
quote:
- "The Burr UI alone is worth it. Being able to replay and debug agent runs saved us countless hours of debugging.",
+ "Burr's state management part is really helpful for creating state snapshots and build debugging, replaying and even building evaluation cases around that.",
},
{
- name: "Priya Patel",
- title: "AI Engineer",
- company: "NeuralWorks",
+ name: "Hadi Nayebi",
+ title: "Co-founder",
+ company: "CognitiveGraphs",
+ logo: null,
quote:
- "Human-in-the-loop was trivial to add with Burr. We went from prototype to production approval workflow in a day.",
+ "I have been using Burr over the past few months, and compared to many agentic LLM platforms out there (e.g. LangChain, CrewAi, AutoGen, Agency Swarm, etc), Burr provides a more robust framework for designing complex behaviors.",
},
{
- name: "David Kim",
- title: "Senior Developer",
- company: "CloudScale",
+ name: "Aditya K.",
+ title: "DS Architect",
+ company: "TaskHuman",
+ logo: `${BASE_PATH}/logos/taskhuman.svg`,
quote:
- "Pure Python, no magic, no hidden abstractions. Burr lets us build exactly what we need without fighting the framework.",
+ "Moving from LangChain to Burr was a game-changer! It took me just a few hours to get started with Burr, compared to the days and weeks I spent trying to navigate LangChain. I pitched Burr to my teammates, and we pivoted our entire codebase to it.",
},
{
- name: "Emma Wilson",
- title: "Tech Lead",
- company: "Subreddit",
+ name: "Reddit User",
+ title: "Developer",
+ company: "r/LocalLlama",
+ logo: null,
quote:
- "Persistence and replay are incredible for debugging complex multi-step agents. Burr makes the hard parts easy.",
+ "Of course, you can use it [LangChain], but whether it's really production-ready and improves the time from code-to-prod, we've been doing LLM apps for two years, and the answer is no. Honestly, take a look at Burr. Thank me later.",
},
];