ROMulus
Problem
Managing a large multi-system retro ROM collection and deploying it to modern handhelds and emulation platforms is tedious work. Files need identification, header-aware hash validation, canonical renaming, deduplication, metadata enrichment, and cover art matching - and then the curated library has to be synced to whichever target the user actually plays on. Existing tools are typically single-system (think Wii Backup Manager) or locked to a specific target platform, leaving cross-console collectors to stitch together half a dozen utilities.
Approach
Built a desktop application in Python and PySide6 backed by a local SQLite database - no cloud account, no server, no background services. The pipeline runs in stages: a Quick Scan classifies files by console, a Heavy Scan validates via SHA-1/CRC32 against bundled No-Intro DAT files with header stripping, metadata enrichment pulls genre/developer/publisher/release date, and cover art is sourced from the local filesystem plus the libretro-thumbnails project. Library cleanups (folder merges, canonical renames, duplicate removal) are preview-first with multi-level confirmation. Export supports five sync strategies (push merge/mirror/wipe, pull merge, two-way) targeting Anbernic, Batocera, MiSTer, Analogue Pocket, RetroPie, muOS, Onion OS, and ES-DE.
Outcome
A complete end-to-end ROM management workflow covering roughly 80 retro systems and most popular modern emulation targets. Currently at v0.4.0 with 1,003 passing tests and a portable Windows binary. Hash caching avoids re-work on repeated Heavy Scans, atomic preview-then-confirm operations protect the library from accidental damage, and per-system summary dialogs report exactly what each target contributed during a sync. Runs from a USB drive or any directory - no installer required.