2023-10-31 02:50:00 +01:00
2023-10-31 02:50:00 +01:00
2023-08-10 09:19:08 +02:00
2023-10-30 16:24:05 +01:00
2023-10-27 14:05:44 +02:00
2023-08-04 23:52:02 -04:00
2023-03-28 13:53:39 +02:00
2023-10-29 12:48:00 +01:00
2023-08-13 11:10:59 -04:00
2023-10-31 02:50:00 +01:00
2023-08-27 09:56:21 -04:00

RomM Logo

GitHub GitHub release (latest SemVer) GitHub Workflow Status (with branch)

Overview

RomM (ROM Manager) is a game library manager focused on retro gaming. It enables you to efficiently manage and organize all your games from a web browser.

Inspired by Jellyfin, RomM allows you to handle all your games through a modern interface while enhancing them with IGDB metadata.

Features

  • Scan your game library (all at once or by platform) and enrich it with IGDB metadata.
  • Access your library via your web browser.
  • Easily choose from matching IGDB results if the scan doesn't find the right one.
  • Compatible with EmuDeck folder structures.
  • Supports games with multiple files.
  • Download games directly from your web browser.
  • Edit your game files directly from your web browser.
  • Upload games directly from your web-browser
  • Set a custom cover for each game
  • Includes region, revision/version, and extra tags support.
  • Works with SQLite or MaridDB.
  • Features a responsive design with dark mode support.

Preview

🖥 Desktop

📱 Mobile

The RomM Community

discord-banner wiki-banner

Installation

🐳 Docker

Before running the image, ensure that Docker is installed and set up.

  1. Generate an API key for IGDB and set the IGDB_CLIENT_ID and IGDB_CLIENT_SECRET variables. This step is essential for running a library scan. Instructions for generating the ID and Secret can be found here. Note that IGDB requires a Twitch account with 2FA enabled to generate the ID and Secret.
  2. Verify that your library folder structure matches one of the options listed in the following section.
  3. Create a docker-compose file. Refer to the example docker-compose.yml file for guidance. Customize it for your setup and include the IGDB_CLIENT_ID and IGDB_CLIENT_SECRET variables in the environment section of the file.
  4. Launch the container:
docker-compose up -d

Configuration

📁 Folder Structure

RomM accepts two different folder structures by priority. RomM will attempt to find structure 1, and if it doesn't exist, it will look for structure 2.

For device naming conventions, review the Platforms Support section. To override default system names in the folder structure (if your directories are named differently), see the Configuration File section.

Structure A (high-priority)

Example: library/roms/gbc/game.zip

library/
├─ roms/
│  ├─ gbc/
│  │  ├─ rom_1.gbc
│  │  ├─ rom_2.gbc
│  │
│  ├─ gba/
│  │  ├─ rom_1.gba
│  │  ├─ rom_2.gba
│  │
│  ├─ ps/
│     ├─ my_multifile_game/
│     │   ├─ my_game_cd1.iso
│     │   ├─ my_game_cd2.iso
│     │
│     ├─ rom_1.iso

Structure B (low-priority)

Example: library/gbc/roms/game.zip

library/
├─ gbc/
│  ├─ roms/
│     ├─ rom_1.gbc
│     ├─ rom_2.gbc
│
├─ gba/
│  ├─ roms/
│     ├─ rom_1.gba
│     ├─ rom_2.gba
│
├─ ps/
│  ├─ roms/
│     ├─ my_multifile_game/
│     │  ├─ my_game_cd1.iso
│     │  ├─ my_game_cd2.iso
│     │
│     ├─ rom_1.iso

⚙️ Configuration File

RomM can be configured through a YAML file. To apply configuration changes, you must restart RomM.

Refer to the config.example.yml file and the docker-compose.example.yml for guidance on how to configure it.

🔒 Authentication

If you want to enable the user management system, a redis container and some environment variables needs to be set. Complete instructions are available in the wiki.

Naming Convention

🎮 Platform Support

If you adhere to the RomM folder structure, RomM supports any platform listed in the IGDB platforms list. RomM will retrieve game information, metadata, and covers for platforms in that list. Additionally, some of these platforms have custom icons available (learn more about platform icons in our wiki).

📑 Tag Support

Games can be tagged with region, revision, or other tags by using parentheses in the file name.

*Additionally, you can set the region by adding "reg-" as a prefix: (reg-E) / (reg-Spain) / (reg-USA)

  • Revision tags must be prefixed with "rev " or "rev-": (rev v1) / (rev-v1) / (rev-whatever)
  • Other tags will also be imported, for example: my_game (E)(rev v1)(fav)(additional_tag).gba

NOTE: You can use these tags with the search bar to filter your library effectively.

🎖 Credits

Description
No description provided
Readme AGPL-3.0 412 MiB
Languages
Python 50.1%
Vue 40.3%
TypeScript 7.2%
CSS 0.9%
Shell 0.6%
Other 0.8%