← All projects

Independent project · Messaging & task management

Rabbitme

Messaging infrastructure your team can actually work with.

Configure brokers, see where messages are waiting, and run background jobs from one workspace. I built Rabbitme to bring RabbitMQ, NATS, and distributed task processing together, with tenant isolation and access control built into the application.

From “is the job running?” to a clear view of the work.

A background job depends on more than application code. Messages need somewhere to go, workers need the right capabilities, and developers need to understand what happened when delivery or execution goes wrong. Rabbitme brings those operations into a shared web workspace.

I designed and built the platform across the interface, API, broker integrations, and worker protocol. The challenge was making infrastructure approachable while keeping each tenant’s resources and permissions enforced on the server.

Put developers in control

Create queues and streams, inspect messages, and manage application credentials through a consistent interface. RabbitMQ and NATS operations sit alongside the jobs that depend on them.

Make background work visible

Match tasks to capable workers, set concurrency and retry behavior, then inspect execution history and saved results. Job processing comes with the tools to understand its outcome.

Give each team its own workspace

Organization sign-in automatically provisions a workspace. Roles, scoped credentials, and server-side authorization define who can access its resources and what they can do.

A simpler interface starts with stronger boundaries.

The core design decision was to make the application responsible for access and orchestration. A Go API authorizes tenant operations against RabbitMQ and NATS, while TaskHub gives producers and workers a dedicated protocol. The Vue interface makes those capabilities available in one place.

Vue 3 & TypeScriptWeb interface
Tailwind CSS and shadcn-vue support a shared interface for messaging, task execution, and administration. Live updates use Server-Sent Events.
Go & GinApplication API
The API handles infrastructure operations and server-side tenant authorization, backed by MySQL. OAuth/OIDC sign-in provisions workspaces with administrator and member roles.
RabbitMQ & NATSMessaging infrastructure
RabbitMQ queues, exchanges, bindings, policies, and Shovels sit alongside isolated NATS accounts and JetStream streams and consumers.
TaskHubProducer and worker protocol
A WebSocket and MessagePack protocol lets external producers and workers submit and process jobs without receiving broker credentials. Capability-based matching, concurrency limits, timeouts, and retries govern execution.

Tenant isolation

Authorization is enforced on the server, with isolated workspaces and scoped messaging credentials.

Operational visibility

Live updates, broker health metrics, historical charts, activity logs, and CSV exports make infrastructure activity inspectable.

Recoverable configuration

Versioned snapshots support administrator-controlled restoration. Docker Compose environments include migrations, persistent storage, and automated NATS identity setup.

What was built

Go, Gin, Vue 3, TypeScript, Tailwind CSS, shadcn-vue, MySQL, RabbitMQ, NATS JetStream, WebSockets, MessagePack, Server-Sent Events, OAuth/OIDC, and Docker.

  • RabbitMQ management: Queue, exchange, binding, and policy management, message publishing and retrieval, connection monitoring, and message transfers through dynamic Shovels.
  • NATS integration: Isolated accounts, scoped credentials, and management of JetStream streams and consumers.
  • TaskHub: A task processing system with capability-based worker matching, configurable concurrency, timeouts, retries, execution history, and saved results.
  • Authentication and access control: OAuth/OIDC single sign-on, automatic workspace provisioning, administrator and member roles, and server-side tenant authorization.
  • Monitoring and auditing: Live interface updates, broker health metrics, historical charts, activity logs, and CSV exports.
  • Configuration recovery: Versioned configuration snapshots and administrator-controlled restoration.
  • Deployment: Docker Compose environments with database migrations, persistent storage, and automated NATS identity setup.

Infrastructure operations, delivered as a usable product.

Rabbitme connects the full workflow: sign in, enter an isolated workspace, configure messaging, connect applications, and inspect background work. Monitoring, access management, and recovery are part of that same experience.

One place to operate

RabbitMQ administration, NATS JetStream, and TaskHub share an interface, so developers can move between messaging setup and job execution with the workspace context in view.

A narrower access boundary for workers

External producers and workers use TaskHub’s WebSocket and MessagePack protocol. They can submit and process jobs without receiving credentials for the underlying broker.

Evidence when something needs attention

Execution history and saved results explain what happened to a task. Broker metrics, historical charts, and activity logs help investigate the infrastructure around it.

A path back from configuration changes

Versioned snapshots give administrators a controlled restoration workflow. Deployment includes migrations, persistent storage, and NATS identity setup.

This project brings together the work I care about: designing distributed systems, enforcing security boundaries, and turning operational complexity into software people can use.

Building a platform your team needs to operate?

Rabbitme shows how I approach infrastructure products, from backend boundaries to the daily developer workflow. If your team faces a similar challenge, let’s talk.

Have something in mind?

Let's make it work.

[email protected]