• OPENDEV HUB V1.0• API STATUS: 100% OPERATIONAL• CLIENT ENGINE: LOADED & CACHED• TRENDING TECH: TAILWIND V4, NEXT.JS 16, RUST, GO• ZERO AUTH REQUIRED
OPENDEVHUB

Command Palette

Search for a command to run...

DEVELOPER RELEASES

DEVELOPER NEWS STREAM

Direct logs, engine updates, and framework notifications parsed from curated RSS feeds and announcements, updated hourly.

I Built a Tiny Database in Go to Understand How Real Ones Work
go2026-05-01
Yussuf AjaoYussuf Ajao

I Built a Tiny Database in Go to Understand How Real Ones Work

Most backend tutorials stop at the same point: put some data in a map, wrap it in an HTTP handler,...

Authenticating CLI Tools With Descope
cli2026-05-01
Mrunank PawarMrunank Pawar

Authenticating CLI Tools With Descope

This blog was originally published on Descope. Need to add authentication to your command-line tool?...

Application Service vs Domain Service in Go: Two Layers, Different Jobs
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Application Service vs Domain Service in Go: Two Layers, Different Jobs

Two layers, two jobs. Application services orchestrate use cases; domain services hold cross-aggregate rules. Mixing them is where Go hex services rot.

The Anaemic Domain Model in Go: 5 Anti-Patterns and Their Cures
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

The Anaemic Domain Model in Go: 5 Anti-Patterns and Their Cures

If your structs are public-field bags and your services do all the thinking, you wrote a procedural program in a domain shape. Here are the 5 smells and the fix for each.

Saga Orchestration in Go: A State Machine for Multi-Service Workflows
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Saga Orchestration in Go: A State Machine for Multi-Service Workflows

Make a multi-service order flow survive crashes. A Go state machine, compensation per step, idempotency keys, and Postgres-backed resumes.

Aggregate Identity in Go: UUID v7, ULID, or Snowflake?
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Aggregate Identity in Go: UUID v7, ULID, or Snowflake?

Picking the right ID for your DDD aggregate roots in Go. UUID v4, v7, ULID, Snowflake — sortability, distribution, B-tree friendliness, decision rule.

Specifications in Go: Composable Query Predicates Without an ORM Leak
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Specifications in Go: Composable Query Predicates Without an ORM Leak

Predicate objects you can AND, OR, and NOT in domain terms — translated to SQL at the edge. The Specification pattern, in idiomatic Go.

Type-Driven Domain Design in Go: Encoding Invariants at Compile Time
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Type-Driven Domain Design in Go: Encoding Invariants at Compile Time

Make invalid states unrepresentable. Three Go patterns that turn runtime bugs into compile errors: parse-don't-validate, states-as-types, phantom types.

Domain Model vs Persistence Model: The Mapper Layer in Go
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Domain Model vs Persistence Model: The Mapper Layer in Go

One Order aggregate with behaviour, one OrderRow flat enough to scan into. The mapper between them is what keeps the seam honest.

The Anti-Corruption Layer for a Legacy Database You Cannot Replace
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

The Anti-Corruption Layer for a Legacy Database You Cannot Replace

You inherited a 2003 ERP schema with tflag1, dt_cre, and customer_v2. An ACL adapter keeps your fresh Go domain clean while the old DB stays put.

The Dependency Rule, Written as a CI Check in Go
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

The Dependency Rule, Written as a CI Check in Go

Stop trusting code review to enforce hexagonal boundaries. Three ways to fail the build when domain imports infra.

Functional Core, Imperative Shell in Go: Where Side Effects Belong
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Functional Core, Imperative Shell in Go: Where Side Effects Belong

Pure pricing in the middle, dirty I/O at the edges. The Go split that makes domain tests run in microseconds and integration tests rare.

Errors as Domain Concepts: Typed Errors That Carry Meaning in Go
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Errors as Domain Concepts: Typed Errors That Carry Meaning in Go

Domain errors deserve their own types. Infra errors stop at the adapter. Here is the pattern that keeps your Go domain honest.

Bounded Contexts in a Go Monorepo: How `internal/` Becomes the Boundary
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Bounded Contexts in a Go Monorepo: How `internal/` Becomes the Boundary

Go's internal/ package mechanic refuses cross-context imports at build time. Use it to enforce DDD bounded contexts in a monorepo without a single linter rule.

Event Sourcing in Go: An Append-Only Store and a 200-Line Replay
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

Event Sourcing in Go: An Append-Only Store and a 200-Line Replay

Events are the source of truth, current state is a fold over events. The whole pattern fits in 200 lines of Go — append, replay, snapshot.

CQRS in Go Without a Framework: Separate Read and Write Paths
go2026-05-01
Gabriel AnhaiaGabriel Anhaia

CQRS in Go Without a Framework: Separate Read and Write Paths

CQRS is two paths through one service: a write side that protects invariants and a read side that answers queries fast, in plain Go.