Skip to content

About

Pub/Sub GUI is a modern desktop application that provides a beautiful interface for managing and monitoring Google Cloud Pub/Sub resources

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

88 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Pub/Sub GUI

A cross-platform desktop application for Google Cloud Pub/Sub management

License: MIT Go Version React

Pub/Sub GUI is a modern desktop application that provides a streamlined interface for managing and monitoring Google Cloud Pub/Sub resources. Built with Wails v2, it combines the power of Go with a React frontend to deliver a fast, native desktop experience.

โœจ Features

  • ๐Ÿ” Browse Resources - Quickly explore topics and subscriptions across multiple GCP projects
  • ๐Ÿ“ก Real-Time Monitoring - Stream messages from topics and subscriptions with low latency
  • ๐Ÿ“ค Message Publishing - Publish messages with custom payloads and attributes
  • ๐Ÿ“ Message Templates - Save and reuse message templates for faster workflows
  • ๐ŸŽจ Customizable Themes - 5 beautiful themes (Auto, Dark, Light, Dracula, Monokai) with adjustable font sizes
  • ๐Ÿ—๏ธ Resource Management - Create, update, and delete topics and subscriptions
  • ๐Ÿ” Multi-Project Support - Manage multiple GCP projects with saved connection profiles
  • ๐Ÿ”‘ Multiple Auth Methods - Support for ADC, Service Account JSON, and OAuth2 personal accounts
  • ๐Ÿงช Emulator Support - Seamlessly switch between production GCP and local Pub/Sub Emulator
  • ๐Ÿ“ธ Snapshots & Seek - Create snapshots, seek to snapshots, and seek to timestamps for message replay
  • ๐Ÿ“‹ Structured Logging - Built-in logs viewer with filtering, search, and date range selection
  • โšก Fast & Responsive - Optimized for performance with local caching and virtual scrolling

๐Ÿ“ธ Screenshots

Screenshots coming soon!

๐Ÿš€ Installation

Quick Install (Recommended)

Install the latest release with a single command:

curl -fsSL https://raw.githubusercontent.com/b87/pubsub-gui/main/scripts/install.sh | bash

To install a specific version:

curl -fsSL https://raw.githubusercontent.com/b87/pubsub-gui/main/scripts/install.sh | bash -s -- v1.0.0

Manual Installation

  1. Download the appropriate binary for your platform from the Releases page:

    • macOS: pubsub-gui_darwin_amd64_*.tar.gz or pubsub-gui_darwin_arm64_*.tar.gz
    • Windows: pubsub-gui_windows_amd64_*.zip
    • Linux:
      • AppImage (Recommended): pubsub-gui_linux_amd64_*.AppImage - No dependencies required!
      • tar.gz: pubsub-gui_linux_amd64_*.tar.gz - Requires runtime libraries (see below)
  2. Linux - AppImage (Recommended):

    chmod +x pubsub-gui_linux_amd64_*.AppImage
    ./pubsub-gui_linux_amd64_*.AppImage

    The AppImage bundles all dependencies - no additional installation required!

  3. Linux - tar.gz (Alternative): Extract the archive and run the pubsub-gui binary.

    Linux Runtime Dependencies (for tar.gz only):

    The Linux binary requires the following runtime libraries:

    • libwebkit2gtk-4.1-0 (Debian/Ubuntu) or webkit2gtk4.1 (RHEL/CentOS/Fedora) or webkit2gtk-4.1 (Arch)
    • libgtk-3-0 (Debian/Ubuntu) or gtk3 (RHEL/CentOS/Fedora/Arch)
    • libappindicator3-1 (Debian/Ubuntu) or libappindicator-gtk3 (RHEL/CentOS/Fedora/Arch)

    Install on Debian/Ubuntu:

    sudo apt-get update
    sudo apt-get install libwebkit2gtk-4.1-0 libgtk-3-0 libappindicator3-1

    Install on RHEL/CentOS/Fedora:

    sudo dnf install webkit2gtk4.1 gtk3 libappindicator-gtk3

    Note: webkit2gtk4.1 is available on Fedora 40+ and RHEL/CentOS 10+. For older versions (RHEL/CentOS 8-9, Fedora โ‰ค39), only webkit2gtk3 (4.0 ABI) is available, which may not be compatible.

    Install on Arch Linux:

    sudo pacman -S webkit2gtk-4.1 gtk3 libappindicator-gtk3

    If you see an error like libwebkit2gtk-4.1.so.0: cannot open shared object file, install the missing dependencies above.

  4. (Optional) Add the binary to your PATH for global access

๐ŸŽฏ Quick Start

  1. Launch the application

  2. Connect to a GCP project:

    • Click "Connect" in the sidebar
    • Choose authentication method:
      • Application Default Credentials (ADC): Uses your local gcloud credentials
      • Service Account: Upload a JSON key file
      • OAuth2: Authenticate with your Google account via browser
    • Enter your GCP project ID
  3. Browse resources:

    • Topics and subscriptions will automatically load
    • Click on any resource to view details
  4. Monitor messages:

    • Select a topic or subscription
    • Click the "Monitor" tab
    • Messages will stream in real-time
  5. Publish messages:

    • Select a topic
    • Click the "Publish" tab
    • Enter your message payload (JSON) and attributes
    • Click "Publish"

๐Ÿ› ๏ธ Development

Prerequisites

  • Go 1.21 or higher
  • Node.js 18 or higher
  • Wails CLI v2.11.0+ (go install github.com/wailsapp/wails/v2/cmd/wails@latest)
  • GCP Account (optional - can use Pub/Sub Emulator)

Setup

  1. Clone the repository:

    git clone https://github.com/b87/pubsub-gui.git
    cd pubsub-gui
  2. Install frontend dependencies:

    cd frontend
    npm install
    cd ..
  3. Run in development mode:

    wails dev

    This will:

    • Start the Vite dev server with hot reload
    • Run the Go backend
    • Open the application window
    • Enable browser debugging at http://localhost:34115

Building

Build for your current platform:

wails build

Build for specific platforms:

# macOS (Universal Binary - Intel + Apple Silicon)
wails build -platform darwin/universal

# Windows 64-bit
wails build -platform windows/amd64

# Linux 64-bit
wails build -platform linux/amd64

Build artifacts are located in build/bin/.

Project Structure

pubsub-gui/
โ”œโ”€โ”€ app.go                 # Main application struct and Wails bindings
โ”œโ”€โ”€ main.go                # Wails initialization and entry point
โ”œโ”€โ”€ internal/
โ”‚   โ”œโ”€โ”€ auth/              # GCP authentication (ADC, service account, OAuth)
โ”‚   โ”œโ”€โ”€ config/            # Configuration persistence
โ”‚   โ”œโ”€โ”€ models/            # Shared data structures and errors
โ”‚   โ”œโ”€โ”€ logger/            # Structured logging system
โ”‚   โ”œโ”€โ”€ version/           # Version checking and upgrade notifications
โ”‚   โ””โ”€โ”€ pubsub/
โ”‚       โ”œโ”€โ”€ admin/         # Topic/subscription/snapshot management
โ”‚       โ”œโ”€โ”€ publisher/      # Message publishing
โ”‚       โ””โ”€โ”€ subscriber/     # Message streaming and monitoring
โ”œโ”€โ”€ frontend/
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/   # React components
โ”‚   โ”‚   โ”œโ”€โ”€ contexts/      # React contexts (Theme, etc.)
โ”‚   โ”‚   โ”œโ”€โ”€ hooks/         # Custom React hooks
โ”‚   โ”‚   โ””โ”€โ”€ types/         # TypeScript definitions
โ”‚   โ””โ”€โ”€ wailsjs/           # Auto-generated Wails bindings (DO NOT EDIT)
โ””โ”€โ”€ scripts/
    โ””โ”€โ”€ install.sh         # Installation script

๐Ÿ“š Documentation

  • CLAUDE.md - Comprehensive development guide and architecture documentation
  • PRD.md - Product Requirements Document with detailed specifications
  • ROADMAP.md - Feature roadmap and planned improvements

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow the patterns established in CLAUDE.md
  • Ensure all components support the theme system (see .cursor/rules/react-tailwind.mdc)
  • Test with all supported platforms when possible
  • Update documentation as needed

๐Ÿ“‹ Requirements

GCP Permissions

For production GCP usage, your service account needs the following IAM roles:

  • roles/pubsub.viewer - List topics and subscriptions
  • roles/pubsub.publisher - Publish messages to topics
  • roles/pubsub.subscriber - Pull messages from subscriptions

Recommended for development: roles/pubsub.editor (combines all above)

Local Development

For local development with the Pub/Sub Emulator:

  1. Install the Google Cloud SDK

  2. Start the emulator:

    gcloud beta emulators pubsub start
  3. Set the environment variable:

    export PUBSUB_EMULATOR_HOST=localhost:8085
  4. Launch the application - it will automatically detect and use the emulator

๐Ÿ› Troubleshooting

Connection Issues

  • "Not connected" error: Ensure you've configured a connection profile in Settings
  • Authentication failed: Verify your service account JSON key is valid and has the required permissions
  • Project not found: Check that the GCP project ID is correct and you have access to it

Performance Issues

  • Slow message rendering: The app uses virtual scrolling for large message lists. If you experience issues, try reducing the message buffer size in Settings
  • High memory usage: The app limits message buffers to 500 messages by default. Adjust in Settings if needed

Build Issues

  • Wails CLI not found: Install with go install github.com/wailsapp/wails/v2/cmd/wails@latest
  • Frontend build fails: Ensure Node.js 18+ is installed and run npm install in the frontend/ directory
  • Platform-specific dependencies: See Wails documentation for system dependencies

For more troubleshooting tips, see CLAUDE.md.

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

๐Ÿ“ฎ Support

๐Ÿ—บ๏ธ Roadmap

Integration Tests with Emulator

  • Integration tests with the emulator

Packaging & Distribution

  • One-click installers for macOS, Windows, and Linux
  • Automated builds with GoReleaser
  • Auto-update mechanism
  • Public beta release

Future Enhancements

Multi-Project Workspaces

  • Tabbed interface for multiple GCP projects
  • Side-by-side topic/subscription comparison
  • Cross-project resource search
  • Workspace save/restore

Advanced Replay Tools

  • โœ… Subscription snapshots (create, list, seek to snapshot) - Implemented
  • โœ… Seek to timestamp functionality - Implemented
  • Dead-letter queue viewer with message re-drive
  • Message history export (JSON, CSV formats)

Performance Testing Tools

  • Bulk publish mode (configurable messages/second)
  • Message payload generator with templates
  • Latency monitoring and throughput visualization

Schema Registry Integration

  • Validate message payloads against schemas (Avro, Protocol Buffers, JSON)
  • Auto-complete for schema fields
  • Schema version management

Long-Term Vision

  • Multi-broker support (Kafka, RabbitMQ, AWS SNS/SQS)
  • Cloud Monitoring integration
  • Plugin system for custom validators and transformers
  • Team collaboration features

Made with โค๏ธ for the Google Cloud Pub/Sub community

About

Pub/Sub GUI is a modern desktop application that provides a beautiful interface for managing and monitoring Google Cloud Pub/Sub resources

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages