keel

package module
v0.0.0-...-99f4f86 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 18, 2026 License: MIT Imports: 1 Imported by: 0

README

Keel

Scaffold production-grade fintech backends.

Keel generates the structure and the system-design patterns a payments backend needs from day one — idempotency, a double-entry ledger, rate limiting, webhook verification, security hardening — as idiomatic, editable code you fully own. No runtime dependency, no framework, no lock-in. When generation finishes, Keel is gone and you have a plain Go or TypeScript service.

Status: early development. The architecture is settled; the engine is being built in the open. See docs/architecture.md.

Why

Payments backends re-solve the same problems, and the failure modes are expensive: money stored as floats, ledgers that don't balance, retries that double-charge, webhooks that trust unsigned payloads. The correct patterns are well understood by people who've shipped payments and unknown to everyone else. Keel encodes them so a team starts from a correct foundation instead of reconstructing one under a deadline.

How it works

Keel is a single Go binary. You pick a language and a set of modules; it resolves their dependencies and generates a coherent project.

keel init myservice --lang go --modules idempotency,ratelimit,ledger

Each module is a self-contained pattern with per-language implementations. Modules declare their dependencies and conflicts in a manifest, so the generated project is composed, not copied — the pieces fit together and compile.

Design principles

  • Generated code is owned code. Idiomatic, dependency-light, maintainable as if you wrote it.
  • Correctness in the money path is not optional. Integer minor units, append-only ledger, idempotency keys, pessimistic locking — defaults, not features to remember.
  • Composition over configuration. Small modules with explicit dependencies.
  • Language parity is a contract. A module means the same thing in every language it supports.

Contributing

Keel is MIT licensed. Module contributions are the highest-leverage way to help once the engine lands; the manifest format and authoring guide are documented in docs/.

License

MIT

Documentation

Overview

Package keel embeds keel's built-in module catalog. This is the only place it can live: go:embed cannot reach a directory outside its own package's tree, and modules/ sits at the repo root alongside this file.

Index

Constants

This section is empty.

Variables

View Source
var Modules embed.FS

Modules is the embedded catalog of every module Keel ships, rooted at the modules/ directory. Consumers typically need fs.Sub(Modules, "modules") to get an fs.FS rooted correctly for catalog.LoadCatalog, since go:embed preserves the embedded directory's own name as a path component rather than flattening it.

Functions

This section is empty.

Types

This section is empty.

Directories

Path Synopsis
internal
buildinfo
Package buildinfo exposes build-time version information.
Package buildinfo exposes build-time version information.
catalog
Package catalog loads a resolver.Catalog from a filesystem of module.yaml manifests — the embedded modules/ tree in the compiled keel binary, or a test fixture in an fstest.MapFS.
Package catalog loads a resolver.Catalog from a filesystem of module.yaml manifests — the embedded modules/ tree in the compiled keel binary, or a test fixture in an fstest.MapFS.
cli
Package cli implements the keel command-line interface.
Package cli implements the keel command-line interface.
manifest
Package manifest loads and validates module.yaml manifests into typed structs.
Package manifest loads and validates module.yaml manifests into typed structs.
renderer
Package renderer executes a resolver.Plan's templates into a target directory.
Package renderer executes a resolver.Plan's templates into a target directory.
resolver
Package resolver expands a requested module set into a deterministic, dependency-ordered build plan.
Package resolver expands a requested module set into a deterministic, dependency-ordered build plan.
state
Package state reads and writes .keel/state.json, the record of which modules keel init (and later keel add) selected for a generated project.
Package state reads and writes .keel/state.json, the record of which modules keel init (and later keel add) selected for a generated project.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL