Go tools forged for speed, clarity, and confidence.
Documentation · Application toolkit · All projects
GoForj is a composable stack for building Go applications, with focused libraries for everyday code, HTTP, background work, and infrastructure. The forj CLI brings them together in generated projects with explicit wiring and app-owned source.
Use the standalone libraries in an existing Go application, or start a GoForj project to build APIs, workers, scheduled jobs, command-line tools, and web apps.
| Library | What it helps you build |
|---|---|
| collection | Typed, fluent slice pipelines for mapping, filtering, sorting, grouping, and reducing. |
| str | Immutable string transformations, Unicode-aware helpers, matching, and inflection. |
| env | Typed environment configuration with dotenv loading, scoped keys, fallbacks, and required-value checks. |
| crypt | Authenticated encryption for application payloads, with key rotation and compatibility with earlier payload formats. |
| godump | Readable dumps and diffs of Go values, with terminal and HTML output, cycle handling, and field redaction. |
| Library | What it helps you build |
|---|---|
| web | HTTP handlers, routing, middleware, WebSockets, and handler tests through focused contracts and an Echo adapter. |
| httpx | Fluent HTTP clients with typed responses, authentication, retries, and request diagnostics, built on req. |
| console | CLI output with semantic messages, tables, trees, interactive prompts, loaders, and progress indicators. |
| execx | Subprocess workflows with explicit arguments, streaming output, typed decoding, and TTY support. |
| metrics | Application instrumentation with counters, gauges, histograms, snapshots, and Prometheus text output, using only the standard library. |
| Library | What it helps you build |
|---|---|
| queue | Background jobs with pluggable backends, workers, retries, delayed jobs, uniqueness, chains, and batches. |
| events | Typed event publication and fan-out, in-process or through distributed pub/sub drivers such as NATS, Redis, Kafka, and Google Pub/Sub. |
| scheduler | Fluent cron, interval, and calendar schedules with filters, lifecycle hooks, and overlap protection. |
| cache | Local, distributed, and SQL-backed caching with typed helpers, locks, counters, and rate limits. |
| storage | One file-storage API for local disks, S3, Google Cloud Storage, Redis, SFTP, FTP, and rclone remotes. |
| Fluent email composition with delivery drivers for SMTP, SES, Resend, Postmark, Mailgun, and SendGrid. |
| Project | What it provides |
|---|---|
| goforj | The application stack and forj CLI: project creation, component wiring, Vue/React/templ + htmx starters, and a local development workflow. |
| wire | Compile-time dependency injection with generation caching, watch mode, and go tool support. Maintained fork of Google Wire, usable in any Go project. |
| atlas | Project guidance, skills, and MCP tools that help coding agents inspect and navigate GoForj applications. |
- Explicit by default. Configuration and behavior stay visible and auditable.
- Composable by design. Small packages expose narrow APIs and avoid unnecessary coupling.
- Confidence through tests. Core behavior, failure paths, and integrations are exercised in CI.
- Performance with evidence. Benchmarks guide decisions where speed or allocation behavior matters.
The GoForj framework is in public beta. Start building Go applications, explore the independently versioned libraries, and help shape the framework before 1.0.
Open an issue on the relevant project to share feedback.
Bug reports, documentation improvements, benchmarks, focused fixes, and design discussions are welcome. Please use the issue tracker for the project your contribution affects.
GoForj projects are released under the MIT license unless a repository states otherwise.