diff --git a/.github/resources/social-preview.svg b/.github/resources/social-preview.svg index f2a1009..b56aab0 100644 --- a/.github/resources/social-preview.svg +++ b/.github/resources/social-preview.svg @@ -6,4 +6,4 @@ Beautiful, powerful, RomM Docs - + \ No newline at end of file diff --git a/docs/API-and-Development/API-Reference.md b/docs/API-and-Development/API-Reference.md index 56a66f0..29c8cb9 100644 --- a/docs/API-and-Development/API-Reference.md +++ b/docs/API-and-Development/API-Reference.md @@ -10,6 +10,7 @@ RomM automatically generates interactive API documentation using OpenAPI (Swagge - **ReDoc**: Available at `http://your-instance:3000/api/redoc` These interactive docs allow you to: + - Browse all available endpoints - View request/response schemas - Test API calls directly from your browser @@ -19,6 +20,7 @@ These interactive docs allow you to: ## Base URL The API base URL is typically: + ```text http://your-instance:3000/api ``` @@ -39,6 +41,7 @@ When using OAuth2, you'll need to obtain a token from `/api/token` endpoint and The API uses OAuth2 scopes to control access to different resources: **Read Scopes:** + - `me.read` - View your profile - `roms.read` - View ROMs - `platforms.read` - View platforms @@ -49,6 +52,7 @@ The API uses OAuth2 scopes to control access to different resources: - `users.read` - View users **Write Scopes:** + - `me.write` - Modify your profile - `assets.write` - Modify assets - `roms.user.write` - Modify user-rom properties @@ -64,12 +68,14 @@ The API uses OAuth2 scopes to control access to different resources: The RomM API provides comprehensive endpoints for managing all aspects of your ROM collection: ### Core Resources + - **Platforms** - Manage and configure gaming platforms - **ROMs** - Full CRUD operations for ROM files with extensive filtering, searching, and metadata matching - **Collections** - Create and manage ROM collections, smart collections, and virtual collections - **Users** - User management, authentication, invite links, and profiles ### Supporting Features + - **Authentication** - OAuth2 token management, OIDC login, password resets - **Search** - Metadata provider search for ROMs and covers - **Tasks** - Background task management and execution @@ -121,22 +127,22 @@ rom = response.json() ### Using JavaScript/Node.js ```javascript -const axios = require('axios'); +const axios = require("axios"); // Setup authentication const api = axios.create({ - baseURL: 'http://your-instance:3000/api', - auth: { - username: 'username', - password: 'password' - } + baseURL: "http://your-instance:3000/api", + auth: { + username: "username", + password: "password", + }, }); // Get all libraries -const libraries = await api.get('/libraries'); +const libraries = await api.get("/libraries"); // Get a specific ROM -const rom = await api.get('/roms/123'); +const rom = await api.get("/roms/123"); ``` ## OpenAPI Specification @@ -157,4 +163,3 @@ For API-specific questions or issues: 2. Review the code in the [RomM repository](https://github.com/rommapp/romm) 3. Open an issue on [GitHub](https://github.com/rommapp/romm/issues) 4. Join the [Discord community](https://discord.com/invite/romm) - diff --git a/docs/API-and-Development/index.md b/docs/API-and-Development/index.md index 3f351c5..969ae7e 100644 --- a/docs/API-and-Development/index.md +++ b/docs/API-and-Development/index.md @@ -12,4 +12,3 @@ Welcome to the RomM API & Development documentation. This section contains resou - **[API Reference](API-Reference.md)** - Complete API documentation with endpoints, schemas, and examples - **[Contributing](Contributing.md)** - Guidelines for contributing code, translations, and documentation - **[Development Setup](Development-Setup.md)** - How to set up your development environment - diff --git a/docs/Getting-Started/Configuration-File.md b/docs/Getting-Started/Configuration-File.md index 15204ac..492f129 100644 --- a/docs/Getting-Started/Configuration-File.md +++ b/docs/Getting-Started/Configuration-File.md @@ -17,7 +17,7 @@ Exclude entire platforms (folders) from being scanned. ```yaml exclude: - platforms: ["ps", "ngc", "gba"] + platforms: ["ps", "ngc", "gba"] ``` ### ROMs @@ -35,10 +35,10 @@ Applies to ROMs that are single files (not in subfolders). ```yaml exclude: - roms: - single_file: - extensions: ["xml", "txt"] - names: ["info.txt", "._*", "*.nfo"] + roms: + single_file: + extensions: ["xml", "txt"] + names: ["info.txt", "._*", "*.nfo"] ``` #### Multi-File ROMs @@ -53,12 +53,12 @@ Applies to ROMs stored as folders (multi-disc, with DLC, etc.). ```yaml exclude: - roms: - multi_file: - names: ["final fantasy VII", "DLC"] - parts: - names: ["data.xml", "._*"] - extensions: ["xml", "txt"] + roms: + multi_file: + names: ["final fantasy VII", "DLC"] + parts: + names: ["data.xml", "._*"] + extensions: ["xml", "txt"] ``` --- @@ -67,7 +67,7 @@ exclude: Customize how RomM interprets your folder and platform names. -### Platforms +### Custom Folder Names Map your custom folder names to RomM's recognized platform names. @@ -75,9 +75,9 @@ Map your custom folder names to RomM's recognized platform names. ```yaml system: - platforms: - gc: "ngc" # Treats 'gc' folder as GameCube - psx: "ps" # Treats 'psx' folder as PlayStation + platforms: + gc: "ngc" # Treats 'gc' folder as GameCube + psx: "ps" # Treats 'psx' folder as PlayStation ``` ### Versions @@ -88,8 +88,8 @@ Associate a platform with its main version. This also tells RomM to fetch metada ```yaml system: - versions: - naomi: "arcade" + versions: + naomi: "arcade" ``` --- @@ -104,7 +104,7 @@ If your ROMs folder is named `my_roms` instead of `roms`: ```yaml filesystem: - roms_folder: "my_roms" + roms_folder: "my_roms" ``` --- @@ -137,11 +137,11 @@ Controls metadata provider priority order. ```yaml scan: - priority: - metadata: - - "igdb" - - "ss" - - "moby" + priority: + metadata: + - "igdb" + - "ss" + - "moby" ``` #### Artwork @@ -154,11 +154,11 @@ Controls artwork provider priority order for cover art and screenshots. ```yaml scan: - priority: - artwork: - - "igdb" - - "ss" - - "moby" + priority: + artwork: + - "igdb" + - "ss" + - "moby" ``` #### Region @@ -171,11 +171,11 @@ Sets preferred region for cover art and game title (Screenscraper only). ```yaml scan: - priority: - region: - - "us" - - "eu" - - "jp" + priority: + region: + - "us" + - "eu" + - "jp" ``` #### Language @@ -188,11 +188,11 @@ Sets preferred language for cover art and game title (Screenscraper only). ```yaml scan: - priority: - language: - - "en" - - "es" - - "fr" + priority: + language: + - "en" + - "es" + - "fr" ``` ### Media @@ -217,11 +217,11 @@ Configures which media assets to download (Screenscraper and ES-DE gamelist.xml ```yaml scan: - media: - - box2d - - screenshot - - manual - - bezel + media: + - box2d + - screenshot + - manual + - bezel ``` --- @@ -238,7 +238,7 @@ Enable debug mode to log available options to the browser console. ```yaml emulatorjs: - debug: true + debug: true ``` ### Cache Limit @@ -249,7 +249,7 @@ Cache limit per ROM in bytes. Set to `null` for unlimited. ```yaml emulatorjs: - cache_limit: 52428800 # 50 MB + cache_limit: 52428800 # 50 MB ``` ### Settings @@ -260,13 +260,13 @@ Configure core-specific settings. Use `default` to apply settings to all cores. ```yaml emulatorjs: - settings: - parallel_n64: # Use the exact core name - vsync: disable - snes9x: - snes9x_region: ntsc - default: # These settings apply to all cores - fps: show + settings: + parallel_n64: # Use the exact core name + vsync: disable + snes9x: + snes9x_region: ntsc + default: # These settings apply to all cores + fps: show ``` ### Controls @@ -277,16 +277,16 @@ Map keyboard and controller controls for each player. ```yaml emulatorjs: - controls: - snes9x: - 0: # Player 1 - 0: # Button mapping - value: x # Keyboard mapping - value2: BUTTON_2 # Controller mapping - 1: # Player 2 - 0: - value: / - value2: BUTTON_2 + controls: + snes9x: + 0: # Player 1 + 0: # Button mapping + value: x # Keyboard mapping + value2: BUTTON_2 # Controller mapping + 1: # Player 2 + 0: + value: / + value2: BUTTON_2 ``` See [EmulatorJS documentation](https://emulatorjs.org/docs4devs/control-mapping/) for control mapping details. diff --git a/docs/Getting-Started/Environment-Variables.md b/docs/Getting-Started/Environment-Variables.md index 5195182..9427ede 100644 --- a/docs/Getting-Started/Environment-Variables.md +++ b/docs/Getting-Started/Environment-Variables.md @@ -55,7 +55,7 @@ This is a complete list of available environment variables; required variables a | REDIS_USERNAME | Username for Redis/Valkey instance | | | | REDIS_PASSWORD | Password for Redis/Valkey instance | | | | REDIS_DB | Database number for Redis/Valkey instance | | `0` | -| REDIS_SSL | Enable SSL for Redis/Valkey instance | | `false` | +| REDIS_SSL | Enable SSL for Redis/Valkey instance | | `false` | | SENTRY_DSN | DSN for Sentry error tracking | | | ## Metadata providers @@ -73,8 +73,8 @@ This is a complete list of available environment variables; required variables a | LAUNCHBOX_API_ENABLED | Enable LaunchBox API integration | | `false` | | PLAYMATCH_API_ENABLED | Enable PlayMatch API integration | | `false` | | HASHEOUS_API_ENABLED | Enable Hasheous API integration | | `false` | -| FLASHPOINT_API_ENABLED | Enable Flashpoint API integration | | `false` | -| HLTB_API_ENABLED | Enable HowLongToBeat API integration | | `false` | +| FLASHPOINT_API_ENABLED | Enable Flashpoint API integration | | `false` | +| HLTB_API_ENABLED | Enable HowLongToBeat API integration | | `false` | ## Authentication diff --git a/docs/Getting-Started/Metadata-Providers.md b/docs/Getting-Started/Metadata-Providers.md index 52a8ecd..d8712c0 100644 --- a/docs/Getting-Started/Metadata-Providers.md +++ b/docs/Getting-Started/Metadata-Providers.md @@ -22,7 +22,7 @@ Here are some combinations you can use based on your needs: - Supports 125+ popular systems - ScreenScraper provides titles, descriptions, cover art, screenshots and manuals - - With the option for 3D boxes and CD/cartridge covers + - With the option for 3D boxes and CD/cartridge covers - Retroachievements provides achievement progress - **Use this if you want to avoid Twitch/Amazon products** @@ -137,17 +137,17 @@ EmulationStation, and it's modern successor ES-DE, use a custom XML format to st ```yaml library/ - └─ roms/ +└─ roms/ └─ gba/ - ├─ game_1.gba - ├─ game_2.gba - ├─ gamelist.xml - ├─ 3dboxes/ - │ ├─ game_1.png - │ └─ game_2.png - ├─ covers/ - ├─ screenshots/ - └─ etc... + ├─ game_1.gba + ├─ game_2.gba + ├─ gamelist.xml + ├─ 3dboxes/ + │ ├─ game_1.png + │ └─ game_2.png + ├─ covers/ + ├─ screenshots/ + └─ etc... ``` ## Metadata Tags in Filenames diff --git a/docs/Getting-Started/OIDC-Setup.md b/docs/Getting-Started/OIDC-Setup.md index 9b380b7..51786e2 100644 --- a/docs/Getting-Started/OIDC-Setup.md +++ b/docs/Getting-Started/OIDC-Setup.md @@ -18,15 +18,19 @@ OIDC is an identity layer built on top of OAuth2. While OAuth2 primarily handles RomM supports OIDC authentication with the following identity providers: ### [Authelia](../OIDC-Guides/OIDC-Setup-With-Authelia.md) + An open-source authentication and authorization server providing two-factor authentication and SSO. Ideal for self-hosters looking for a lightweight solution. ### [Authentik](../OIDC-Guides/OIDC-Setup-With-Authentik.md) + An open-source identity provider with support for modern authentication protocols, MFA, and comprehensive user management. ### [PocketID](../OIDC-Guides/OIDC-Setup-With-PocketID.md) + A simple OIDC provider that exclusively supports passkey authentication - no passwords required. ### [Zitadel](../OIDC-Guides/OIDC-Setup-With-Zitadel.md) + An enterprise-grade, open-source identity and access management platform supporting OAuth2, OIDC, SAML, and passwordless authentication. ## General Setup Requirements diff --git a/docs/Usage/Administration.md b/docs/Usage/Administration.md index 37a5cfa..8a565ab 100644 --- a/docs/Usage/Administration.md +++ b/docs/Usage/Administration.md @@ -14,6 +14,7 @@ Additionally, you can submit your RetroAchievements username and synchronize you ## User Interface From here you can: + - Change your language - Adjust the color scheme of RomM - Control which ribbons are visible on the home screen @@ -24,6 +25,7 @@ From here you can: ## Library Management From this screen you can: + - Edit platform bindings and versions on the Config tab - Manage missing games on the Missing Games tab diff --git a/docs/Usage/LibraryManagement.md b/docs/Usage/LibraryManagement.md index da5e2d2..5486c6e 100644 --- a/docs/Usage/LibraryManagement.md +++ b/docs/Usage/LibraryManagement.md @@ -76,7 +76,7 @@ The `Scan options` dropdown allows you to choose a specific type of scan to perf - For example, selecting `IGDB` and `ScreenScraper` will update the metadata for games that **are matched** with IGDB **or** ScreenScraper, and will use `igdb_id` and/or `ssfr_id` to refetch the metadata from the respective providers. - **Recalculate Hashes**: Recalculates hashes for all files in the selected platforms. - **Total Rescan**: Rescans and rematches all games in the selected platforms (slowest). - - This will wipe all existing metadata matches, including the external IDs, and attempt to match them again, like on a fresh scan. *Saves, states and notes will be preserved.* + - This will wipe all existing metadata matches, including the external IDs, and attempt to match them again, like on a fresh scan. _Saves, states and notes will be preserved._ ### Console diff --git a/docs/resources/metadata_providers/3dboxes.png b/docs/resources/metadata_providers/3dboxes.png index 341d982..e6d7c1e 100644 Binary files a/docs/resources/metadata_providers/3dboxes.png and b/docs/resources/metadata_providers/3dboxes.png differ