A standalone course · Catch up on this repo + interview prep

The "v2" architecture — Hexagonal + CQRS + sqlc

The shape all new code is written in: ports & adapters, commands & queries, and typed SQL — taught on the modules you own, honestly, including where the repo bends the rules.

Your services — conversationmgmt, notification, spike — were rebuilt on "v2": a hexagonal module (ports & adapters), a CQRS split of commands and queries, and — in eureka — sqlc to generate type-safe SQL. This course teaches each pattern from the canon (Cockburn, Fowler, sqlc, Three Dots Labs), then how this repo actually applies it, landing every idea on a real file:line in code you own.

How to use this Do one lesson, take its quiz from memory (no peeking), then skim the matching row of the cheat sheet. Come back a day later and re-take it — spacing beats cramming. You know the rhythm by now. Stuck? Ask me — I'm your teacher, not just the author.
The one thing that'll surprise you This repo does pragmatic v2, not textbook v2 — and the imperfections are the best lessons. CQRS with no bus. sqlc in eureka only (and only partially there). A core that leaks into infrastructure in one of your own services. You'll learn the ideal, then learn exactly where the code bends it, and why. Honesty is the whole method here.

Part 1 — Hexagonal: the shape of a v2 module available now

Ports, adapters, the domain layer — and spotting a real leak in your own code.

1 · The v2 map

v1 vs v2, the layers, the pattern matrix, and the naming split across services.

ready

2 · Ports & adapters

Cockburn's core idea: interface = port, impl = adapter, and the purity rule.

ready

3 · The domain layer & DTO boundary

Pure domain, model vs dto, and the pgtype leak.

ready

4 · Spot the leak

conversationmgmt's core imports infrastructure — read your own hexagon critically.

ready

Part 2 — CQRS: commands, queries & the read/write split available now

Separate the write model from the read model — the honest, bus-free version.

5 · CQRS & Fowler's caveat

Write vs read models, and why there's no bus here.

ready

6 · Command handlers

The write side: one op per handler, ExecInTx, DB per call.

ready

7 · Queries & the read/write split

Read via sqlc directly; write only through a port.

ready

8 · Wiring without a bus

Inline interfaces, the composition root, no mediator.

ready

Part 3 — sqlc: typed SQL + the synthesis available now

Borrowing eureka (the only sqlc user) — then putting all three patterns together.

9 · sqlc & this repo's config

Write SQL, generate Go; two mechanisms; the WASM plugin.

ready

10 · The Querier & the adapter

Querier injection, constructor-not-literal, the hybrid.

ready

11 · sqlc in the hexagon

assessment end-to-end: read direct, write via port.

ready

12 · The whole picture

Migration, the module ladder, when sqlc pays — and the recap.

ready

Reference shelf

Cheat sheet

The module skeleton, the dependency rule, the read/write rule, the sqlc flow.

Glossary

The canonical vocabulary, mapped to interview terms.

Repo v2 map

Ground truth: where each pattern lives, with file:line.

Resources

Cockburn, Fowler, docs.sqlc.dev, Three Dots Labs — high-trust only.

All 12 lessons are built — the course is complete. You can now open any v2 module and name its layers, its ports and adapters, its command/query split, and its leaks — and explain hexagonal, CQRS, and sqlc from both the canon and your own code. The one thing left is a retention check — ask me to run a cold mock interview across the course (no peeking) and I'll write the first learning records proving what stuck. Questions on any lesson? Ask me — that's what I'm here for.