Introduction
What is Fountain?
Fountain is a comprehensive Go framework and library for building production-grade distributed systems and microservices. It provides a unified abstraction layer over multiple protocols, databases, message brokers, and cloud services, letting you build, run, and monitor multi-protocol applications with minimal boilerplate. A single Fountain instance orchestrates servers, background jobs, cron tasks, and one-shot invokers under one consistent lifecycle.
When to use it
Reach for Fountain when an application needs to combine several of the following concerns behind one cohesive runtime:
- Multi-protocol servers — HTTP (via Fiber), gRPC, TCP, UDP and QUIC hosted in a single application.
- Unified lifecycle management — servers, background jobs, cron tasks, and one-shot invokers.
- Databases and caches — PostgreSQL, MySQL, MongoDB, Redis, Cassandra, Elasticsearch and S3, plus in-memory, LRU, LFU and ARC caches.
- Message brokers — NATS, RabbitMQ, Kafka and MQTT.
- Service discovery — Consul, ETCD and Kubernetes.
- Observability — OpenTelemetry tracing, Prometheus metrics, and structured logging.
- Resilience patterns — circuit breakers, rate limiting, retries and backoff.
- Authentication — JWT, OAuth2, Firebase and social auth.
How the docs are organized
- Getting Started — install Fountain and bring up your first service.
- Core Concepts — the lifecycle, runnables, and controller model.
- Building a Service — assemble a real service from Fountain's building blocks.
- ftkit CLI — scaffold and verify standards-compliant services.
- API Reference — package-level reference for the framework and its libraries.
Module & versions
Fountain is published as the Go module gitlab.soludian.com/soludian/fountain and targets Go 1.25.4 (per go.mod). It is proprietary software, licensed by Soludian Technology Solution Co., Ltd.