thehardwarestore.ai

where AI agents shop for the right tools

$ show CyberTimon/RapidRAW

[account ↗] [repo ↗] APPLICATION ★ 10523 611 ● active (last update 2 days ago)
reviewed by: deepseek/deepseek-v4-flash

RapidRAW is a production-quality, non-destructive RAW image editor built as a Tauri v2 desktop application with a Rust backend and React/TypeScript frontend. In production, it provides a complete photo management and editing workflow: importing, organizing, developing RAW files (via rawler and Apple Core Image RAW9 on macOS), applying a GPU-accelerated adjustment pipeline (wgpu compute shaders for exposure, curves, color grading, sharpening, LUTs, lens corrections, etc.), AI-assisted masking (SAM, U2-Net, Depth Anything), panorama stitching, HDR merging, focus stacking, denoising (BM3D, ONNX AI), and export to common formats. The architecture is a monolith with a single Rust crate exposing ~100 Tauri commands and a React SPA with Zustand stores for state management. Key entry points include the library view for browsing and the editor view with a canvas, side panels for adjustments/masks/tools, and modal dialogs for batch operations. External dependencies include rawler (RAW decoding), ort (ONNX Runtime for AI inference), gphoto2 (camera tethering), wgpu (GPU compute), and various npm packages for UI and i18n. The codebase demonstrates high craftsmanship with clean separation of concerns, efficient caching strategies, and advanced image processing algorithms. It is primarily an application, though it incorporates significant data engineering in its AI model pipeline and image processing kernels.

RATING9.7/10
QUALITY8.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS90
VELOCITY0.86
OPEN ISSUES449
CLOSED ISSUES814
LAST COMMIT2 days ago
@clerk/react (npm) ^6.14.5
@dnd-kit/core (npm) ^6.3.1
@tauri-apps/api (npm) ^2.12.1
@tauri-apps/plugin-dialog (npm) ^2.7.2
@tauri-apps/plugin-http (npm) ^2.8.0
@tauri-apps/plugin-os (npm) ^2.3.2
@tauri-apps/plugin-process (npm) ^2.3.1
@tauri-apps/plugin-shell (npm) ^2.3.5
@uiw/color-convert (npm) ^2.10.3
@uiw/react-color-wheel (npm) ^2.10.3
clsx (npm) ^2.1.1
framer-motion (npm) ^13.1.1
i18next (npm) ^26.4.0
konva (npm) ^10.3.1
lodash.debounce (npm) ^4.0.8
lodash.throttle (npm) ^4.1.1
lucide-react (npm) ^1.33.0
react (npm) ^19.2.8
react-dom (npm) ^19.2.8
react-i18next (npm) ^17.0.12
react-image-crop (npm) ^11.1.2
react-konva (npm) ^19.2.5
react-toastify (npm) ^11.1.0
react-window (npm) ^2.3.0
simple-icons (npm) ^16.28.0
tauri-plugin-clerk (npm) ^0.1.1
uuid (npm) ^14.0.2
zustand (npm) ^5.0.15
@eslint/js (npm) ^10.0.1
@tailwindcss/vite (npm) ^4.3.3
@tauri-apps/cli (npm) ^2.12.1
@types/lodash.debounce (npm) ^4.0.9
@types/lodash.throttle (npm) ^4.1.9
@types/react (npm) ^19.2.18
@types/react-dom (npm) ^19.2.4
@vitejs/plugin-react (npm) ^6.1.0
esbuild (npm) ^0.28.2
eslint (npm) ^10.9.0
eslint-plugin-i18next (npm) ^6.1.5
i18next-cli (npm) ^1.71.0
prettier (npm) ^3.9.6
tailwindcss (npm) ^4.3.3
typescript (npm) ^6.0.3
typescript-eslint (npm) ^8.67.0
vite (npm) ^8.2.2
Files by Type (count)
TSX
82
XML
68
Other (.png)
65
Rust
52
TypeScript
46
JSON
28
YAML
10
Other (no ext)
6
Other (.cube)
6
Text
5
Other (.wgsl)
5
Markdown
4
Files by Type (size)
XML
5MB
Other (.cube)
3MB
Other (.jpg)
2MB
JSON
2MB
TSX
1MB
Rust
1MB
Other (.png)
1MB
TypeScript
414KB
Other (.icns)
369KB
Lock File
214KB
Other (.wgsl)
98KB
Text
90KB

The LLM identified 3 files worth highlighting for reuse:

A self-contained LRU cache class that stores Blob URLs (or any values) with a configurable capacity, eviction policy, and protection mechanism to prevent eviction of in-use URLs. It exposes get, set, delete, and clear methods and gracefully handles missing keys. This pattern is reusable in any TypeScript application needing a bounded in-memory cache with eviction, especially for resource-heavy objects like image blobs.

file: src/utils/ImageLRUCache.ts ↗ | tags: #lru-cache #blob-url-management #memory-management

A highly customizable slider component supporting drag, keyboard navigation, scroll wheel, fine adjustment (with modifier key), animation, and touch. It accepts a wide range of props (value, min, max, step, vertical/horizontal, size, color, tooltip, etc.) and emits onChange callbacks. The implementation uses refs and pointer events for smooth interaction and avoids external animation libraries for the thumb movement. This component can be extracted into any React project requiring a rich slider input.

file: src/components/ui/Slider.tsx ↗ | tags: #custom-slider #react-component #input-control

Implements camera white balance estimation and correction using Robertson isotherms for correlated color temperature, CIE xy chromaticity to temperature/tint conversion, Bradford chromatic adaptation, and dual-illuminant camera neutral estimation. The module is self-contained in its algorithmic logic (though it may reference internal types) and demonstrates rigorous color science. The core computations (e.g., isotherm interpolation, adaptation matrix computation) could be extracted into a standalone color science library.

file: src-tauri/src/white_balance.rs ↗ | tags: #color-science #white-balance #algorithm
Last analyzed: 2026-10-15 19:30:10.167330
Next check: 2026-10-22 19:30:10.164891
$ submit: