# Faro

> *A lighthouse for your knowledge. Local-first snippet and knowledge management for developers.*

Faro is a desktop app for capturing, organizing, and retrieving developer snippets: code, CLI commands, and notes. The core philosophy is **dump-first, organize-later**: zero friction on capture, smart retrieval when you need it.

Built with Tauri v2 + Svelte 5.
## Download

<p align="center">
  <a href="https://github.com/bogdancornescu/Faro/releases/latest">
    <img src="https://img.shields.io/github/v/release/bogdancornescu/Faro?style=for-the-badge&label=Latest+Release&color=7c3aed" alt="Latest Release" />
  </a>
</p>

<p align="center">
  <a href="https://github.com/bogdancornescu/Faro/releases/latest">
    <img src="https://img.shields.io/badge/Windows-x64_installer-0078d4?style=for-the-badge&logo=windows&logoColor=white" alt="Download for Windows" />
  </a>
  &nbsp;&nbsp;
  <a href="https://github.com/bogdancornescu/Faro/releases/latest">
    <img src="https://img.shields.io/badge/Linux-.deb_(Debian%2FUbuntu%2FMint)-e95420?style=for-the-badge&logo=linux&logoColor=white" alt="Download for Linux" />
  </a>
</p>

##

![Main view](assets/faro_1.png)


---

## Philosophy

- **Dump first, organize later.** Capture friction kills the habit. Retrieval is the product.
- **Local-first.** Your snippets live on your machine. No accounts, no cloud, no sync.
- **Intentional minimalism.** Every feature cut is a feature that doesn't need maintaining.

---

## Features

### Quick Note
Global hotkey (`Ctrl+Shift+Space` by default) opens a focused floating window — anywhere, anytime, even when Faro's main window isn't focused. Paste your snippet, add a title and tags, save. It auto-detects the content type and language on save. No mode-switching, no navigation, no friction.

### Full-Text Search
FTS5-powered search across all snippet titles and content. Results update as you type. 

### Auto Content Detection
highlight.js inspects content on save and automatically classifies it as `code`, `cli`, `text`, or `url`, plus detects the specific language (Rust, Python, bash, SQL, etc.) and creates system tags. URL detection triggers on single-line `http`/`https`/`ftp` content. You can override the type manually.

### Three-Panel Layout

**Left panel** — timeline navigation, content type filter (Code / CLI / Text / URL chips), tag browser with inline filter scoped to the active type, new snippet button, settings access.

**Center panel** — full-text search bar, snippet list with type icons, copy count badge, and 2-line previews; tag chips (user tags and auto-detected language tags are visually distinct). Snippets are ordered by most-copied first, then by recency.

**Right panel** — snippet content, directly editable in place. Explicit save keeps accidental edits from destroying data. A **Copy** button next to the content label copies to clipboard and increments the copy counter.

### Tag System
Two tag sources coexist on each snippet:
- **User tags**: whatever you type in the tags field
- **System tags**: auto-detected language labels (e.g. `rust`, `python`, `bash`)

Both are browsable from the left panel. Clicking a tag filters the center panel to matching snippets.

### Themes
Dark (default), Light, and Nord.

![Themes carousel](assets/faro_3.webp)
---

## Keyboard Shortcuts

### Main Window

| Shortcut | Action |
|---|---|
| `Ctrl+F` | Focus the search bar |
| `Ctrl+N` | New snippet |
| `↑` / `↓` | Navigate the snippet list |

### Quick Note Window

| Shortcut | Action |
|---|---|
| `Ctrl+Enter` | Save snippet |
| `Esc` | Discard and close |

### Global (system-wide)

| Shortcut | Action |
|---|---|
| `Ctrl+Shift+Space` | Open Quick Note (configurable) |

![Quick note](assets/faro_2.png)
---

## Settings

Open via the gear icon in the bottom-left corner.

| Setting | Description |
|---|---|
| **Global hotkey** | The system-wide shortcut that opens Quick Note. Default: `Ctrl+Shift+Space`. |
| **Editor font size** | Code area font size, 10–24px. Previews live. |
| **Quick Note stay open** | When enabled, Quick Note clears and stays open after saving instead of closing. |
| **Theme** | Dark / Light / Nord. Previews live before saving. |

---

## Tech Stack

| Layer | Technology |
|---|---|
| Backend | Rust (Tauri v2) |
| Frontend | Svelte 5 + TypeScript |
| Database | SQLite via `rusqlite` + FTS5 |
| Language detection | highlight.js |
| UI font | IBM Plex Sans |
| Editor font | JetBrains Mono |

**Platform targets:** Windows (primary), Linux (secondary). No macOS.

---

## Building from Source

**Prerequisites:**

- [Rust toolchain](https://rustup.rs/) (stable)
- [Node.js](https://nodejs.org/) 18+
- [pnpm](https://pnpm.io/) (`npm install -g pnpm`)
- Tauri v2 system dependencies — see the [Tauri prerequisites guide](https://v2.tauri.app/start/prerequisites/) for your OS

**Install dependencies:**

```bash
pnpm install
```

**Run in development:**

```bash
pnpm tauri dev
```

**Build a release binary:**

```bash
pnpm tauri build
```

The installer/binary lands in `src-tauri/target/release/bundle/`.

---

## Name & Identity

**Faro** — Spanish/Portuguese for *lighthouse*. A reference tool that helps you find things. The purple accent aligns with dusk and lighthouse imagery, which is either a happy accident or destiny, depending on how dramatic you're feeling.

---

## License

[MIT](LICENSE)

