Awesome Go
repository·main·Indexed 33 days ago
https://github.com/avelino/awesome-goA curated, categorized list of high-quality Go (Golang) frameworks, libraries, and software. Serves as a discovery engine for developers across domains including Web Frameworks, Databases, Machine Learning, AI, Actor Model, Blockchain, Authentication, CLI tools, and Terminal User Interfaces (TUI).
What's inside awesome-go
- Awesome Go is a curated list of high-quality Go frameworks, libraries, and software. It serves as a central resource for developers to discover tools for various domains such as Artificial Intelligence, Web Frameworks, Databases, and more.
Explore UUID libraries in Go
mainThis category contains libraries specifically designed for generating and working with Universally Unique Identifiers (UUIDs) in Go.Explore Advanced Console UIs and TUI Frameworks
mainLibraries for building sophisticated Terminal User Interfaces (TUIs) and enhanced command-line outputs in Go:
TUI Frameworks and Architectures
- bubbletea: A Go framework to build terminal apps based on The Elm Architecture.
- bubbles: TUI components designed for use with
bubbletea. - bubble-table: An interactive table component for
bubbletea. - phoenix: A high-performance TUI framework with Elm-inspired architecture and zero-allocation event system.
- go-tui: A declarative terminal UI framework with templ-like templates and flexbox layout.
- gocui: A minimalist library for creating Console User Interfaces.
- termbox-go: A library for creating cross-platform text-based interfaces.
- loom: A signal-based reactive components framework for building TUIs.
UI Components and Layouts
- mpb: Multi progress bar for terminal applications.
- progressbar: A basic thread-safe progress bar for all OSs.
- uiprogress: Flexible library to render progress bars.
- spinner: Easily provide a terminal spinner with options.
- yacspin: Yet Another CLI Spinner package.
- simpletable, tabby, table, and uitable: Various libraries for rendering tabular data in the terminal.
- fx: A terminal JSON viewer and processor.
- termdash and termui: Terminal dashboards inspired by
termuiandblessed-contrib.
Styling, Colors, and Visuals
- lipgloss: Declaratively define styles for color, format, and layout in the terminal.
- termenv: Advanced ANSI style and color support.
- aurora: ANSI terminal colors supporting
fmt.Printf/Sprintf. - pterm: Beautify console output with many combinable components.
- asciigraph: Create lightweight ASCII line graphs in command line apps.
- vhs: Generate terminal GIFs from code for documentation and tutorials.
- box-cli-maker: Render highly customizable boxes in the terminal.
- chroma16: Generate a 16-color terminal palette from a single seed color.
- marker: Match and mark strings for colorful terminal outputs.
Explore Configuration libraries in Go
mainA collection of libraries for managing application configuration. Common patterns include:
- Environment Variable Parsing: Tools like
env(caarlos0),envconfig(vrischmann), andkelseyhightower/envconfigfocus on unmarshaling environment variables into Go structs. - Multi-source Loading: Libraries such as
viper,koanf,confita, andzerocfgallow loading configuration from multiple sources (files, ENV, flags) with defined precedence. - File Format Support: Many libraries support standard formats like JSON, YAML, TOML, INI, and HCL (e.g.,
go-ini,hjson,gookit/config). - Cloud & External Integration: Specialized providers exist for AWS (e.g.,
go-aws-ssm,go-ssm-config), Azure (azureappconfiguration), Consul (go-external-config/consul), and Vault (go-external-config/vault). - CLI & Flag Integration: Tools like
kongandnfigureprovide robust command-line parsing that integrates with configuration files.
- Environment Variable Parsing: Tools like
Explore Go libraries for configuration parsing
mainThe following libraries are available for managing application configuration in Go, ranging from simple environment variable parsers to complex multi-source managers supporting JSON, YAML, TOML, and cloud providers.
Key Categories
Environment Variable Focused
- caarlos0/env: Parse environment variables to Go structs (with defaults).
- kelseyhightower/envconfig: Manage configuration data from environment variables.
- godotenv: Load environment variables from
.envfiles (Go port of Ruby's dotenv). - typenv: Minimalistic, zero-dependency, typed environment variables.
Multi-Source & Advanced Configuration
- viper: A comprehensive configuration solution with "fangs."
- koanf: Lightweight and extensible; supports JSON, TOML, YAML, env, and command line.
- confita: Load configuration in cascade from multiple backends into a struct.
- kong: Command-line parser supporting complex structures and additional sources like YAML, JSON, or TOML.
Cloud & External Providers
- azureappconfiguration: Consume data from Azure App Configuration.
- go-aws-ssm: Fetch parameters from AWS System Manager - Parameter Store.
- go-external-config: Spring-inspired management with support for AWS, Consul, and Vault via sub-packages.
Explore UUID and Unique ID libraries
mainA collection of libraries for generating various types of unique identifiers in Go:
Standard UUIDs (RFC 4122):
google/uuid: Based on RFC 4122 and DCE 1.1.gofrs/uuid: Actively maintained fork of satori/uuid; supports creation and parsing.agext/uuid: Supports UUIDv1 with fast or cryptographic-quality random node identifiers.jakehl/goid: Generates and parses RFC4122 compliant V4 UUIDs.ashwingopalsamy/uuidcheck: Validates UUIDs against RFC 4122 and converts UUIDv7 to UTC timestamps.
High-Performance & Specialized IDs:
rekby/fastuuid: Fast generation of UUIDv4 as strings or bytes.sdrapkin/guid: Fast cryptographically safe Guid generator (~10x faster thanuuid).twharmon/gouid: Generates cryptographically secure random string IDs with a single allocation.aidarkhanov/nanoid: Tiny and efficient unique string ID generator.oklog/ulid: Implementation of Universally Unique Lexicographically Sortable Identifiers (ULID).muyo/sno: Compact, sortable, and fast unique IDs with embedded metadata.rs/xid: Globally unique ID generator designed for safe use in server code.edwingeng/wuid: Extremely fast globally unique number generator.
Explore Performance and Tracing tools in Go
mainTools for monitoring, profiling, and optimizing Go application performance:
- Tracing & Observability:
jaeger(distributed tracing),pixie(eBPF-based no-instrumentation tracing),otelinji(OpenTelemetry auto-instrumentation), andgo-instrument(automatic spans for methods). - Profiling & Statistics:
profile(simple profiling support),statsviz(live visualization of runtime statistics), andgo-perfstat(performance statistics aggregation). - Low-level/System:
ebpf-go(utilities for eBPF programs) andmm-go(manual memory management).
- Tracing & Observability:
Explore Go Development Tools and Utilities
mainGeneral-purpose tools to assist in the Go development lifecycle:
Visualization & Debugging:
go-callvis: Visualizes the call graph of a Go program using thedotformat.goast-viewer: A web-based visualizer for the Go AST.godbg: Implements adbg!macro (similar to Rust) for quick debugging.gotutor: An online Go debugger and visualizer.govisual: A zero-config HTTP request visualizer and debugger for local web development.go-size-analyzer: Analyzes and visualizes the size of dependencies in compiled binaries.
API & Documentation:
go-swagger: Implementation of Swagger 2.0 for RESTful APIs.docs: Automatically generates RESTful API documentation aligned with OpenAPI specifications.go-template-playground: Interactive environment to test Go templates.gotemplate.io: Online tool to previewtext/templatetemplates live.
Dependency & Module Management:
go-mod-outdated: Finds outdated dependencies in Go projects.modver: Compares two module versions to determine required semver changes.gomodrun: Executes and caches binaries included ingo.modfiles.
Other Utilities:
richgo: Enhancesgo testoutput with text decorations.roumon: Monitors the state of active goroutines via CLI.rts: Generates Go structs from server responses (Response To Struct).typex: Examines Go types and their transitive dependencies, with export options for TypeScript.
Explore Audio and Music libraries for Go
mainThe following libraries are available for audio manipulation, playback, and processing in Go:
Playback and Low-level Audio
- beep: Simple library for audio playback and manipulation.
- Oto: Low-level library for playing sound across multiple platforms.
- malgo: Mini audio library.
- PortAudio: Go bindings for the PortAudio audio I/O library.
- go-mpris: Client for mpris dbus interfaces.
Encoding and Decoding
- flac: Native Go FLAC encoder/decoder.
- gaad: Native Go AAC bitstream parser.
- id3v2: ID3 decoding and encoding library.
- minimp3: Lightweight MP3 decoder.
Processing and Conversion
- go-resample: Pure-Go (no cgo) audio sample-rate converter.
- GoAudio: Native Go Audio Processing Library.
- gosamplerate: Bindings for libsamplerate.
Specialized Audio/Music
- music-theory: Music theory models in Go.
- voxrai-ai: AI voice agents using STT → LLM → TTS pipelines over WebSocket and WebRTC.
Explore Testing libraries in Go
mainThe Awesome Go repository provides a curated list of tools for various testing needs in Go, including:
- General Testing Frameworks: BDD-style frameworks like
ginkgo,godog(Cucumber),goblin(Mocha-like), andGoConvey(with web UI). - Assertions and Matchers: Libraries for expressive assertions such as
testify,gomega(Rspec-like),is(minimalist), andgo-cmp(value comparison). - HTTP and API Testing: Tools for testing REST/HTTP services like
httpexpect,frisby,apitest, andgo-vcr(record/replay). - Database Testing: Utilities for managing test databases, including
dbcleaner,testcontainers-go(container-based dependencies), andgo-sqlmock. - Snapshot Testing: Tools for verifying data against snapshots like
cupaloyandgo-snaps. - Mutation and Coverage Testing: Tools to improve test quality like
go-mutestingandgo-test-coverage. - Fuzzing: Randomized testing systems like
go-fuzzandTavor.
- General Testing Frameworks: BDD-style frameworks like
Explore Bit-packing and Compression libraries
mainLibraries for efficient data packing and compression:
- bingo: Fast, zero-allocation, lexicographical-order-preserving packing of native types to bytes.
- binpacker: A binary packer and unpacker for building custom binary streams.
- bit: A Go set data structure with additional bit-twiddling functions.
- crunch: Implements buffers for handling various datatypes easily.
- go-ef: An implementation of the Elias-Fano encoding.
- roaring: Implements compressed bitsets.
Go compilers and transpilers
mainTools for compiling Go to other languages or transpiling other languages into Go:
Go to Other Languages
- gopherjs: Compiler from Go to JavaScript.
- go2hx: Compiler from Go to Haxe (which targets JS, C++, Java, C#).
Other Languages to Go
- c4go: Transpiles C code to Go.
- cxgo: Transpiles C code to Go.
- bunster: Compiles shell scripts to Go.
- f4go: Transpiles FORTRAN 77 code to Go.
- esp32: Transpiles Go into Arduino code for ESP32.