# romm | The RomM Project | Knowledge Base | Instagit

A beautiful, powerful, self-hosted rom manager and player.

GitHub Stars: 10.2k

Repository: https://github.com/rommapp/romm

---

## Articles

### [How RomM Uses X-Accel-Redirect for High-Performance File Serving](/rommapp/romm/what-is-the-purpose-of-x-accel-redirect-in-romm-deployment)

Learn how RomM leverages X-Accel-Redirect for high-performance file serving. This header offloads transfers to Nginx for zero-copy I/O and byte-range support, controlled by Python authentication.

- Tags: performance
- Published: 2026-07-07

### [RomM Browser-Based Emulation: Supported Platforms and Implementation Guide](/rommapp/romm/does-romm-support-browser-based-emulation)

Discover RomM browser-based emulation for classic consoles and Flash content. Learn about EmulatorJS and RuffleRS, both running client-side without server binaries.

- Tags: how-to-guide
- Published: 2026-07-07

### [How to Configure the RomM Frontend with Vite: Complete Setup Guide](/rommapp/romm/how-to-configure-romm-frontend-with-vite)

Learn how to configure the RomM frontend with Vite. Follow this setup guide to integrate Vue 3, Vuetify, set environment variables, and build your application.

- Tags: how-to-guide
- Published: 2026-07-07

### [What Framework is Used for RomM Frontend: Vue 3, Vuetify, and Vite Explained](/rommapp/romm/what-framework-is-used-for-romm-frontend)

Discover the RomM frontend framework. Learn how Vue 3, Vuetify, and Vite work together to create a modern and efficient user interface for the RomM app.

- Tags: deep-dive
- Published: 2026-07-07

### [What Is the watcher.py Script in RomM? Automated Filesystem Monitoring Explained](/rommapp/romm/what-is-the-purpose-of-the-watcher-py-script-in-romm)

Discover rommapp watcher.py script. Automate ROM library filesystem monitoring and trigger rescans for seamless database synchronization. Keep your collection updated effortlessly.

- Tags: internals
- Published: 2026-07-07

### [How RomM Library Scanning Works: A Technical Deep Dive into the Backend Pipeline](/rommapp/romm/how-does-romms-library-scanning-work)

Discover how RomM's library scanning works with this technical deep dive. Learn about its backend pipeline from filesystem changes to frontend updates via Redis-RQ and Socket.IO.

- Tags: deep-dive
- Published: 2026-07-07

### [What Is the Role of Redis in RomM? Caching, Job Queues, and Session Management Explained](/rommapp/romm/what-is-the-role-of-redis-in-romm)

Discover how RomM uses Redis for fast caching, background job queues with RQ, and session management. Learn how Redis enables horizontal scalability for your FastAPI application.

- Tags: deep-dive
- Published: 2026-07-07

### [What Python Version Does RomM Backend Require?](/rommapp/romm/what-python-version-does-romm-backend-require)

Discover the Python version required for the RomM backend. Ensure compatibility with Python 3.13 or newer for optimal performance. Learn more about RomM's dependencies.

- Tags: faq
- Published: 2026-07-07

### [How to Set Up RomM with Docker Compose: A Complete Guide](/rommapp/romm/how-to-set-up-romm-with-docker-compose)

Easily set up RomM the self-hosted ROM manager using Docker Compose. This guide covers the complete setup for the FastAPI, Vue 3, Valkey, and MariaDB stack.

- Tags: how-to-guide
- Published: 2026-07-07

### [Architectural Differences Between RomM's v1 Legacy and v2 Rewrite Frontends](/rommapp/romm/romm-frontend-architecture-v1-vs-v2)

Explore RomM's frontend evolution from v1 legacy's flat hierarchy to v2's three-tier architecture. Discover token-driven design systems and universal input handling.

- Tags: architecture
- Published: 2026-07-06

### [How RomM Achieves In-Browser Emulator Integration with EmulatorJS and RuffleRS](/rommapp/romm/romm-in-browser-emulator-integration-emulatorjs-rufflers)

Discover how RomM seamlessly integrates EmulatorJS and RuffleRS in-browser. Learn about lazy-loading scripts and Vue 3 shells for efficient ROM management and save states.

- Tags: deep-dive
- Published: 2026-07-06

### [RomM Feed Generation Formats: Tinfoil, WebRcade, PKGi, and Variant Feeds Explained](/rommapp/romm/romm-feed-generation-formats-tinfoil-webrcade-pkgi)

Explore RomM feed generation formats including Tinfoil, WebRcade, and PKGi. Learn how RomM supports these popular formats for easy content management.

- Tags: deep-dive
- Published: 2026-07-06

### [How RomM Implements User Roles and Permissions for Library Access Control](/rommapp/romm/romm-user-roles-permissions-library-access-control)

Discover how RomM implements user roles and permissions for robust library access control. Learn about its layered system combining admin/user flags, groups, and overrides.

- Tags: how-to-guide
- Published: 2026-07-06

### [How RomM Frontend Communicates with the Backend Using REST and WebSockets](/rommapp/romm/romm-frontend-backend-communication-rest-websockets)

Discover how RomM's Vue 3 frontend uses Axios for REST APIs and Socket.IO for WebSockets to interact with its FastAPI backend. Learn about authentication and connection management.

- Tags: how-to-guide
- Published: 2026-07-06

### [RomM Testing Approaches: Pytest Fixtures, Integration Tests, and Service Layer Validation](/rommapp/romm/romm-testing-approaches-pytest-fixtures-integration)

Discover RomM's robust testing strategy using pytest fixtures and integration tests. Learn how RomM ensures quality across its full stack from unit to endpoint layers.

- Tags: testing
- Published: 2026-07-06

### [Custom Exception Hierarchy and Error Handling in the RomM Backend](/rommapp/romm/romm-backend-exception-hierarchy-error-handling)

Discover RomM's custom exception hierarchy and error handling. Learn how domain-specific exceptions and automatic HTTP status code mapping ensure consistent logging and effective error management in the backend.

- Tags: internals
- Published: 2026-07-06

### [RomM Redis Caching Strategies: Sessions, API Responses, and Job Queues](/rommapp/romm/romm-caching-strategies-redis-sessions-api-jobs)

Discover RomM's Redis caching strategies for sessions, API responses, and job queues. Learn how RomM unifies Redis for efficient asynchronous and synchronous data management.

- Tags: deep-dive
- Published: 2026-07-06

### [RomM Save State Synchronization: How It Tracks Saves Across Devices](/rommapp/romm/romm-save-state-synchronization-devices)

Discover how RomM synchronizes save states across devices. Learn about the junction table that tracks the latest save file versions for seamless cross-device play.

- Tags: internals
- Published: 2026-07-06

### [How RomM Manages File System Operations for ROMs, Assets, and Firmware/BIOS Files](/rommapp/romm/romm-filesystem-operations-roms-assets-firmware)

RomM centralizes file system operations with FSHandler, ensuring secure path validation, file locking, and atomic writes for ROMs, assets, and firmware/BIOS files. Configure your library directory easily.

- Tags: internals
- Published: 2026-07-06

### [Core Database Models in RomM: How SQLAlchemy 2.0 Manages Game, Platform, and User Relationships](/rommapp/romm/romm-database-models-sqlalchemy-2-relationships)

Explore RomM's core database models and discover how SQLAlchemy 2.0 manages game, platform, and user relationships using Mapped annotations and explicit relationship declarations.

- Tags: internals
- Published: 2026-07-06

### [RomM Authentication System: How It Handles OAuth2, Basic Auth, OIDC, and Session Logins](/rommapp/romm/romm-authentication-oauth2-basic-oidc-session)

Discover how RomM's hybrid auth system unifies session logins, Basic Auth, OAuth2 JWT, and OIDC. Learn about its request inspection and validation process against Redis sessions and signed tokens.

- Tags: deep-dive
- Published: 2026-07-06

### [How RomM Scans the Filesystem to Detect Platforms and ROMs](/rommapp/romm/romm-library-scanning-process-detect-platforms-roms)

Discover how RomM scans your filesystem to detect platforms and ROMs with its multi-stage pipeline. Learn about real-time watching, metadata enrichment, and efficient file hashing for accurate results.

- Tags: how-to-guide
- Published: 2026-07-06

### [How to Use RomM's Console Mode: Complete Guide for Developers and Users](/rommapp/romm/how-to-use-romms-console-mode)

Unlock RomM's console mode with this complete developer guide. Navigate platforms, collections, and ROMs using controller-based input via the /console route.

- Tags: how-to-guide
- Published: 2026-07-05

### [How RomM Integrates RuffleRS for In-Browser Flash Playback](/rommapp/romm/how-does-romm-integrate-rufflers-for-in-browser-playback)

Discover how RomM integrates RuffleRS for in-browser Flash playback. Learn about static asset serving, API interfaces, and dynamic script injection for seamless ROM streaming.

- Tags: how-to-guide
- Published: 2026-07-05

### [How RomM Integrates EmulatorJS for In-Browser Playback: A Technical Deep Dive](/rommapp/romm/how-does-romm-integrate-emulatorjs-for-in-browser-playback)

Discover how RomM integrates EmulatorJS for seamless in-browser playback. Learn about global properties, Vue component orchestration, save states, and iOS compatibility.

- Tags: deep-dive
- Published: 2026-07-05

### [RomM Alembic Workflow for Database Migrations: A Complete Guide](/rommapp/romm/what-is-the-alembic-workflow-for-romm-database-migrations)

Master the RomM Alembic workflow for seamless database migrations. Learn automatic upgrades and manual CLI development with this complete guide.

- Tags: how-to-guide
- Published: 2026-07-05

### [How to Add Custom Platform Support to RomM: A Complete Developer Guide](/rommapp/romm/how-to-add-custom-platform-support-to-romm)

Learn how to add custom platform support to RomM with this developer guide. Integrate new platforms by updating slugs and metadata mappings in the RomM repository.

- Tags: how-to-guide
- Published: 2026-07-05

### [How RomM Implements Netplay Using WebSockets: Socket.IO and Redis Architecture](/rommapp/romm/how-does-romm-implement-netplay-using-websockets)

Discover how RomM implements netplay with WebSockets. Explore its Socket.IO and Redis architecture built on FastAPI for seamless real-time player synchronization and room state management.

- Tags: architecture
- Published: 2026-07-05

### [How to Handle ROM Uploads in RomM's FastAPI: A Complete Guide to Chunked Uploads](/rommapp/romm/how-to-handle-rom-uploads-in-romms-fastapi)

Learn how to handle ROM uploads in RomM's FastAPI with our guide to chunked uploads. Discover efficient file splitting, Redis tracking, and atomic assembly for robust ROM management.

- Tags: how-to-guide
- Published: 2026-07-05

### [How RomM Manages Sessions with Redis: Custom ASGI Middleware Deep Dive](/rommapp/romm/how-does-romm-manage-sessions-with-redis)

Discover how RomM manages sessions with Redis using custom ASGI middleware. Learn about its efficient session storage and instant bulk revocation for stateless workers.

- Tags: deep-dive
- Published: 2026-07-05

### [How RomM Handles Token Refresh for API Authentication: Secure OAuth Implementation](/rommapp/romm/how-does-romm-handle-token-refresh-for-api-authentication)

Discover how RomM secures API authentication with a robust token refresh flow. Learn about their Redis-backed JWT storage and single-use token strategy to prevent replay attacks.

- Tags: how-to-guide
- Published: 2026-07-05

### [How RomM Synchronizes Save States Across Devices: A Technical Deep Dive](/rommapp/romm/how-does-romm-synchronize-save-states-across-devices)

Discover how RomM synchronizes save states across devices. Learn about its technical approach using device sync records and junction tables to manage save file versions.

- Tags: deep-dive
- Published: 2026-07-05

### [Understanding the v2 Frontend Architecture of RomM: A Complete Technical Guide](/rommapp/romm/what-is-the-v2-frontend-architecture-of-romm)

Explore RomM's v2 frontend architecture a modern Vue 3 TypeScript SPA. Understand its layered feature-oriented design separating presentation state data and infrastructure.

- Tags: architecture
- Published: 2026-07-05

### [How RomM Implements Artwork Caching for SteamGridDB: A Technical Deep Dive](/rommapp/romm/how-does-romm-implement-artwork-caching-for-steamgriddb)

Discover RomM's technical deep dive into artwork caching for SteamGridDB. Learn how RomM uses Redis and relational databases to eliminate API calls and optimize storage.

- Tags: deep-dive
- Published: 2026-07-05

### [How to Implement SteamGridDB Artwork Fetching in RomM: A Complete Guide](/rommapp/romm/how-to-implement-steamgriddb-artwork-fetching-in-romm)

Learn to implement SteamGridDB artwork fetching in RomM. This guide details the layered architecture, API key usage, and artwork retrieval during ROM scans for your ROM collection.

- Tags: how-to-guide
- Published: 2026-07-05

### [Pinia Store Architecture in RomM v2: Modular State Management for High-Performance Galleries](/rommapp/romm/what-is-the-pinia-store-architecture-in-romm-v2)

Explore the Pinia store architecture in RomM v2. Discover how four specialized stores modularize state management for high-performance galleries, ROM caching, and UI restoration.

- Tags: architecture
- Published: 2026-07-05

### [How to Use Socket.IO for Real-Time Events in RomM: Backend Architecture and Client Implementation](/rommapp/romm/how-to-use-socket.io-for-real-time-events-in-romm)

Learn how to use Socket.IO for real-time events in RomM. This guide covers backend architecture and client implementation for seamless event broadcasting from FastAPI workers.

- Tags: how-to-guide
- Published: 2026-07-05

### [How to Build Background Scan Tasks with Redis RQ in RomM](/rommapp/romm/how-to-build-background-scan-tasks-with-redis-rq-in-romm)

Learn how to build background scan tasks with Redis RQ in RomM. Utilize periodic tasks, scheduler, and low priority queues for efficient asynchronous library scanning.

- Tags: how-to-guide
- Published: 2026-07-05

### [How to Set Up OIDC Authentication in RomM: A Complete Guide](/rommapp/romm/how-to-set-up-oidc-authentication-in-romm)

Set up OIDC authentication in RomM easily. Follow our complete guide to configure your OpenID Connect provider and enable secure login for your RomM instance.

- Tags: how-to-guide
- Published: 2026-07-05

### [How to Set Up OAuth2 Authentication in RomM: Complete Implementation Guide](/rommapp/romm/how-to-set-up-oauth2-authentication-in-romm)

Implement OAuth2 authentication in RomM easily. This guide covers password grant, refresh grant, and OIDC support using environment variables for seamless integration.

- Tags: how-to-guide
- Published: 2026-07-05

### [RomM Database Schema for User Assets: How Screenshots, Saves, and States Are Stored](/rommapp/romm/what-is-the-romm-database-schema-for-user-assets)

Discover the RomM database schema for user assets, detailing how screenshots, saves, and emulator states are stored hierarchically for specific ROMs and users. Learn more about the SQL schema.

- Tags: internals
- Published: 2026-07-05

### [RomM Database Schema for ROMs: Complete SQLAlchemy Model Reference](/rommapp/romm/what-is-the-romm-database-schema-for-roms)

Explore the RomM database schema for ROMs using the SQLAlchemy Rom model. Discover how games are stored with metadata, provider IDs, and relationships to other data.

- Tags: api-reference
- Published: 2026-07-05

### [How to Integrate Custom Metadata Adapters with RomM: A Complete Developer Guide](/rommapp/romm/how-to-integrate-custom-metadata-adapters-with-romm)

Learn to integrate custom metadata adapters with RomM. This guide details creating Python classes, implementing methods, registering modules, and enabling adapters for enhanced functionality.

- Tags: how-to-guide
- Published: 2026-07-05

