docs: remove proof of work branding (#763)

* docs(index): start cleanup, remove proof of work from core branding

Signed-off-by: Xe Iaso <me@xeiaso.net>

* docs(index): rewrite copy, add CELPHASE illustrations

Signed-off-by: Xe Iaso <me@xeiaso.net>

* chore: spelling

Signed-off-by: Xe Iaso <me@xeiaso.net>

---------

Signed-off-by: Xe Iaso <me@xeiaso.net>
This commit is contained in:
Xe Iaso 2025-07-06 02:34:52 +00:00 committed by GitHub
parent 6fa5b8e4e0
commit c2f46907a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 37 additions and 44 deletions

View File

@ -7,7 +7,8 @@
"workspaceFolder": "/workspace/anubis", "workspaceFolder": "/workspace/anubis",
"postStartCommand": "npm ci && go mod download", "postStartCommand": "npm ci && go mod download",
"features": { "features": {
"ghcr.io/xe/devcontainer-features/ko:1.1.0": {} "ghcr.io/xe/devcontainer-features/ko:1.1.0": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
}, },
"initializeCommand": "mkdir -p ${localEnv:HOME}${localEnv:USERPROFILE}/.local/share/atuin", "initializeCommand": "mkdir -p ${localEnv:HOME}${localEnv:USERPROFILE}/.local/share/atuin",
"customizations": { "customizations": {

View File

@ -22,7 +22,6 @@ berr
bingbot bingbot
Bitcoin Bitcoin
bitrate bitrate
blogging
Bluesky Bluesky
blueskybot blueskybot
boi boi
@ -71,6 +70,7 @@ DDOS
Debian Debian
debrpm debrpm
decaymap decaymap
devcontainers
Diffbot Diffbot
discordapp discordapp
discordbot discordbot

View File

@ -6,7 +6,7 @@ import type * as Preset from '@docusaurus/preset-classic';
const config: Config = { const config: Config = {
title: 'Anubis', title: 'Anubis',
tagline: 'Weigh the soul of incoming HTTP requests using proof-of-work to stop AI crawlers', tagline: 'Weigh the soul of incoming HTTP requests to protect your website!',
favicon: 'img/favicon.ico', favicon: 'img/favicon.ico',
// Set the production url of your site here // Set the production url of your site here
@ -40,27 +40,20 @@ const config: Config = {
[ [
'classic', 'classic',
{ {
docs: {
sidebarPath: './sidebars.ts',
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
editUrl:
'https://github.com/TecharoHQ/anubis/tree/main/docs/',
},
blog: { blog: {
showReadingTime: true, showReadingTime: true,
feedOptions: { feedOptions: {
type: ['rss', 'atom', "json"], type: ['rss', 'atom', "json"],
xslt: true, xslt: true,
}, },
// Please change this to your repo. editUrl: 'https://github.com/TecharoHQ/anubis/tree/main/docs/',
// Remove this to remove the "edit this page" links.
editUrl:
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
// Useful options to enforce blogging best practices
onInlineTags: 'warn', onInlineTags: 'warn',
onInlineAuthors: 'warn', onInlineAuthors: 'warn',
onUntruncatedBlogPosts: 'warn', onUntruncatedBlogPosts: 'throw',
},
docs: {
sidebarPath: './sidebars.ts',
editUrl: 'https://github.com/TecharoHQ/anubis/tree/main/docs/',
}, },
theme: { theme: {
customCss: './src/css/custom.css', customCss: './src/css/custom.css',
@ -74,7 +67,7 @@ const config: Config = {
respectPrefersColorScheme: true, respectPrefersColorScheme: true,
}, },
// Replace with your project's social card // Replace with your project's social card
image: 'img/docusaurus-social-card.jpg', image: 'img/social-card.jpg',
navbar: { navbar: {
title: 'Anubis', title: 'Anubis',
logo: { logo: {
@ -82,23 +75,28 @@ const config: Config = {
src: 'img/favicon.webp', src: 'img/favicon.webp',
}, },
items: [ items: [
{ to: '/blog', label: 'Blog', position: 'left' },
{ {
type: 'docSidebar', type: 'docSidebar',
sidebarId: 'tutorialSidebar', sidebarId: 'tutorialSidebar',
position: 'left', position: 'left',
label: 'Docs', label: 'Docs',
}, },
{ to: '/blog', label: 'Blog', position: 'left' },
{ {
href: 'https://github.com/sponsors/Xe', to: '/docs/admin/botstopper',
label: "Sponsorship", label: "Unbranded Version",
position: 'left' position: "left"
}, },
{ {
href: 'https://github.com/TecharoHQ/anubis', href: 'https://github.com/TecharoHQ/anubis',
label: 'GitHub', label: 'GitHub',
position: 'right', position: 'right',
}, },
{
href: 'https://github.com/sponsors/Xe',
label: "Sponsor the Project",
position: 'right'
},
], ],
}, },
footer: { footer: {

View File

@ -5,49 +5,50 @@ import styles from "./styles.module.css";
type FeatureItem = { type FeatureItem = {
title: string; title: string;
Svg: React.ComponentType<React.ComponentProps<"svg">>; imageURL: string;
description: ReactNode; description: ReactNode;
}; };
const FeatureList: FeatureItem[] = [ const FeatureList: FeatureItem[] = [
{ {
title: "Easy to Use", title: "Easy to Use",
Svg: require("@site/static/img/undraw_docusaurus_mountain.svg").default, imageURL: require("@site/static/img/anubis/happy.webp").default,
description: ( description: (
<> <>
Anubis is easy to set up, lightweight, and helps get rid of the lowest Anubis sits in the background and weighs the risk of incoming requests.
hanging fruit so you can sleep at night. If it asks a client to complete a challenge, no user interaction is
required.
</> </>
), ),
}, },
{ {
title: "Lightweight", title: "Lightweight",
Svg: require("@site/static/img/undraw_docusaurus_tree.svg").default, imageURL: require("@site/static/img/anubis/pensive.webp").default,
description: ( description: (
<> <>
Anubis is efficient and as lightweight as possible, blocking the worst Anubis is so lightweight you'll forget it's there until you look at your
of the bots on the internet and makes it easy to protect what you host hosting bill. On average it uses less than 128 MB of ram.
online.
</> </>
), ),
}, },
{ {
title: "Multi-threaded", title: "Block the scrapers",
Svg: require("@site/static/img/undraw_docusaurus_react.svg").default, imageURL: require("@site/static/img/anubis/reject.webp").default,
description: ( description: (
<> <>
Anubis uses a multi-threaded proof of work check to ensure that users Anubis uses a combination of heuristics to identify and block bots
browsers are up to date and support modern standards. before they take your website down. You can customize the rules with{" "}
<a href="/docs/admin/policies">your own policies</a>.
</> </>
), ),
}, },
]; ];
function Feature({ title, Svg, description }: FeatureItem) { function Feature({ title, description, imageURL }: FeatureItem) {
return ( return (
<div className={clsx("col col--4")}> <div className={clsx("col col--4")}>
<div className="text--center"> <div className="text--center">
<Svg className={styles.featureSvg} role="img" /> <img src={imageURL} className={styles.featureSvg} role="img" />
</div> </div>
<div className="text--center padding-horiz--md"> <div className="text--center padding-horiz--md">
<Heading as="h3">{title}</Heading> <Heading as="h3">{title}</Heading>

View File

@ -31,19 +31,12 @@ export default function Home(): ReactNode {
const { siteConfig } = useDocusaurusContext(); const { siteConfig } = useDocusaurusContext();
return ( return (
<Layout <Layout
title={`Anubis: self hostable scraper defense software`} title={`Anubis: Web AI Firewall Utility`}
description="Weigh the soul of incoming HTTP requests using proof-of-work to stop AI crawlers" description="Weigh the soul of incoming HTTP requests to protect your website!"
> >
<HomepageHeader /> <HomepageHeader />
<main> <main>
<HomepageFeatures /> <HomepageFeatures />
<center>
<p>
This is all placeholder text. It will be fixed. Give me time. I am
one person and my project has unexpectedly gone viral.
</p>
</center>
</main> </main>
</Layout> </Layout>
); );

BIN
docs/static/img/anubis/happy.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
docs/static/img/anubis/pensive.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
docs/static/img/anubis/reject.webp vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

BIN
docs/static/img/social-card.jpg vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 KiB