voku/arrayy is a PHP library that wraps native arrays in an object-oriented API. The core Arrayy class extends ArrayObject and provides roughly 200 methods covering literal array operations (push, pop, shift, sort variants, merge, diff, unique) plus higher-order helpers (map, reduce, filter, group, partition, reject, validate), dot-notation access (get('foo.bar')), JSON serialization, and generator-based lazy iteration. It is a library, not an application: it ships as a Composer package requiring PHP 8.0+ and is consumed as a dependency by other projects such as voku/portable-utf8. The architecture centers on a large Arrayy class (~8000 lines) supported by several well-isolated subsystems: a TypeCheck framework (TypeCheckSimple, TypeCheckPhpDoc, TypeCheckArray, TypeCheckCallback) that enforces runtime property types from native declarations or PHPDoc annotations; a typed Collection hierarchy (StringCollection, IntCollection, InstanceCollection, etc.); a JSON mapper that deserializes JSON into typed models; and ArrayyMeta, which exposes property names from array-shape annotations for IDE autocompletion and PHPStan. A custom PHPStan extension (MetaDynamicStaticMethodReturnTypeExtension) infers meta() return types statically. Most mutating methods come in immutable/mutable pairs (sort vs sortImmutable), and a global a() helper plus a static facade (StaticArrayy, now deprecated) provide alternative entry points. Engineering practices are strong: CI runs PHPUnit across PHP 8.0–8.5, mutation testing via Infection, PHPStan level 5+, Psalm, and an auto-generated README built from docblocks. The test suite is extensive with dozens of data providers, including regression guards for type-check edge cases. Known weaknesses include the god-class Arrayy.php, two parallel model systems (native typed properties vs docblock array-shape annotations) that must not be mixed in one class hierarchy, and a few pre-existing test failures around edge cases such as array_sum on strings. Maintenance is active: the last commit is recent, dependencies are managed via Renovate, and the CI matrix tracks new PHP releases. Technical drift is low — the library requires PHP 8.0+, uses current tooling, and has no known security alerts. The most reusable components are the TypeCheck subsystem, the JSON mapper, and the typed collection base classes, all of which could be extracted into standalone packages with minimal modification.
Firefly III is a self-hosted personal finance management application built on the Laravel PHP framework. It provides comprehensive double-entry bookkeeping with support for multiple currencies, accounts, budgets, categories, bills, piggy banks, recurring transactions, and rules. The system exposes both a full web UI using Blade templates and Alpine.js (with legacy jQuery components) and a RESTful JSON API (v1) for programmatic access. Key features include transaction splitting, budget limits, auto-budgeting, rule-based transaction processing, exchange rate management, webhook integration, multi-user with group administration, and detailed reporting with charts. The codebase follows a repository pattern with interfaces, uses events and listeners for side effects, and includes a substantial set of artisan commands for maintenance, upgrades, and data corrections.
SleekDB is a flat-file NoSQL database library implemented in PHP that stores data as plain JSON files. It provides a simple API for CRUD operations, querying with WHERE clauses, sorting, limiting, and caching. The architecture consists of a Store class as the main entry point, QueryBuilder for fluent query construction, and specialized helper classes for document finding, updating, and caching. Data is stored as individual JSON files in a data directory with a separate cache directory for query results. The library requires no third-party dependencies beyond PHP 8.4+ with JSON and MBString extensions. The codebase demonstrates solid engineering practices with proper file locking for concurrent access, custom exception hierarchy, and comprehensive test coverage using PHPUnit 11.0. The query builder follows the builder pattern with method chaining. Caching is implemented with automatic expiration based on configurable lifetimes. The library is designed for low to medium operation loads and is suitable for shared hosting environments. Some deprecated methods are marked for removal in version 3.0, indicating active maintenance and refactoring. The codebase maintains backward compatibility while preparing for future improvements.
This is a PHP library for interacting with MikroTik RouterOS devices via their proprietary API protocol. It provides a clean, object-oriented client that manages TCP socket connections (optionally over SSL), handles authentication with both legacy (pre-6.43) and modern login schemes, and supports executing arbitrary RouterOS commands. The library also includes an SSH-based export feature using the spatie/ssh package. The codebase is well-structured with clear separation of concerns: a Config class for connection parameters, a Query class for building API commands, a Client class for sending queries and reading responses, and low-level stream abstractions (ResourceStream, StringStream) for I/O. The APILengthCoDec class is a notable component that correctly implements the binary length encoding used in the RouterOS wire protocol. The repository includes a Laravel service provider and facade for easy integration. While the library is functionally complete and has been used in production (503 stars, 180 forks), the original author has explicitly stated it is unmaintained, and the project shows signs of technical drift (e.g., outdated spatie/ssh dependency, PHP 8.4 compatibility workarounds). The code remains a solid example of a specialized API client with good engineering practices.