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
39 changes: 0 additions & 39 deletions apps/docs/docs/cloud.md

This file was deleted.

2 changes: 1 addition & 1 deletion apps/docs/docs/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ BashBuddy is an AI-powered terminal assistant that helps you write commands with
## 🚀 Quick Start

1. Head over to the [install page](/install) and follow the instructions to install the CLI.
2. If your system is not fast enough to run the AI model locally, try using [BashBuddy Cloud](/cloud)! (it's just $2, and completely private)
2. Set up a local model by running `bashbuddy local`.
3. Start being more productive with BashBuddy!

## 📚 Community
Expand Down
10 changes: 2 additions & 8 deletions apps/docs/docs/install.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,9 @@ You should see the current version number displayed.

## Next steps

Once you have BashBuddy installed, you'll need to choose between using it locally, or using [BashBuddy Cloud](/cloud).
Once you have BashBuddy installed, you'll need to set up the local model.

### Using locally

> If your computer is not fast enough to run the AI model locally, you won't have a great experience.
> If your computer is not fast enough to run the AI model locally, you may not have a great experience.

Setup the local model by running:

Expand All @@ -57,10 +55,6 @@ Once the model is installed, you can start using BashBuddy by running:
bashbuddy ask echo 5 times 4
```

### Using BashBuddy Cloud

Refer to the [BashBuddy Cloud](/cloud) page for more information.

## Installing the alias

Typing `bashbuddy ask` in your terminal all the time is slow. We expect you to be more productive than that!
Expand Down
18 changes: 3 additions & 15 deletions apps/docs/docs/privacy.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,15 @@ slug: /privacy
sidebar_position: 99
---

# How to we handle your data?
# How do we handle your data?

Other solutions similar to BashBuddy always rely on cloud processing, without knowing where your data is going or how it's being used.
Other solutions similar to BashBuddy rely on cloud processing, without knowing where your data is going or how it's being used.

BashBuddy is different. We believe that your data should always stay on your own system.

## What data is collected?

### BashBuddy CLI

If you just use the BashBuddy CLI, we don't collect any data from you. _(maybe in the future we'll optionally collect usage data to improve the product, but that will be opt-in)_

### BashBuddy Cloud

If you use BashBuddy Cloud, we only collect the minimum data to identify you as a user, and an ID for every interaction you do (no logs, no tracking, no information).

The only exception is that we store your current chat/session for 10 minutes maximum in [Upstash's KV](https://upstash.com/) so you can prompt BashBuddy to modify the generated command. (like a chat).

We handle payments and subscriptions via [Stripe](https://stripe.com/).

Our AI inference is handled by [groq](https://groq.com/).
BashBuddy runs entirely locally on your device. We don't collect any data from you. _(maybe in the future we'll optionally collect usage data to improve the product, but that will be opt-in)_

## Open Source

Expand Down
4 changes: 0 additions & 4 deletions apps/docs/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,6 @@ const config: Config = {
label: "Install",
to: "/install",
},
{
label: "BashBuddy Cloud",
to: "/cloud",
},
],
},
{
Expand Down
50 changes: 10 additions & 40 deletions apps/landing/src/components/Header.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -67,15 +67,16 @@
onMount(() => {
isBrowserEnv = true;

// Check if banner was previously closed
if (typeof localStorage !== "undefined") {
const isClosed = localStorage.getItem(BANNER_STORAGE_KEY) === "true";
if (!isClosed) {
isBannerVisible = true;
}
} else {
isBannerVisible = true;
}
// Banner is disabled
// To re-enable, uncomment the code below:
// if (typeof localStorage !== "undefined") {
// const isClosed = localStorage.getItem(BANNER_STORAGE_KEY) === "true";
// if (!isClosed) {
// isBannerVisible = true;
// }
// } else {
// isBannerVisible = true;
// }
});

function toggleMenu() {
Expand Down Expand Up @@ -160,12 +161,6 @@
<div class="flex items-center justify-center flex-1 gap-4">
<div class="flex gap-2 items-center">
<Button href="/#how-it-works" variant="ghost">How it works?</Button>
<Button href="/cloud" variant="ghost" class="text-orange-600">
Cloud
</Button>
<Button href="/local" variant="ghost" class="text-primary">
Local
</Button>
<Button href="/blog" variant="ghost">Blog</Button>

<div class="h-4 w-px bg-border" role="separator"></div>
Expand All @@ -180,10 +175,6 @@
<Button href={`${SITE_URLS.DOCS_URL}/install`}
>Install BashBuddy</Button
>
<Button
href={SITE_URLS.ACCOUNT_URL}
class="bg-orange-600 hover:bg-orange-700">Go to account</Button
>
</div>
</div>

Expand Down Expand Up @@ -228,20 +219,6 @@
>
How it works?
</a>
<a
href="/cloud"
class="text-sm font-medium transition-colors hover:text-orange-600 py-3 text-orange-600"
onclick={closeMenu}
>
Cloud
</a>
<a
href="/local"
class="text-sm font-medium transition-colors hover:text-primary py-3 text-primary"
onclick={closeMenu}
>
Local
</a>
<a
href="/blog"
class="text-sm font-medium transition-colors hover:text-primary py-3"
Expand All @@ -267,13 +244,6 @@
>
Install BashBuddy
</a>
<a
href={SITE_URLS.ACCOUNT_URL}
class="inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-orange-600 hover:bg-orange-700 text-white h-10 px-4 py-2"
onclick={closeMenu}
>
Go to account
</a>
</div>
</div>
</div>
Expand Down
20 changes: 4 additions & 16 deletions apps/landing/src/lib/components/LandingCard.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,19 @@
icon?: ComponentType;
onClick?: () => void;
} | null = null;
export let variant: "default" | "cloud" = "default";
export let className = "";
export let rawHtml = false;
</script>

<div
class={cn(
"rounded-xl backdrop-blur-md bg-zinc-800/30 border border-zinc-700/50 p-8 transition-all duration-300 w-full group flex flex-col",
variant === "cloud"
? "hover:bg-zinc-800/50 hover:border-orange-500/50 hover:shadow-[0_0_30px_rgba(249,115,22,0.1)]"
: "hover:bg-zinc-800/50 hover:border-primary/50 hover:shadow-[0_0_30px_rgba(0,0,0,0.3)]",
"rounded-xl backdrop-blur-md bg-zinc-800/30 border border-zinc-700/50 p-8 transition-all duration-300 w-full group flex flex-col hover:bg-zinc-800/50 hover:border-primary/50 hover:shadow-[0_0_30px_rgba(0,0,0,0.3)]",
className,
)}
>
<div class="flex items-center mb-4">
<div
class="p-3 rounded-lg {variant === 'cloud'
? 'bg-orange-500/10 text-orange-500 group-hover:bg-orange-500/20'
: 'bg-primary/10 text-primary group-hover:bg-primary/20'}
mr-4 transition-colors"
class="p-3 rounded-lg bg-primary/10 text-primary group-hover:bg-primary/20 mr-4 transition-colors"
>
<svelte:component this={icon} class="h-6 w-6" />
</div>
Expand All @@ -50,9 +43,7 @@
{#each tags as tag}
<span
class="px-3 py-1 text-xs rounded-full {tag.primary
? variant === 'cloud'
? 'bg-orange-500/20 text-orange-400'
: 'bg-primary/20 text-primary'
? 'bg-primary/20 text-primary'
: 'bg-zinc-700/50 text-zinc-300'}"
>
{tag.label}
Expand All @@ -64,10 +55,7 @@
{#if button}
<div class="mt-auto">
<button
class="w-full {variant === 'cloud'
? 'bg-gradient-to-r from-orange-500 to-red-500 hover:from-orange-600 hover:to-red-600 border-0 text-white py-2 px-4 rounded-md'
: 'border border-zinc-700 hover:border-primary/50 text-zinc-300 py-2 px-4 rounded-md transition-colors'}
flex items-center justify-center gap-2"
class="w-full border border-zinc-700 hover:border-primary/50 text-zinc-300 py-2 px-4 rounded-md transition-colors flex items-center justify-center gap-2"
on:click={button.onClick}
>
{#if button.icon}
Expand Down
Loading
Loading