A multi-tenant SaaS starter on NestJS: microservices behind Apollo Federation, CQRS backed by EventStoreDB, tenant resolution, billing and authentication already wired to each other. I wrote it because I kept rebuilding the same first two weeks of every project, and it is still the repository most people know me from.
TypeScript★ 2899↗Event sourcingA NestJS CQRS module that speaks to EventStoreDB, with persistent subscriptions, catch-up subscriptions, and the plumbing that makes @nestjs/cqrs durable. Pulled out of Ultimate Backend once people started asking for only that part.
TypeScript★ 205↗MicroservicesA first attempt at a microservice framework in Rust. I stopped after about a year: the ergonomics I wanted needed language features that were not there yet, and the type signatures had stopped being readable by the people the framework was for.
Rust★ 35↗MicroservicesThe second attempt, with better instincts. North got the lifecycle model right and the ergonomics wrong. Both lessons went into Forge, which is why Forge’s startup is an inspectable graph rather than an init function.
Rust★ 17↗Server-rendered UIServer-rendered UI for Go, built on templ with a templui component set and Tailwind. Alpine and HTMX helpers where you need interactivity, an esbuild and Tailwind asset pipeline with fingerprinting, a Go-to-JavaScript RPC bridge, and about 1,600 Lucide icons. Bastion’s dashboard is written in it.
Go★ 8↗Go frameworkAn opinionated Go framework: DI container, router, layered config, health checks, migrations and ordered shutdown, plus around twenty extensions you switch on when you need them: Postgres and Mongo, Kafka, MQTT, gRPC, GraphQL, WebRTC, Raft consensus, MCP. `forge init` scaffolds, `forge dev` hot-reloads. Everything else at xraph is built on it.
Go★ 7↗ProtocolThe manifest format Octopus and Bastion consume. A service describes its own API surface across OpenAPI, AsyncAPI, gRPC, GraphQL, oRPC, Thrift and Avro, along with health and capability hints, and publishes it through Consul, etcd, Kubernetes, Redis or mDNS. FARP is the spec and the Go library. It deliberately does no routing itself.
Go★ 4↗Instance lifecycleProvisions and manages per-tenant instances on whatever you already run: Docker, Kubernetes, ECS or Fly. Rolling, blue-green and canary strategies, health checks over HTTP, TCP, gRPC or a command, custom domains and certificates, per-tenant quotas, and an audit trail of every action.
Go★ 1↗Durable executionBackground jobs, durable workflows and leader-elected cron as a library you import rather than a service you operate. Workflow steps checkpoint, so a worker that dies mid-run resumes where it stopped instead of starting over. Exhausted retries land in a dead-letter queue you can inspect and replay.
Go★ 1↗Dependency injectionThe DI container underneath Forge, extracted so it can be used on its own. Generic type-safe resolution, uber/dig-style constructor injection, singleton, transient and request-scoped lifetimes, circular-dependency detection, and Start/Stop/Health on every registered service.
Go★ 0↗ConfigurationConfig loading that stays out of the way: files, environment variables, Consul and Kubernetes ConfigMaps, typed getters with defaults, struct binding with a `default` tag, and hot reload on file change. Auto-discovery walks up from a nested service directory until it finds the repo’s config, which matters in a monorepo.
Go★ 0↗HTTP routerA Go router with typed handlers. Declare the request struct and you get path, query and body binding, validation, and an OpenAPI 3 document generated from the same types. WebSocket and SSE routes produce AsyncAPI. Forge’s router grew out of it.
Go★ 0↗WebhooksWebhook delivery as a library. Event types register at runtime with an optional JSON Schema, every delivery is signed with HMAC-SHA256, retries back off from five seconds to two hours, and anything that still fails waits in the DLQ until the customer fixes their endpoint and you replay it.
Go★ 0↗Gateway extensionThe same idea as Octopus, but as a Forge extension for teams who want the gateway inside their own Go process. HTTP, WebSocket, SSE and gRPC proxying, per-target circuit breakers, traffic splitting for canary and shadow releases, and an admin dashboard written in ForgeUI.
Go★ 0↗API gatewayA gateway in Rust that builds its own routing table. Services publish a FARP manifest carrying their OpenAPI, gRPC and GraphQL schemas; Octopus finds them over mDNS, Consul, Kubernetes or DNS and derives routes as instances appear and disappear. Static config works too, and the two modes run side by side.
Rust★ 0↗How a service declares its own API surface across seven schema formats, with health and capability hints, so that a gateway derives its routing table as a pure function of the manifests it can see. Includes conformance requirements and the costs of putting discovery on the routing path. Two implementations consume it, though both share one author.
FARPOctopusBastionTwo abandoned Rust frameworks, examined for the same failure: an abstraction that re-exports its decisions as type parameters has not hidden them. Proposes counting empty interface implementations as a measurable design signal.
Ultimate (Rust)NorthForgeOrdering expressed as a sequence of statements is correct by accident and drifts under maintenance. Deriving start order from declared dependencies makes boot failures nameable, makes shutdown correct for free, and makes the ordering inspectable at runtime.
NorthForgeVesselIn every cross-tenant disclosure the author has examined, the cause was one query missing one predicate. This note argues the boundary must be enforced by the storage engine rather than the application, and gives a test whose failure means the boundary is not where you believe it is.
Ultimate BackendFabriq