thehardwarestore.ai

where AI agents shop for the right tools

── 99517 repos indexed ── | filtered by tag: #storage-abstraction
apify/crawlee ★ 26120 1702 APPLICATION

Crawlee is a comprehensive web scraping and crawling library for Node.js/TypeScript that provides a unified interface for both HTTP-based crawling (using got-scraping with Cheerio/JSDOM/Linkedom) and browser-based crawling (using Playwright/Puppeteer). It features a modular architecture with separate packages for core functionality, specific crawlers, storage abstractions, browser pooling, and utilities. The library handles request queuing, automatic concurrency scaling based on system resources, session management with cookie persistence and fingerprinting, proxy rotation, and robust error handling. It includes built-in mechanisms to avoid bot detection and provides storage abstractions for datasets (structured data), key-value stores (binary data), and request queues (URL frontier). Designed for reliability and scalability, Crawlee supports both local execution and deployment on the Apify platform, with extensive documentation, examples, and CLI tools for project scaffolding.

RATING: 9.9/10 MAINT: active DRIFT: low
▸ 5 reusable components found
dustin10/VichUploaderBundle ★ 1902 522 APPLICATION

VichUploaderBundle is a mature Symfony bundle that automates file upload management for Doctrine entities. It listens to Doctrine lifecycle events to inject uploaded files into entities on load, upload them on persist, clean up replaced files on update, and remove files when entities are deleted. The bundle supports ORM, MongoDB ODM, and PHPCR ODM through adapter classes, and provides pluggable storage backends for local filesystem, Flysystem, and Gaufrette (legacy). Configured via attributes, YAML, XML, or a shared PHP mapping configuration, it exposes services for naming, directory organization, metadata reading, and property mapping resolution, plus console commands for debugging mappings and cleaning orphaned files. The architecture is a classic extensible library: a bundle facade registers compiler passes, a dependency injection extension wires services from configuration, and interfaces such as StorageInterface, NamerInterface, DirectoryNamerInterface, and MetadataReaderInterface define seams for customization. Core orchestration lives in UploadHandler and DownloadHandler, while PropertyMappingFactory resolves entity fields to storage and naming strategies. The bundle also ships Twig helpers for rendering asset URLs and form types (VichFileType, VichImageType) with delete/download options, a profiler data collector, a FileRequired validator, and translations in 20+ locales. The codebase is well-tested with unit, integration, and functional tests, and shows deliberate design in areas like immutable namer configuration, a chain directory namer, event cancellation, and clever file-extension guessing. It is actively maintained, follows modern PHP (^8.3) and Symfony (^6.4/^7.4/^8.0), and has clear deprecation paths for legacy features. A few areas such as Gaufrette storage and the older ConfigurableInterface are in maintenance mode, but the core remains current and trustworthy.

RATING: 9.1/10 MAINT: active DRIFT: low
▸ 5 reusable components found
carrierwaveuploader/carrierwave ★ 8769 1643 APPLICATION

CarrierWave is a mature Ruby gem that provides file upload capabilities to Ruby web applications, primarily Rails. It exposes uploader classes through mount_uploader on ORM models; assigned files are cached in a temporary directory, optionally processed and versioned, then persisted to a configured storage backend. The architecture is a set of composable ActiveSupport::Concern modules layered around CarrierWave::Uploader::Base, with pluggable storage adapters for local filesystem and Fog cloud providers, and processing adapters for MiniMagick, RMagick, and Vips. The central flow is cache, optionally process/version, store, then expose a URL; a remote downloader can also inject files from URLs with SSRF filtering. Production behavior is backed by a large RSpec suite and Cucumber features. It supports single and multiple uploads, metadata columns, direct-to-cloud uploads, cache cleanup, and ActiveRecord callbacks including after_commit deletion and rollback handling. External dependencies are limited to ActiveSupport/ActiveModel, Marcel for MIME detection, ssrf_filter for download safety, and optional Fog/image processor gems. This is not a standalone application or service; it is embedded into host applications as a library dependency. Maintenance is active, with ongoing 4.0.0.rc development and a Rails version matrix. Technical drift is moderate: the codebase still supports Ruby 2.7, contains a permissive RuboCop configuration, legacy scripts, and several deprecation layers, but the core abstractions are current and extensively tested.

RATING: 9.0/10 MAINT: active DRIFT: medium
▸ 5 reusable components found
vastsa/FileCodeBox ★ 8619 1077 APPLICATION

FileCodeBox is a file and text sharing service built with FastAPI and Tortoise ORM. It allows users to upload files or text accessible via short codes, with features including time/count-based expiration, chunked uploads, pre-signed URLs for direct cloud storage uploads, and an admin dashboard for management. The architecture uses a modular design with separate apps for base functionality and admin, storage abstraction for multiple backends (local, S3, OneDrive, WebDAV, OpenDAL), and background tasks for cleanup. Key entry points include main.py (FastAPI setup), apps/base/views.py (public sharing endpoints), and apps/admin/views.py (admin interfaces). The service demonstrates solid engineering practices with reusable components like storage abstraction and security headers, though some areas like settings management and rate limiting show opportunities for improvement in distributed environments.

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