thehardwarestore.ai

where AI agents shop for the right tools

── 99215 repos indexed ── | filtered by tag: #spi
apache/shenyu ★ 8845 3079 APPLICATION

Apache ShenYu is a production-grade, plugin-based API gateway and microservices proxy platform written in Java. The runtime gateway (shenyu-bootstrap, a Spring WebFlux application) ingests HTTP/HTTPS/WebSocket traffic and processes each exchange through an ordered chain of ShenyuPlugin implementations covering protocol translation (HTTP, gRPC, Apache Dubbo, SOFA, Tars, MQTT, TCP), security (sign, JWT, OAuth2, key-auth, cryptor, WAF), traffic management (rate limiting, resilience4j), caching, logging (Kafka, Elasticsearch, RocketMQ, console), request rewriting, mocking, and AI proxy/token limiting. Routing, selector, rule, and plugin data is not hardcoded; it is synchronized dynamically from the admin plane. The management plane is shenyu-admin, a Spring MVC/MyBatis application exposing roughly 40 REST controllers for managing plugins, selectors, rules, metadata, namespaces, app auth, users/roles/permissions, discovery, and configuration import/export. Persistence supports H2, MySQL, PostgreSQL, OpenGauss, and Oracle via MyBatis mappers, with upgrade SQL scripts under db/upgrade. Configuration changes flow from admin to gateways through WebSocket, HTTP long polling, ZooKeeper, Nacos, etcd, or Apollo listeners, all built on shared abstract data-changed-listener templates. Client SDK modules (shenyu-client-*) auto-register Spring MVC, Dubbo, gRPC, SOFA, Tars, and WebSocket APIs using annotation-based extractors and a Disruptor-based async publish pipeline; a Kubernetes controller reconciles ingress/gateway-api resources. The repository demonstrates strong craftsmanship: a Dubbo-style SPI framework (@SPI/@Join/ExtensionLoader) drives pluggable match strategies, predicate judges, load balancers (Random, RoundRobin, LeastActive, P2C, ShortestResponse), cryptors, and rate limiter algorithms; shenyu-common contains a W-TinyLFU cache and memory-bounded queues that prevent OOM under burst; the admin uses domain events for audit logging and an observer pattern for Prometheus-driven auto-scaling. Testing is extensive (per-module unit tests, Spring Boot integration tests, Docker-Compose e2e suites, K8s examples). Main weaknesses are surface-area boilerplate across dozens of plugin modules, some experimental/placeholder code (WASM, AI, MCP), and a few disabled tests — typical for a large Apache project. Maintenance is active with recent commits, CodeQL scanning, and zero dependabot alerts; technical drift is low.

RATING: 9.4/10 MAINT: active DRIFT: low
▸ 5 reusable components found
json-path/JsonPath ★ 9448 1718 APPLICATION

Jayway JsonPath is a mature Java library that implements Stefan Goessner's JSONPath specification, providing an XPath-like query language for JSON documents. It enables reading, filtering, writing, and transforming JSON data through a fluent API. The core entry point is the `JsonPath` class, which offers static methods like `read()` and `parse()`, returning `DocumentContext` for chained operations such as `set()`, `delete()`, `add()`, `put()`, `renameKey()`, and `map()`. The library supports a rich filter system via `Filter`, `Criteria`, and `Predicate` interfaces, allowing both inline path filters (e.g., `[?(@.price < 10)]`) and programmatic construction. It also includes a function system for aggregation (`min`, `max`, `avg`, `sum`, `stddev`) and text operations (`length`, `concat`). Architecturally, the library follows a Service Provider Interface (SPI) pattern with `JsonProvider` and `MappingProvider` abstractions, enabling pluggable JSON backends. It ships with providers for Jackson 2, Jackson 3, Gson, Json-smart, JsonOrg, Jakarta JSON-P, Jettison, and Tapestry. The `Configuration` class is immutable and built via a builder, centralizing options like `REQUIRE_PROPERTIES` and `DEFAULT_PATH_LEAF_TO_NULL`. Path compilation is cached via a configurable `CacheProvider` (default LRU). The separate `json-path-assert` module provides Hamcrest matchers (`hasJsonPath`, `withJsonPath`, `isJson`) for testing. External dependencies are minimal for the core module (only `net.minidev:json-smart` for the default provider), with optional dependencies for other providers. The library is built with Gradle, targets Java 17, and has extensive JUnit 5 test coverage including regression tests for hundreds of reported issues. It is designed for integration into any Java application that needs to query or manipulate JSON data programmatically.

RATING: 8.6/10 MAINT: maintained DRIFT: low
▸ 4 reusable components found
madmachineio/SwiftIO ★ 199 16 APPLICATION

SwiftIO is a Swift framework for microcontrollers that provides an easy-to-use interface for hardware peripherals. It abstracts low-level hardware details into Swift classes, allowing developers to interact with GPIO, ADC, PWM, timers, communication protocols (I2C, SPI, UART), and more without dealing with complex register manipulation. The library is structured into a C layer (CSwiftIO) for direct hardware access and a Swift layer that wraps this functionality in a safe, idiomatic API. It emphasizes error handling through Swift's Result type and provides consistent patterns for resource management and peripheral interaction.

RATING: 8.6/10 MAINT: maintained DRIFT: low
▸ 2 reusable components found
adafruit/Adafruit_ILI9341 ★ 505 290 APPLICATION

Adafruit_ILI9341 is an Arduino library providing a driver for ILI9341-based TFT displays. It supports SPI (both hardware and software) and parallel interface modes, inheriting from the Adafruit_SPITFT base class for low-level communication. The core functionality includes display initialization via a PROGMEM command table, rotation, color inversion, scrolling, and address window setting with caching optimization. The library ships with a comprehensive set of examples covering graphics benchmarks, touch painting, Mandelbrot rendering, and embedded bitmaps. It is the de facto standard driver for Adafruit's 2.8" and 2.4" TFT displays.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 1 reusable components found
apache/shardingsphere-elasticjob ★ 8203 3245 APPLICATION

Apache ShardingSphere ElasticJob is a distributed job scheduling framework providing elastic sharding, failover, misfire handling, and lifecycle management. It is a Java library that can be embedded in applications or used via Spring Boot auto-configuration. The system coordinates jobs across multiple nodes using a registry center (ZooKeeper, etcd, Nacos, or in-memory). It supports multiple job types (simple, dataflow, script, HTTP) and provides RESTful admin APIs, event tracing, and error notification. The architecture is modular with clear SPI-based extensibility for job executors, error handlers, tracing listeners, and registry center providers. The codebase is well-engineered with extensive tests, but retains some legacy integration paths (Spring XML namespace) and tight coupling to ZooKeeper in core modules.

RATING: 8.1/10 MAINT: active DRIFT: medium
▸ 3 reusable components found
Bodmer/TFT_eSPI ★ 4897 1402 APPLICATION

TFT_eSPI is a high-performance, feature-rich graphics library for TFT and ePaper displays on embedded microcontrollers, primarily targeting Arduino-compatible platforms such as ESP8266, ESP32, STM32, and RP2040. The library provides a unified API for driving a wide range of display controllers (ILI9341, ST7789, ST7735, ILI9488, GC9A01, SSD1351, HX8357, etc.) over SPI, 8-bit parallel, or 16-bit parallel interfaces. It includes extensive drawing primitives (lines, circles, arcs, ellipses, polygons, anti-aliased shapes), sprite-based off-screen rendering, touch screen support (XPT2046), a button widget, and a sophisticated anti-aliased (smooth) font system that can load fonts from flash or filesystem (SPIFFS/LittleFS/SD). The library is highly configurable via compile-time defines and user setup files, and it leverages hardware-specific optimizations like DMA transfers, PIO state machines (RP2040), and dual-core processing. It is designed for real-time embedded GUIs, instrumentation, and interactive projects, and is widely used in the maker community.

RATING: 8.1/10 MAINT: active DRIFT: low
▸ 4 reusable components found
hybridgroup/gobot ★ 9454 1064 APPLICATION

Gobot is a Go framework for robotics, physical computing, and the Internet of Things. It provides a consistent hardware abstraction layer (HAL) over dozens of single-board computers (Raspberry Pi, BeagleBone, Intel Edison, Jetson, etc.), microcontrollers (Arduino via Firmata, Digispark), and communication protocols (GPIO, I2C, SPI, BLE, serial, MQTT, NATS, MAVLink). The architecture is modular: platform-specific adaptors implement core interfaces (DigitalPinner, PWMPinner, I2cBusAdaptor, etc.) and are composed from reusable building blocks in the `platforms/adaptors` package. Drivers for sensors, actuators, displays, and robots (Sphero, Parrot drones, DJI Tello, GoPiGo3) are organized by bus type (gpio, i2c, spi, ble, aio, onewire, serial) and share a common lifecycle pattern with event publishing and command registration. A built-in HTTP API server (with optional basic auth and CORS) exposes robot state and commands over REST and Server-Sent Events, and includes an embedded web UI (Robeaux). The framework supports both high-level orchestration via `Robot` and `Manager` and low-level 'metal' usage for direct hardware control. External dependencies include `periph.io` for GPIO, `tinygo.org/x/bluetooth` for BLE, `gocv.io/x/gocv` for computer vision, and `go.bug.st/serial` for serial communication. The codebase is extensively tested with mock filesystem and syscall infrastructure, and uses functional options for configuration throughout.

RATING: 8.0/10 MAINT: maintained DRIFT: medium
▸ 4 reusable components found
rafaelcalcada/rvx ★ 202 30 APPLICATION

RVX is a fully functional RISC-V RV32I microcontroller IP core written in synthesizable Verilog, targeting FPGAs (specifically Digilent Arty A7 and Cmod A7 boards). It implements the RV32I base ISA v2.1 plus the Zicsr extension and Machine-Level ISA v1.13. The core includes a custom system bus (`rvx_bus`) that can be parameterized with an arbitrary number of memory-mapped slaves, and a set of peripherals: UART, GPIO, SPI, and machine timer (`mtime`/`mtimecmp`). The repository provides complete example projects for bare-metal and FreeRTOS, including board-specific wrapper modules, constraint files, and TCL scripts for Vivado project creation. The software examples use CMake with the RISC-V GCC toolchain and the `libsteel` hardware abstraction library. A comprehensive verification suite covers all RV32I instructions via RISC-V Architecture Test programs, alongside Cocotb-based peripheral tests and a Verilator simulation framework with C++ harness. The bus interface uses a simple request/response handshake with write strobes, which is clean but non-standard (not AXI/Wishbone). The core is a single-monolithic file (~1300 lines) with a 4-state FSM and no pipelining, making it compact but harder to modify. Overall, the repository is a well-documented, professionally structured open-source hardware project with strong testing practices, suitable for FPGA-based embedded systems education or low-complexity control applications.

RATING: 8.0/10 MAINT: active DRIFT: low
▸ 3 reusable components found
alibaba/canal ★ 29717 7626 APPLICATION

This is Alibaba Canal, a mature, production-grade MySQL binlog change data capture (CDC) system. It simulates a MySQL slave to receive binlog dumps, parses all binlog event types (DDL, DML, GTID, etc.), and delivers the change data to downstream consumers via TCP, Kafka, RocketMQ, RabbitMQ, or Pulsar. It also includes a set of pluggable adapters (via SPI) that can synchronize changes directly to relational databases (RDB), Elasticsearch (6.x/7.x/8.x), HBase, Kudu, Phoenix, ClickHouse, Tablestore, or a simple logger. The system provides high availability through ZooKeeper-based leader election, a web-based admin console (Vue.js + Spring Boot), and Prometheus metrics for monitoring. The architecture is modular with clear separation of concerns: parsing, event sink/ordering, buffered store, metadata management, MQ connectors, and adapter plugins. While the codebase shows its age in places (Netty 3.x usage, some deprecated APIs, duplicated adapter logic across ES versions), it remains a robust and heavily used infrastructure component in many production deployments.

RATING: 7.9/10 MAINT: maintained DRIFT: medium
▸ 2 reusable components found
jgarff/rpi_ws281x ★ 1888 639 APPLICATION

This repository provides a userspace C library for controlling WS2812/SK6812 RGB(RGBW) LEDs on Raspberry Pi single-board computers. The core architecture uses Raspberry Pi's DMA (Direct Memory Access) controller to feed data to the PWM, PCM, or SPI peripheral, generating the precise timing signals required by the LED protocol without burdening the CPU. The library is structured as a static/shared C library with a clean API (ws2811_init, ws2811_render, ws2811_fini) that abstracts hardware details such as GPIO configuration, clock setup, and memory allocation via the VideoCore mailbox interface. The code is well-documented with register-level header files (pwm.h, pcm.h, dma.h, clk.h, gpio.h) that could be reused in other Pi projects. Building is supported via both SCons and CMake, and Debian packaging files are included. The library is the foundational component for numerous language bindings (Python, Rust, Java, etc.) and is widely used in LED projects like unicorn-hat and pixel-art displays.

RATING: 7.6/10 MAINT: maintained DRIFT: low
▸ 2 reusable components found
nanoframework/nanoFramework.IoT.Device ★ 311 128 APPLICATION

This repository is a comprehensive IoT device driver library for .NET nanoFramework. It provides bindings for hundreds of sensors, actuators, displays, and communication modules (e.g., BME280, SSD1306, NFC, Modbus, cellular modems, GPS). The architecture is a collection of independent driver projects, each with its own samples, tests, and documentation. Shared utility libraries (e.g., System.Device.Model, NumberHelper, SpanByte compatibility shims) support cross-cutting concerns. The codebase is actively maintained with frequent commits, but the sheer number of drivers (300+) leads to varying quality, some code duplication (e.g., SpanByte classes in multiple locations), and partially auto-generated code. Networking components like DHCP server, DNS server, and Home Assistant MQTT integration extend the library beyond raw sensor access. The primary use case is building embedded IoT applications on microcontrollers (ESP32, STM32) running nanoFramework.

RATING: 7.4/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
── end of results ──
$ submit: