gitmyhub

Traceflow

Python ★ 0 updated 10d ago

A self-hosted web console for browsing and managing Redis, RabbitMQ, Kafka, MongoDB, and NATS from one FastAPI and Next.js app instead of separate CLI tools.

PythonFastAPINext.jsReactMongoDBRedisKafkasetup: moderatecomplexity 4/5

TraceFlow is a self-hosted web console for looking at and managing the infrastructure services a backend often depends on, things like message queues, databases, and streaming systems. Instead of switching between separate command line tools for each one, it puts Redis, RabbitMQ, Kafka, MongoDB, and NATS behind a single browser based interface.

The project is split into two pieces. A FastAPI backend written in Python exposes a REST and WebSocket API for each supported service through its own connector, and a Next.js frontend gives you data browsers, management screens, and dashboards on top of that API. Each service gets its own manager screen: Redis supports browsing keys, editing all its data types, watching live pub or sub messages, and managing expiration times. RabbitMQ lets you list and inspect queues and peek at messages. Kafka shows topics and lets you consume messages. MongoDB has a full database and collection browser with create, read, update, and delete, an aggregation pipeline builder, index management, and file storage support. NATS shows streams and JetStream details.

To run it locally, Docker and Docker Compose start the five backing services, then the Python backend and the Next.js frontend are started separately with their own install and dev commands. Once both are running, you connect each service by entering its connection URL in a settings screen, and each service page includes a button to seed realistic demo data such as sample users, products, and queue messages, which is useful for trying the tool out.

The backend depends on async Python clients for Redis, RabbitMQ, Kafka, and MongoDB, plus Pydantic for validation. The frontend uses React, Tailwind CSS, Zustand for state, and Monaco for JSON editing. The README does not state a license.

Where it fits