mirror of
https://github.com/haexhub/haex-hub.git
synced 2025-12-16 14:10:52 +01:00
207 lines
6.9 KiB
Markdown
207 lines
6.9 KiB
Markdown
# 🧩 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.”
|