Go to file
rozodru 3ada563ce1 UX changes to side vertical panel, initial steps for tree tab system 2025-08-03 10:26:38 -04:00
src UX changes to side vertical panel, initial steps for tree tab system 2025-08-03 10:26:38 -04:00
.gitignore RSS addition, bookmark's and mastodon features 2025-08-02 19:55:29 -04:00
Cargo.lock RSS addition, bookmark's and mastodon features 2025-08-02 19:55:29 -04:00
Cargo.toml RSS addition, bookmark's and mastodon features 2025-08-02 19:55:29 -04:00
PROGRESS.md UX changes to side vertical panel, initial steps for tree tab system 2025-08-03 10:26:38 -04:00
README.md initial commit 2025-08-01 17:45:44 -04:00

README.md

Bridge - Fediverse Browser

A privacy-focused web browser specifically designed for the Fediverse (Mastodon, Lemmy, PeerTube, etc.) built with Rust, GTK4, and WebKitGTK.

Project Status

Phase 1 - Foundation Complete

  • Basic Rust project structure with Cargo.toml
  • Core application with GTK4 window and WebKitGTK browser view
  • Navigation controls (address bar, back/forward/refresh buttons)
  • Sidebar placeholder for Fediverse timeline

🔄 Next Phase - Fediverse Integration

  • SQLite database schema for bookmarks and settings
  • Basic Fediverse account management structure
  • Native Mastodon timeline integration

Features Implemented

  • Basic Browser: Web browsing with WebKitGTK engine
  • Navigation: Address bar with URL/search functionality
  • Controls: Back, forward, and refresh buttons
  • Layout: Sidebar for future Fediverse integration
  • Search: DuckDuckGo search integration for non-URL queries

Dependencies

  • GTK4 and WebKitGTK development libraries
  • Rust 1.70+ (2021 edition)

Installing Dependencies (Linux)

Ubuntu/Debian:

sudo apt install libgtk-4-dev libwebkit2gtk-4.0-dev build-essential

Arch Linux:

sudo pacman -S gtk4 webkit2gtk base-devel

Fedora:

sudo dnf install gtk4-devel webkit2gtk3-devel gcc

Building

cargo build --release

Running

cargo run

Architecture

src/
├── main.rs              # App entry point with GTK4 setup
├── ui/                  # GTK4 interface components
│   ├── browser_window.rs # Main browser window with WebView
│   └── navigation.rs     # Navigation controls (planned)
├── fediverse/           # ActivityPub clients and account management
│   ├── account_manager.rs # Multi-account support (planned)
│   ├── activitypub.rs     # Native ActivityPub protocol (planned)
│   └── timeline.rs        # Unified timeline aggregation (planned)
└── storage/             # SQLite database integration
    ├── database.rs       # Core database operations (planned)
    ├── bookmarks.rs      # Bookmark management (planned)
    └── settings.rs       # Application settings (planned)

Key Dependencies

  • gtk4: GTK4 bindings for Rust
  • webkit2gtk: WebKit browser engine
  • tokio: Async runtime for Fediverse API calls
  • reqwest: HTTP client for API requests
  • mastodon-async: Mastodon API client
  • sqlx: Async SQL toolkit
  • serde: Serialization framework

Unique Fediverse Features (Planned)

  • Multi-account management across instances/platforms
  • Unified timeline combining Mastodon, Lemmy, PeerTube feeds
  • Cross-platform interactions (reply to Lemmy from Mastodon account)
  • Native ActivityPub protocol support
  • Instance-aware search and content discovery
  • Privacy-focused federation transparency tools
  • Enhanced thread visualization for discussions
  • Offline reading with smart Fediverse content caching

Philosophy

  • Privacy and security first: No tracking, no data collection
  • Native Fediverse integration: Beyond just web interface support
  • User control: Full control over data and functionality
  • Linux-first: Built for the Fediverse community
  • Open source: FOSS hobby project, not commercial

License

GPL-3.0-or-later

Contributing

This is a hobby project focused on creating a unique browser experience for Fediverse users. Contributions are welcome!