# 🧩 HaexHub – The European “Everything App”

## 🌍 Vision

We are living in the **computer age** — nearly everyone owns multiple devices: a smartphone, a laptop, perhaps even a desktop PC or tablet.  
Each of these runs its own **operating system** — Windows, macOS, Linux, Android, iOS — and hosts a unique mix of **apps and data**.

Unfortunately, **interoperability** between these devices is often poor or even impossible.  
The reasons are many:

- **Platform lock-in**: Vendors like Microsoft, Apple, or Google design systems that make it easy to _enter_ their ecosystem but difficult to _leave_.
- **Fragmented software development**: Developers face high technical and financial hurdles to support multiple platforms at once.

Creating and maintaining one secure, high-quality app for _all_ systems can be almost impossible — especially for small teams, startups, and indie developers.

And then there’s **distribution**: each platform requires its own build, packaging, signing, and publishing process.  
What if you could build your app **once** and deploy it **everywhere**?

> **HaexHub** makes that possible — giving every web app or PWA **superpowers**.

With HaexHub, developers can extend functionality via **extensions** that run securely inside the app, with carefully controlled permissions for accessing system features (files, shell, database, etc.).

---

## 🚀 Enter HaexHub

HaexHub provides a **framework** for building and running modular, sandboxed **web extensions** — web apps that run in an isolated environment but can communicate securely with the host.

Each extension:

- Runs inside an **IFrame**.
- Uses **postMessage APIs** to communicate with HaexHub.
- Declares required **permissions** in a manifest file.
- Can be added or removed at runtime.

Without explicit permission, extensions cannot access the file system, network, or external resources — ensuring **privacy and security** by default.  
Once granted, however, extensions can unlock full desktop-like capabilities:  
access files, execute commands, or interact with SQLite databases.

Imagine a **web-based VS Code** that can directly access your local shell and file system — something that current web IDEs can’t do.  
With HaexHub’s permission model, such power is possible, but **always under user control**.

HaexHub itself is **cross-platform** and runs on:

- 💻 Windows, macOS, Linux
- 📱 Android, iOS
- 🧠 Desktops, laptops, tablets, smartphones

All user and extension data is stored in a **locally encrypted SQLite database**.  
To sync across devices, HaexHub can connect to a **synchronization server** — which you can even **self-host** for maximum independence.

> 🛡️ HaexHub is built on the principles of **privacy, security, and digital sovereignty**.

The user is always in control of their data — deciding what to share, and with whom.

---

## 🧠 Technical Foundations

HaexHub is powered by **[Tauri](https://v2.tauri.app/)** — a secure, efficient framework for building native apps from web technologies.

Unlike Electron (used by apps like VS Code), Tauri:

- Uses **native rendering engines** (WebView2, WKWebView, WebKitGTK)
- Produces **smaller, faster apps**
- Enforces **strong sandboxing and permission models**

HaexHub builds upon Tauri’s security features, extending them to third-party extensions.

### 🏡 Local-first by Design

HaexHub follows a **strict local-first architecture**:

- Works **offline** without accounts or internet.
- Stores data locally in **encrypted SQLite**.
- Uses **CRDTs (Conflict-free Replicated Data Types)** for safe synchronization across devices — even with encrypted data.

Unlike many “local-first” apps, HaexHub doesn’t just cache data in the browser.  
Your data truly resides **on your disk**, not under a browser’s limited storage policy.

Optionally, HaexHub can sync databases via a backend service — self-hosted or external — with optional **end-to-end encryption**.

---

## 🧩 Extensions

Extensions are the heart of HaexHub.

Everything the user interacts with — from password management to file syncing — will be implemented as **extensions**.

There are two types:

- **Official/Core Extensions**
- **Third-Party Extensions**

Each extension is a **web app** bundled via your preferred frontend stack:

> Vue, React, Svelte, Angular, Vite, Webpack, Rollup — you name it.

### 🔐 Example: Password Manager

A first official extension will be a **Password Manager**, built with **Vue/Nuxt**:

- Declares database permissions via its manifest.
- Manages login credentials locally in encrypted SQLite.
- Can tag entries (e.g. “Email”) for use by other extensions — such as an email client.

### 🗂 Example: File Synchronization

Another planned core extension will handle **file synchronization**:

- Syncs files/folders between devices and cloud providers (e.g. S3, Google Drive, Dropbox).
- Lets users define sync rules per device.
- Stores configuration securely in the local database.

### 💬 Future Extensions

- Calendar & Contacts
- Collaborative document management
- Messenger
- Browser & Payment Services (e.g., GNU Taler integration)

With this modular design, HaexHub can evolve into a true **European alternative to WeChat** — but open, federated, and privacy-first.

---

## 🧰 Installation & Setup

### 📦 Prerequisites

Install the following dependencies:

- [Node.js / nvm](https://nodejs.org/en/download)
- [Tauri](https://v2.tauri.app/start/prerequisites/)
- [Rust](https://v2.tauri.app/start/prerequisites/#rust)
- [Android Studio](https://developer.android.com/studio?hl=de)
- WebKit2GTK + GTK3

#### 🐧 Debian / Ubuntu

```bash
sudo apt update
sudo apt install \
  libwebkit2gtk-4.1-dev \
  libgtk-3-dev \
  libayatana-appindicator3-dev \
  librsvg2-dev
```

#### 🦊 Fedora

```bash
sudo dnf install \
  webkit2gtk4.1-devel \
  gtk3-devel \
  libappindicator-gtk3 \
  librsvg2-devel
```

#### ⚙️ Development

Make sure port 3003 is available (or adjust it in `nuxt.config.ts` and `src-tauri/tauri.conf.json`).

```bash
git clone https://github.com/haexhub/haex-vault.git
cd haex-vault
pnpm install
pnpm tauri dev
```

#### 📦 Release Process

Create a new release using the automated scripts:

```bash
# Patch release (0.1.13 → 0.1.14)
pnpm release:patch

# Minor release (0.1.13 → 0.2.0)
pnpm release:minor

# Major release (0.1.13 → 1.0.0)
pnpm release:major
```

The script automatically:
1. Updates version in `package.json`
2. Creates a git commit
3. Creates a git tag
4. Pushes to remote

GitHub Actions will then automatically:
- Build desktop apps (macOS, Linux, Windows)
- Build Android apps (APK and AAB)
- Create and publish a GitHub release

#### 🧭 Summary

HaexHub aims to:

- Simplify cross-platform app development
- Empower users with local-first privacy
- Enable developers to create modular, permissioned extensions
- Bridge the gap between web and native worlds

HaexHub is the foundation for a decentralized, privacy-friendly, European “everything app.”
