A communication stack for asynchronous and event-driven backend applications
and AI systems.
Reduce chaos to zero in your Kafka/AMQP/MQTT/Webhook-based services and architectures
Features β’ Quick Start β’ Installation β’ API Docs β’ Contributing
Fusioncat is a solution for managing the complexity of distributed systems and asynchronous messaging. It helps engineering teams design, develop, deploy, and monitor backend services that communicate via Kafka, AMQP, MQTT, or Webhooks.
π Engineering flow with Fusioncat
- Design β The team defines system architecture using Fusioncatβs visual tools or Fusionlang.
- Decompose β Fusioncat breaks the design into components and schemas.
- Generate β Fusioncat produces boilerplate code for cross-service communications and injects it into the codebase
- Deploy β The team ships services to production.
- Monitor β Fusioncat validates and monitors data flows through the generated code.
- Evolve β The team iterates on the design, and Fusioncat automatically updates the codebase.
- π― Reduce Integration Complexity: Engineering teams spend ~30% of their time designing, building, deploying, and maintaining cross-software asynchronous communications. Fusioncat dramatically reduces this overhead.
-
- π― Documentation first: Fusionlang enables teams to define their architecture in a human-readable format, which is then used to automatically generate code and documentation.
- β‘ 3X Faster Onboarding: New team members can understand and contribute to complex systems in days, not weeks
- π‘οΈ Prevent Production Outages: Manage data contract compatibility and catch breaking changes before deployment
- π Protocol Agnostic: Seamlessly work with Kafka, RabbitMQ, MQTT, and webhooks from a single platform. Define data contracts using yor preferred schema format (JSON Schema, Protocol Buffers, Avro).
-
π Multi-Protocol Support
- Apache Kafka
- RabbitMQ (AMQP)
- MQTT
- Webhooks
- Database events (coming soon)
-
π Built-in Schema Management
- JSON Schema (Protocol Buffers, Avro coming soon)
- Schema versioning,
- Code generation for multiple languages (currently supports Go, other languages coming soon)
-
ποΈ Code Generation
- Generate boilerplate code for messaging clients
- Type-safe message contracts
- Ready-to-use code snippets for common operations.
-
π¨ Visual Design Tools (coming soon)
- Map complex system relationships
- Visualize data flows
- Collaborate with team members
- Export architecture diagrams
-
π Enterprise Ready
- Self-hosted open source solution.
- Control the code.
- Safety: Fusioncat doesn't have any access to your data.
Fusioncat is packaged into a Docker container for easy deployment. External PostgreSQL database is required.
# Pull the latest image
docker pull ghcr.io/fusioncatltd/fusioncat:latest
# Run with environment variables
docker run -d \
--name fusioncat \
-p 8080:8080 \
-e PG_HOST=your-postgres-host \
-e PG_PORT=5432 \
-e PG_USER=your-db-user \
-e PG_PASSWORD=your-db-password \
-e PG_DB_NAME=fusioncat \
-e JWT_SECRET=your-secret-key \
ghcr.io/fusioncatltd/fusioncat:latestcurl http://localhost:8080/health- PostgreSQL 13+ database
- Docker (for containerized deployment)
- Go 1.23+ (for local development)
Create a docker-compose.yml:
version: '3.8'
services:
fusioncat:
image: ghcr.io/fusioncatltd/fusioncat:latest
ports:
- "8080:8080"
environment:
PG_HOST: postgres
PG_PORT: 5432
PG_USER: fusioncat
PG_PASSWORD: ${DB_PASSWORD}
PG_DB_NAME: fusioncat
JWT_SECRET: ${JWT_SECRET}
depends_on:
- postgres
postgres:
image: postgres:15-alpine
environment:
POSTGRES_USER: fusioncat
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: fusioncat
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
postgres_data:Run with:
export DB_PASSWORD=your-secure-password
export JWT_SECRET=your-jwt-secret
docker-compose up -d# Clone the repository
git clone https://github.com/fusioncatltd/fusioncat.git
cd fusioncat
# Copy environment template
cp .env.template .env
# Edit .env with your configuration
# Run locally
make run
# Or build Docker image
make docker-build| Variable | Description | Default | Required |
|---|---|---|---|
PG_HOST |
PostgreSQL host | localhost | Yes |
PG_PORT |
PostgreSQL port | 5432 | Yes |
PG_USER |
Database user | - | Yes |
PG_PASSWORD |
Database password | - | Yes |
PG_DB_NAME |
Database name | fusioncat | Yes |
PG_SSLMODE |
SSL mode for PostgreSQL | require | No |
JWT_SECRET |
Secret key for JWT tokens | - | Yes |
ADMIN_URL |
Admin panel URL | http://localhost:3000 | No |
PATH_TO_STUBS_TEMPLATES_FOLDER |
Code generation templates path | /app/templates | No |
JSON_SCHEMA_CONVERTOR_CMD |
Path to quicktype binary | /usr/bin/quicktype | No |
The API documentation is available at:
http://localhost:8080/swagger/index.html
# Create a user
curl -X POST http://localhost:8080/v1/public/users \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "securepassword"
}'
# Create a project
curl -X POST http://localhost:8080/v1/protected/projects \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "My Project",
"description": "Project description"
}'-
Authentication
POST /v1/public/users- Register new userPOST /v1/public/auth/login- Login
-
Projects
GET /v1/protected/projects- List projectsPOST /v1/protected/projects- Create projectPOST /v1/protected/projects/:id/imports- Import AsyncAPI specification
-
Apps & Services
GET /v1/protected/apps/:id/usage- Get app usage matrixGET /v1/protected/apps/:id/code/:language- Generate code
-
Schemas
POST /v1/protected/schemas- Create schemaGET /v1/protected/schemas/:id/code/:language- Generate schema code
- Go 1.23+
- Node.js 18+ (for quicktype)
- PostgreSQL 13+
- Make
# Install dependencies
go mod download
npm install -g quicktype
# Run tests
make test
# Run with hot reload
go install github.com/cosmtrek/air@latest
airfusioncat/
βββ api/ # HTTP API handlers
β βββ protected_endpoints/
β βββ public_endpoints/
βββ logic/ # Business logic
βββ db/ # Database models and connections
βββ templates/ # Code generation templates
βββ deploy/ # Deployment configurations
βββ migrations/ # Database migrations
βββ tests/ # Test suites
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Run tests
make test
# Check code formatting
go fmt ./...
# Update Swagger docs
swag init
# Test Docker build
make docker-testThis project is licensed under the MIT License - see the LICENSE file for details.
- Documentation: https://fusioncat.dev/docs
- Website: https://fusioncat.dev
- Email: andrey@fusioncat.dev
- Issues: GitHub Issues
- Schema management with versioning
- Code generation for Golang
- Docker container distribution
- Multi-protocol support (Kafka, AMQP, MQTT). Currently tested on Kafka.
- Multi-language code generation. Currently supports Golang.
- Real-time monitoring dashboard for tracking and analyzing data flows and events.
- Built with Gin Web Framework
- Schema conversion powered by Quicktype
- AsyncAPI specification support
Fusioncat is currently in closed alpha.