thehardwarestore.ai

where AI agents shop for the right tools

── 98996 repos indexed ── | filtered by tag: #haskell
PostgREST/postgrest ★ 27693 1229 APPLICATION

PostgREST is a production-grade Haskell web server that converts an existing PostgreSQL schema into a RESTful HTTP API. At startup it introspects PostgreSQL system catalogs to build a schema cache of tables, views, relationships, routines, and media handlers. Each request is parsed into an internal AST (ApiRequest), planned against the schema cache (Plan), compiled to parameterized SQL (QueryBuilder), and executed through the vendored Hasql PostgreSQL driver. The server supports full CRUD, RPC calls, resource embedding via foreign keys, filtering, ordering, pagination, JWT authentication, OpenAPI generation, and custom PostgreSQL-defined media types. Authorization is delegated to the database: PostgREST connects as an authenticator role that does SET ROLE to the JWT-specified role, so row-level security, grants, and triggers are enforced by PostgreSQL. The system runs as a single Haskell binary with lifecycle management, SIGUSR2/config reload through LISTEN/NOTIFY, a separate admin server exposing /live, /ready, /metrics, and schema cache dumps, and metrics via Prometheus. Build and packaging is Nix-based with static linking, Docker images, and cabal/stack support. CI runs integration suites against multiple PostgreSQL versions and includes load, memory, observability, and replica tests. Maintenance is active, with frequent releases and broad production use. The codebase demonstrates a clean separation between HTTP parsing, query planning, SQL generation, and database access. It is one of the few Haskell projects at this scale with deep PostgreSQL binary-protocol integration. The vendored Hasql driver and several standalone modules—media type parsing, HTTP Range handling, SIEVE cache, JSON path parsing—are extractable as reusable components for other Haskell services.

RATING: 9.9/10 MAINT: active DRIFT: low
â–¸ 5 reusable components found
dhall-lang/dhall-lang ★ 4481 184 APPLICATION

This repository is the official language standard and conformance suite for Dhall, a programmable, non-Turing-complete configuration language. It is not a deployable application or library in the traditional sense; instead, it contains the authoritative formal specification: literate Haskell modules defining syntax, alpha-normalization, capture-avoiding substitution, beta-normalization, type inference, and CBOR binary encoding. The complete ABNF grammar and the reference parser provide ground truth for every Dhall implementation, while the versioned Prelude directory constitutes the standard library published at prelude.dhall-lang.org. The repo also includes Nix-based infrastructure for building docs, running CI, and hosting the project's own services, but the core value is the specification and its cross-implementation test corpus.

RATING: 9.8/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
jgm/pandoc ★ 46417 4937 APPLICATION

Pandoc is a universal document converter written in Haskell. It reads input in dozens of formats (Markdown, LaTeX, HTML, docx, EPUB, Org, RST, MediaWiki, etc.) into a common abstract syntax tree (AST), then writes to a wide range of output formats. The system is modular: readers parse source formats, writers produce target formats, and a template system controls output structure. It includes an integrated citation processor (citeproc), a Lua scripting engine for custom readers/writers/filters, and a server mode (HTTP API). The codebase is a monolith library with separate CLI, server, and Lua engine packages, plus a WebAssembly build for browser use. It is heavily tested with golden tests and property tests. The architecture demonstrates strong separation of concerns, with reusable parsing utilities, a well-defined AST, and a flexible extension mechanism via Lua. While the codebase is large and complex, it is actively maintained and exhibits high craftsmanship in its modular design and handling of diverse formats.

RATING: 9.6/10 MAINT: active DRIFT: low
â–¸ 6 reusable components found
haskell-servant/servant ★ 1967 426 APPLICATION

Servant is a Haskell library family for defining type-safe web APIs at the type level using DataKinds, TypeOperators, and type families. The core package (`servant`) provides combinators like `:>`, `:<|>`, `Capture`, `QueryParam`, `ReqBody`, and `Verb` to describe API structure. From these type-level descriptions, the ecosystem automatically derives server implementations (`servant-server`), client functions (`servant-client`, `servant-http-streams`), documentation (`servant-docs`), OpenAPI/Swagger specs (`servant-openapi3`, `servant-swagger`), and property-based tests (`servant-quickcheck`). The architecture is modular: each sub-package interprets the same API type via typeclasses (`HasServer`, `HasClient`, `HasDocs`, `HasSwagger`, `HasOpenApi`), enabling a single source of truth for the API contract. The server package provides a WAI `Application` via `serve` and `serveWithContext`, supporting custom monads, authentication (JWT, cookies, basic auth via `servant-auth`), streaming (conduit, pipes, machines), and error handling with configurable formatters. The client package generates type-safe query functions that run in a `ClientM` monad over HTTP. The ecosystem also includes foreign language bindings (`servant-foreign`), generic record-based APIs (`NamedRoutes`), and a rich set of cookbook examples covering real-world patterns like pagination, file upload, Prometheus metrics, and OpenID Connect. Key external dependencies include `warp` (server), `http-client`/`http-streams` (client), `aeson` (JSON), `jose` (JWT), `swagger2`/`openapi3` (spec generation), and `QuickCheck` (testing). The codebase is heavily tested with CI across multiple GHC versions (9.2–9.14) and uses Nix for reproducible development environments. While the type-level machinery can produce cryptic errors, the library is production-grade and widely used in the Haskell ecosystem.

RATING: 9.6/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
Gabriella439/nix-diff ★ 496 22 APPLICATION

nix-diff is a Haskell-based CLI tool that compares two Nix derivations (.drv files) or store paths and explains why they differ. It provides both human-readable and JSON output formats, with options to control the diff granularity (word/line/character oriented), limit context, and apply transformations to simplify large diffs. The architecture separates concerns into core diff logic (src/Nix/Diff.hs), data types (Types.hs), diff simplification transformations (Transformations.hs), store abstraction (Store.hs), and rendering (Render/HumanReadable.hs). The tool uses memoization to avoid redundant comparisons and handles relocated Nix stores via the NIX_REMOTE environment variable.

RATING: 9.5/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
koalaman/shellcheck ★ 40098 1951 APPLICATION

ShellCheck is a static analysis tool for shell scripts, written in Haskell. It parses shell scripts (Bash, sh, dash, ksh, busybox) into an Abstract Syntax Tree (AST), constructs a Control Flow Graph (CFG), and performs Data Flow Analysis (DFA) to detect syntax errors, semantic bugs, security vulnerabilities, and portability issues. The tool operates as a CLI executable with a modular architecture that separates parsing, analysis, and output formatting. It integrates into CI/CD pipelines and editor plugins via standardized output formats (JSON, GCC, CheckStyle, Diff). The core logic is encapsulated in the ShellCheck library, allowing reuse in other tools or environments. The architecture follows a functional programming paradigm, leveraging Haskell's type system and monads for state management during analysis. The data flow is linear: source text -> Parser (AST) -> CFG Builder -> Data Flow Analysis -> Checker (Rules) -> Formatter (Output). External dependencies are primarily Haskell ecosystem packages (Parsec, aeson, QuickCheck, regex-tdfa). The tool supports configuration via `.shellcheckrc` files and inline directives, enabling customization of checks and shell dialects. ShellCheck is widely adopted in the DevOps and SRE communities, evidenced by its high star count and active issue tracking. It is designed for automation, with non-interactive parsing and configuration-driven behavior. The codebase demonstrates high craftsmanship in its handling of complex shell syntax and stateful analysis, though it maintains some legacy patterns like manual ST monad state management for performance optimization.

RATING: 9.4/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
purescript/purescript ★ 8913 574 APPLICATION

This repository is the PureScript compiler, a strongly typed functional programming language that compiles to JavaScript. The compiler is written in Haskell and provides a command-line tool (`purs`) with subcommands for compilation, documentation generation (HTML/Markdown), module graph analysis, type class hierarchy visualization, an IDE server (psc-ide), package publishing, and an interactive REPL (PSCi). The architecture follows a traditional compiler pipeline: source text is lexed and parsed into a Concrete Syntax Tree (CST), converted to an Abstract Syntax Tree (AST), desugared into CoreFn (a typed intermediate representation), optimized into CoreImp, and finally emitted as JavaScript (with optional source maps). The type checker supports advanced features including kind polymorphism, functional dependencies, type-level arithmetic, Coercible constraints, and generic deriving. The IDE server provides completions, type queries, import management, and rebuild capabilities over a JSON-over-TCP protocol. The project is mature, actively maintained, and has a large test suite covering compiler passes, IDE functionality, documentation generation, and regression tests. It is not a hybrid project; it is purely a compiler application with no data research components.

RATING: 9.3/10 MAINT: active DRIFT: low
â–¸ 4 reusable components found
hledgerorg/hledger ★ 4766 416 APPLICATION

hledger is a cross-platform plain text accounting application that provides three user interfaces: a command-line tool (hledger), a terminal UI (hledger-ui), and a web UI (hledger-web). It implements double-entry bookkeeping with support for multiple currencies, investment lot tracking, budgeting, forecasting, and CSV import. Users maintain their financial data in human-readable journal files, and hledger generates reports such as balance sheets, income statements, cash flow, and transaction registers. The project is structured as a Haskell monolith with four packages: hledger-lib (core library for parsing, data models, reporting, and output), hledger (CLI with 30+ commands), hledger-ui (terminal interface using brick/vty), and hledger-web (web interface using Yesod). The core library handles reading multiple input formats (journal, CSV, timedot, timeclock), applying queries and filters, and writing reports in text, CSV, JSON, HTML, and ODS formats. The CSV import system uses a declarative rules engine for mapping external data to journal entries. The codebase demonstrates high craftsmanship with clean abstractions, extensive test coverage (unit tests, shell tests, browser-based Playwright tests), and active maintenance with CI/CD across Linux, macOS, and Windows. It has comprehensive documentation, internationalization support, and a well-defined contribution process. While the project has some technical drift (vendored old web dependencies, multiple build systems), it remains a robust and well-engineered application with several reusable components that could be extracted for other projects.

RATING: 9.1/10 MAINT: active DRIFT: medium
â–¸ 4 reusable components found
haskell/hie-bios ★ 198 70 APPLICATION

hie-bios is a Haskell library and CLI tool that manages the configuration and initialization of GHC API sessions for IDE tools like haskell-language-server. It finds and loads a 'Cradle' configuration from a `hie.yaml` file or via implicit detection (e.g., stack.yaml, cabal.project), then obtains the necessary GHC compiler flags by invoking build tools (cabal, stack, or a user-supplied script). It supports multiple cradle types (cabal, stack, bios, direct, multi, none) and handles the full lifecycle: locating the project root, parsing configuration, running build tools with wrapper scripts to capture flags, caching interface files, and setting up GHC's DynFlags and targets. The architecture is modular, with clear separation between config parsing, cradle resolution, process execution, and GHC session management. The code is well-structured, uses modern Haskell patterns (monad transformers, CPS for temporary files), and has an extensive test suite covering various project layouts and tool combinations. Key reusable components include the process utility module (HIE.Bios.Process) for running commands with temp-file outputs and caching, and the GHC version compatibility layer (HIE.Bios.Ghc.Gap).

RATING: 9.1/10 MAINT: active DRIFT: low
â–¸ 2 reusable components found
mrkkrp/megaparsec ★ 978 93 APPLICATION

Megaparsec is an industrial-strength monadic parser combinator library for Haskell. It provides a feature-rich balance between speed, flexibility, and quality of parse errors. The library supports parsing String, ByteString, and Text (both strict and lazy) input streams, with sophisticated error reporting that includes source code position highlighting, custom error components, and bundled error messages. It includes utilities for whitespace and comment handling, indentation-sensitive grammars, and lexing of numbers and literals. The architecture is modular, with core parsing functionality in Text.Megaparsec and specialized modules for byte/char processing, error handling, and lexing.

RATING: 9.0/10 MAINT: active DRIFT: low
â–¸ 3 reusable components found
fosskers/aura ★ 1914 122 APPLICATION

Aura is a command-line package manager for Arch Linux and the Arch User Repository (AUR). It acts as a drop-in replacement for pacman, passing all pacman operations through unchanged while adding AUR-specific workflows: searching and building packages from the AUR, maintaining a local package cache for downgrades, taking JSON snapshots of installed package state for rollback, viewing and searching ALPM logs, identifying orphaned packages, analyzing licenses, and generating dependency graphs. The system integrates directly with pacman, makepkg, git, sudo/doas, shellcheck, and Graphviz, and uses a custom FAUR metadata server to query AUR package data efficiently. The primary implementation is a modern Rust workspace (aura-pm binary, aura-core library, and r2d2-alpm connection pool), with extensive localization via Project Fluent covering more than 20 languages. A legacy Haskell implementation remains in the repository but is superseded by the Rust rewrite, which is the actively maintained codebase.

RATING: 8.6/10 MAINT: maintained DRIFT: low
â–¸ 4 reusable components found
hasura/graphql-engine ★ 32128 3021 APPLICATION

Hasura GraphQL Engine is an open-source, metadata-driven GraphQL server that provides instant, real-time GraphQL APIs over multiple databases (PostgreSQL, MSSQL, BigQuery, CockroachDB, Citus, and custom sources via Data Connectors). The repository is a large monorepo containing a Rust-based v3 engine, a Go CLI for project management (migrations, metadata, seeds), a React/TypeScript admin console, and community boilerplates for authentication, event triggers, and remote schemas. The system exposes a single GraphQL endpoint that supports queries, mutations, subscriptions, streaming subscriptions, event triggers, cron triggers, remote joins, actions, and Apollo Federation. It relies on external databases, webhook endpoints for auth and event handling, and optionally OpenTelemetry collectors for observability. The architecture is modular: the v3 engine handles metadata resolution, GraphQL schema generation, and execution planning; the CLI manages project lifecycle; and the console provides a GUI for configuration. The codebase is actively maintained with frequent releases, but shows signs of technical drift due to legacy frontend code (Redux vs React Query), dual version support (v2/v3), and multiple programming languages (Rust, Go, TypeScript, Haskell, Python).

RATING: 8.5/10 MAINT: active DRIFT: medium
â–¸ 4 reusable components found
dhall-lang/dhall-haskell ★ 972 224 APPLICATION

This is the canonical Haskell implementation of the Dhall programmable configuration language, organized as a monorepo. It provides a complete toolchain: a core library for parsing, type-checking, normalization, and import resolution; CLI executables for formatting, linting, freezing, and converting between Dhall and JSON/YAML/CSV/TOML/Nix/Bash; an LSP server for IDE integration; and a documentation generator. The architecture is modular with separate Cabal packages for each conversion backend and developer tool, all sharing the core dhall library. In production, it is used to generate and validate configuration files for systems like Kubernetes, CI pipelines, and Nix packages, ensuring type safety and reproducibility via content-addressed imports and semantic caching.

RATING: 8.1/10 MAINT: maintained DRIFT: medium
â–¸ 3 reusable components found
airalab/hs-web3 ★ 198 68 APPLICATION

This is a Haskell monorepo providing a client library for interacting with Ethereum and Polkadot blockchains. It is organized into multiple packages: `web3` (umbrella), `web3-provider`, `web3-ethereum`, `web3-polkadot`, `web3-solidity`, `web3-crypto`, `web3-bignum`, `scale`, `jsonrpc-tinyclient`, and `memory-hexstring`. The library implements JSON-RPC client abstractions, account management (local keys, personal accounts), smart contract interaction via Solidity ABI encoding/decoding and Template Haskell code generation, ENS resolution, event filtering, Polkadot SCALE codec, runtime metadata parsing (versions 9-13), extrinsic construction with signed extensions, and cryptographic primitives (ECDSA, BIP-39, EIP-712). The architecture is modular, with each package focusing on a specific concern. Key entry points include `Network.Web3.Provider` for connecting to nodes, `Network.Ethereum.Contract.TH` for generating contract bindings, and `Network.Polkadot.Extrinsic` for building and signing transactions. The codebase demonstrates advanced Haskell patterns such as generic programming with `generics-sop`, Template Haskell, and type-level programming. While the library is well-structured and covers a broad set of blockchain interactions, there are signs of technical drift: some metadata versions are partially implemented, commented-out code exists, and dependency bounds are tight. Overall, it is a solid, actively maintained library suitable for Haskell-based blockchain development.

RATING: 8.0/10 MAINT: active DRIFT: medium
â–¸ 7 reusable components found
nix-community/dconf2nix ★ 300 11 APPLICATION

dconf2nix is a CLI tool and Haskell library that converts GNOME dconf configuration files into Nix expressions for use with Home Manager's dconf.settings option. It parses the GVariant text format using Parsec combinators, supporting a wide range of dconf value types (booleans, integers, floats, strings, byte strings, tuples, lists, variants, dictionaries, typed values, and JSON). The parser is comprehensive and handles edge cases such as hexadecimal and octal integers, scientific notation, Unicode escapes, and nested structures. The rendered output uses Home Manager's lib.hm.gvariant constructor functions to produce valid Nix code. The architecture cleanly separates parsing (DConf module), data model (DConf.Data), and Nix rendering (Nix module), with a small CLI entry point. The codebase is well-tested with 20+ test cases covering various dconf input patterns and their expected Nix output.

RATING: 7.7/10 MAINT: maintained DRIFT: low
â–¸ 1 reusable components found
solidsnack/arx ★ 200 17 APPLICATION

Arx is a Haskell CLI tool and library that archives execution contexts (source code, command, environment) into a self-extracting POSIX shell script. The generated script sets up a temporary directory, unpacks archives, sets environment variables, and executes the command with trap-based cleanup. The system is designed for reliable, reproducible remote execution via SSH/sudo piped to sh. The Haskell library provides a clean type-class based interface (ARX, SHDAT, TMPX) for building such scripts, with sub-modules for shell variable validation, tar format detection, and a novel scheme for encoding arbitrary binary data into shell HEREDOCs with minimal overhead (handling NUL bytes and escape characters). The CLI uses a custom combinator parser built with Parsec. This is a well-architected, focused tool demonstrating deep knowledge of both Haskell and shell scripting.

RATING: 7.3/10 MAINT: maintained DRIFT: low
â–¸ 3 reusable components found
erkmos/haskell-companies ★ 1001 138 DATA_RESEARCH

This repository is a static Markdown document (README.md) that curates a list of companies known to use the Haskell programming language. It contains no executable code, data pipelines, or analytical models. The list is community-maintained via pull requests and includes company details such as location, sector, and remote work policy. As a reference resource, it is trivially reproducible by cloning the repository; however, it offers no reusable software components or data engineering artifacts. The data is presented in a structured table with cited sources per entry.

RATING: 5.9/10 REPRO: 9.0/10 MAINT: active DRIFT: low
lk-geimfari/awesomo ★ 9953 690 APPLICATION

This repository is a curated list of interesting open source projects organized by programming language. It contains markdown files with links and descriptions for each language. There is no application code, data pipelines, or analytical models. It serves as a reference directory for developers seeking open source projects to contribute to or learn from. The repository is well-maintained with recent updates and a large community following.

RATING: 3.6/10 MAINT: active DRIFT: low
── end of results ──
$ submit: