Capabilities Matrix
Architectures
Section titled “Architectures”| Architecture | Structure | Best For | Languages |
|---|---|---|---|
| Hexagonal | domain/ → port/ → service/ → adapter/ | Production APIs, microservices | Go, TS |
| Layered | handler/ → service/ → repository/ → model/ | Standard CRUD APIs | Go |
| Clean | entity/ → usecase/ → interface/ → infrastructure/ | Complex business logic | Go |
| Flat | Single package | CLIs, scripts, prototypes | Go, TS |
Service Capabilities
Section titled “Service Capabilities”Transport & API
Section titled “Transport & API”| Capability | What You Get | Languages |
|---|---|---|
http-api | HTTP router, middleware, error handling (Chi in Go, Express/Fastify/Hono in TypeScript) | Go, TS |
grpc | Protocol Buffers, buf tooling, interceptors | Go |
graphql | gqlgen config, schema, resolver scaffolding, playground | Go |
websocket | WebSocket upgrader, connection management | Go |
sse | SSE handler, event formatting, heartbeat support | Go |
bff | Service aggregation, response shaping, backend abstractions | Go |
cors | CORS middleware, configurable origins/methods/headers | Go, TS |
rate-limiting | Token bucket limiter, per-endpoint config | Go, TS |
timeout | Timeout middleware, per-route timeouts, context cancellation | Go, TS |
api-versioning | Header/path-based versioning strategies | Go |
Data & Storage
Section titled “Data & Storage”| Capability | What You Get | Languages |
|---|---|---|
postgres | Connection pool, health checks, repository scaffold (pgx in Go, Prisma or Drizzle in TypeScript) | Go, TS |
mysql | Connection pooling, health checks, repository scaffold (database/sql in Go, Prisma or Drizzle in TypeScript) | Go, TS |
squirrel | Fluent SQL query builder, dynamic WHERE clauses, complex joins | Go |
sqlc | Type-safe database access from SQL files, compile-time query validation | Go |
mongodb | Client connection, collection abstractions (official driver in Go, Mongoose in TypeScript) | Go, TS |
sqlite | Embedded SQLite, query helpers (modernc.org in Go, better-sqlite3 in TypeScript) | Go, TS |
dynamodb | DynamoDB client, table operations, query builders | Go |
redis | Connection management, repository pattern (go-redis in Go, ioredis in TypeScript) | Go, TS |
elasticsearch | Client setup, index management, search query builders | Go |
s3 | S3 client, upload/download, presigned URLs, multipart upload | Go |
migrations | Migration runner, version tracking (golang-migrate in Go, Prisma Migrate in TypeScript) | Go, TS |
repository | Repository interface, base CRUD (Go generics in Go, abstract PrismaBaseRepository in TypeScript) | Go, TS |
Messaging & Events
Section titled “Messaging & Events”| Capability | What You Get | Languages |
|---|---|---|
kafka-consumer | Consumer group, handler pattern, graceful drain | Go, TS |
nats | NATS + JetStream, publisher/subscriber, durable consumers | Go |
event-bus | In-process event publisher, subscriber interface, async dispatch | Go, TS |
outbox | Transactional outbox, relay worker, at-least-once delivery | Go, TS |
saga | Saga orchestrator, step executor, compensation logic | Go |
worker | Worker pool, job interface, graceful shutdown | Go, TS |
Resilience & Security
Section titled “Resilience & Security”Resilience
Section titled “Resilience”| Capability | What You Get | Languages |
|---|---|---|
circuit-breaker | Open/half-open/closed states, configurable thresholds | Go, TS |
retry | Exponential backoff with jitter, max attempts | Go, TS |
bulkhead | Semaphore concurrency limiter, timeout support | Go |
idempotency | Idempotency keys, duplicate detection | Go, TS |
graceful | Signal handling, ordered shutdown, component registration | Go, TS |
Security
Section titled “Security”| Capability | What You Get | Languages |
|---|---|---|
auth-jwt | JWT middleware, claims extraction, route-level auth | Go, TS |
oauth2 | OAuth2 flows, token exchange, session management | Go |
encryption | AES-256-GCM encrypt/decrypt, key management helpers | Go, TS |
multi-tenancy | Tenant middleware, context propagation, query scoping | Go |
request-id | Request ID middleware, context propagation, log correlation | Go, TS |
Observability
Section titled “Observability”| Capability | What You Get | Languages |
|---|---|---|
health | /health + /ready endpoints, component registration | Go, TS |
observability | OpenTelemetry traces + metrics, OTLP/gRPC export | Go, TS |
audit-log | Structured audit events, configurable retention | Go, TS |
http-client | Resilient HTTP client with retry + observability | Go, TS |
UI & Communication
Section titled “UI & Communication”UI & Templating
Section titled “UI & Templating”| Capability | What You Get | Languages |
|---|---|---|
templ | Type-safe HTML templating, layout components, hot reload | Go |
htmx | HTMX response helpers, partial rendering, swap config | Go |
static-assets | Embedded file server, cache-control headers | Go |
i18n | Message catalogs (YAML), locale middleware, context propagation | Go |
Email & Notifications
Section titled “Email & Notifications”| Capability | What You Get | Languages |
|---|---|---|
email-gateway | Email gateway interface, provider abstraction, templates | Go, TS |
mailpit | Local SMTP testing, Docker service (Web UI :8025) | Go |
Application & DevOps
Section titled “Application & DevOps”Application Core
Section titled “Application Core”| Capability | What You Get | Languages |
|---|---|---|
platform | Config, lifecycle, slog logging, PII redaction, live reload | Go, TS |
bootstrap | Thin main.go + wiring in internal/bootstrap/ | Go, TS |
validation | Input validation rules, error formatting | Go |
uuid | UUIDv7 generation, type-safe ID wrappers | Go, TS |
Architecture Patterns
Section titled “Architecture Patterns”| Capability | What You Get | Languages |
|---|---|---|
cqrs | Command/query bus, handler interfaces, read/write separation | Go, TS |
ddd | AggregateRoot, ValueObject, DomainEvent base types | Go |
Feature Management
Section titled “Feature Management”| Capability | What You Get | Languages |
|---|---|---|
feature-flags | Flag evaluator, YAML-based definitions, context-aware eval | Go |
scheduler | Cron-like scheduler, job registration, configurable intervals | Go, TS |
Development & DevOps
Section titled “Development & DevOps”| Capability | What You Get | Languages |
|---|---|---|
docker | docker-compose.yml, .env.example | Go, TS |
devcontainer | VS Code Dev Container, Docker config, extension recs | Go, TS |
ci-github | Issue templates, PR template | Go, TS |
ci-gitlab | .gitlab-ci.yml with build/test/lint/deploy stages | Go |
ci-bitbucket | bitbucket-pipelines.yml with build/test/deploy steps | Go |
makefile | Build, test, lint, run, clean targets | Go, TS |
linting | Curated linter config (golangci-lint in Go, ESLint + Prettier in TypeScript) | Go, TS |
testing | Test helpers, example table-driven tests, fixtures pattern | Go, TS |
pre-commit | Pre-commit hooks for format, lint, test | Go, TS |
Conflicts
Section titled “Conflicts”Some capabilities cannot coexist:
| Capability | Conflicts With | Reason |
|---|---|---|
graceful | platform | Platform includes its own shutdown manager |
ci-gitlab | ci-github | One CI system per project |
Smart Suggestions
Section titled “Smart Suggestions”When you select capabilities, verikt suggests what you might be missing:
| If you select… | verikt suggests… | Why |
|---|---|---|
| Any transport capability | platform | Config, logging, lifecycle management |
platform | bootstrap | Testable wiring with thin main.go |
http-api | rate-limiting, auth-jwt, cors, health | API security and reliability |
mysql, postgres | migrations, docker | Schema management and local dev |
mysql, redis, postgres | docker | Local dev with dependencies |
| Any transport | ci-github, linting | Code quality and CI/CD |
email-gateway | i18n, mailpit | Translations and local testing |
Example Compositions
Section titled “Example Compositions”# Full production APIverikt new my-api \ --language go \ --arch hexagonal \ --cap platform,bootstrap,http-api,postgres,migrations,auth-jwt,rate-limiting,cors,health,docker,linting,ci-github
# gRPC microserviceverikt new my-grpc \ --language go \ --arch hexagonal \ --cap platform,bootstrap,grpc,redis,docker,linting
# Event-driven workerverikt new my-worker \ --language go \ --arch hexagonal \ --cap platform,bootstrap,kafka-consumer,postgres,migrations,outbox,docker
# Full-stack web app (server-rendered)verikt new my-app \ --language go \ --arch layered \ --cap platform,bootstrap,http-api,postgres,templ,htmx,static-assets,docker
# Resilient API gatewayverikt new my-gateway \ --language go \ --arch hexagonal \ --cap platform,bootstrap,http-api,bff,circuit-breaker,retry,cors,health,docker
# Simple CLI toolverikt new my-cli --language go --arch flat