├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ ├── custom.md │ ├── feature_request.md │ └── ui-ux.md ├── PULL_REQUEST_TEMPLATE.md ├── resources │ ├── isotipo.png │ ├── isotipo.svg │ ├── logotipo.png │ ├── logotipo.svg │ ├── screenshots │ │ ├── details.png │ │ ├── gallery.png │ │ ├── home.png │ │ ├── m_details.png │ │ ├── m_drawer.png │ │ ├── m_gallery.png │ │ ├── m_home.png │ │ ├── m_search_1.png │ │ ├── m_search_2.png │ │ ├── preview-desktop.gif │ │ ├── preview-mobile.gif │ │ ├── search_1.png │ │ └── search_2.png │ ├── social_preview.png │ └── social_preview.svg └── workflows │ ├── build.yml │ ├── i18n.yml │ ├── pytest.yml │ ├── test-build.yml │ ├── trunk-check.yml │ └── typecheck.yml ├── .gitignore ├── .python-version ├── .trunk ├── .gitignore ├── configs │ ├── .bandit │ ├── .hadolint.yaml │ ├── .isort.cfg │ ├── .markdownlint.yaml │ ├── .shellcheckrc │ ├── .yamllint.yaml │ ├── mypy.ini │ ├── ruff.toml │ └── svgo.config.js ├── setup-ci │ └── action.yaml └── trunk.yaml ├── .vscode ├── settings.json └── tasks.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── DEVELOPER_SETUP.md ├── LICENSE ├── README.md ├── SECURITY.md ├── backend ├── __version__.py ├── adapters │ ├── __init__.py │ └── services │ │ ├── __init__.py │ │ ├── igdb_types.py │ │ └── rahasher.py ├── alembic.ini ├── alembic │ ├── env.py │ ├── script.py.mako │ └── versions │ │ ├── 0009_models_refactor.py │ │ ├── 0010_igdb_id_integerr.py │ │ ├── 0011_drop_has_cover.py │ │ ├── 0012_add_regions_languages.py │ │ ├── 0013_upgrade_file_extension.py │ │ ├── 0014_asset_files.py │ │ ├── 0015_mobygames_data.py │ │ ├── 0016_user_last_login_active.py │ │ ├── 0017_rom_notes.py │ │ ├── 0018_firmware.py │ │ ├── 0019_resources_refactor.py │ │ ├── 0020_created_and_updated.py │ │ ├── 0021_rom_user.py │ │ ├── 0022_collections_.py │ │ ├── 0023_make_columns_non_nullable.py │ │ ├── 0024_sibling_roms_db_view.py │ │ ├── 0025_roms_hashes.py │ │ ├── 0026_romuser_status_fields.py │ │ ├── 0027_platforms_data.py │ │ ├── 0028_user_email.py │ │ ├── 0029_platforms_custom_name.py │ │ ├── 0030_user_email_null.py │ │ ├── 0031_datetime_to_timestamp.py │ │ ├── 0032_longer_fs_fields.py │ │ ├── 0033_rom_file_and_hashes.py │ │ ├── 0034_virtual_collections_db_view.py │ │ ├── 0035_screenscraper.py │ │ ├── 0036_screenscraper_platforms_id.py │ │ ├── 0037_virtual_rom_columns.py │ │ ├── 0038_add_ssid_to_sibling_roms.py │ │ ├── 1.6.2_.py │ │ ├── 1.6.3_.py │ │ ├── 1.7.1_.py │ │ ├── 1.8.1_.py │ │ ├── 1.8.2_.py │ │ ├── 1.8.3_.py │ │ ├── 1.8_.py │ │ └── 2.0.0_.py ├── config │ ├── __init__.py │ ├── config_manager.py │ └── tests │ │ ├── __init__.py │ │ ├── fixtures │ │ └── config │ │ │ ├── config.yml │ │ │ └── empty_config.yml │ │ └── test_config_loader.py ├── decorators │ ├── __init__.py │ ├── auth.py │ └── database.py ├── endpoints │ ├── __init__.py │ ├── auth.py │ ├── collections.py │ ├── configs.py │ ├── feeds.py │ ├── firmware.py │ ├── forms │ │ └── identity.py │ ├── heartbeat.py │ ├── platform.py │ ├── raw.py │ ├── responses │ │ ├── __init__.py │ │ ├── assets.py │ │ ├── base.py │ │ ├── collection.py │ │ ├── config.py │ │ ├── feeds.py │ │ ├── firmware.py │ │ ├── heartbeat.py │ │ ├── identity.py │ │ ├── oauth.py │ │ ├── platform.py │ │ ├── rom.py │ │ ├── search.py │ │ └── stats.py │ ├── rom.py │ ├── saves.py │ ├── screenshots.py │ ├── search.py │ ├── sockets │ │ └── scan.py │ ├── states.py │ ├── stats.py │ ├── tasks.py │ ├── tests │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── test_assets.py │ │ ├── test_config.py │ │ ├── test_heartbeat.py │ │ ├── test_identity.py │ │ ├── test_oauth.py │ │ ├── test_platform.py │ │ ├── test_raw.py │ │ └── test_rom.py │ └── user.py ├── exceptions │ ├── __init__.py │ ├── auth_exceptions.py │ ├── config_exceptions.py │ ├── endpoint_exceptions.py │ ├── fs_exceptions.py │ ├── socket_exceptions.py │ └── task_exceptions.py ├── handler │ ├── __init__.py │ ├── auth │ │ ├── __init__.py │ │ ├── base_handler.py │ │ ├── constants.py │ │ ├── hybrid_auth.py │ │ ├── middleware.py │ │ └── tests │ │ │ ├── __init__.py │ │ │ ├── conftest.py │ │ │ ├── test_auth.py │ │ │ ├── test_oauth.py │ │ │ └── test_oidc.py │ ├── database │ │ ├── __init__.py │ │ ├── base_handler.py │ │ ├── collections_handler.py │ │ ├── firmware_handler.py │ │ ├── platforms_handler.py │ │ ├── roms_handler.py │ │ ├── saves_handler.py │ │ ├── screenshots_handler.py │ │ ├── states_handler.py │ │ ├── stats_handler.py │ │ └── users_handler.py │ ├── filesystem │ │ ├── __init__.py │ │ ├── assets_handler.py │ │ ├── base_handler.py │ │ ├── firmware_handler.py │ │ ├── platforms_handler.py │ │ ├── resources_handler.py │ │ ├── roms_handler.py │ │ └── tests │ │ │ ├── __init__.py │ │ │ └── test_fs.py │ ├── metadata │ │ ├── __init__.py │ │ ├── base_hander.py │ │ ├── fixtures │ │ │ ├── mame_index.json │ │ │ ├── ps1_serial_index.json │ │ │ ├── ps2_opl_index.json │ │ │ ├── ps2_serial_index.json │ │ │ └── psp_serial_index.json │ │ ├── igdb_handler.py │ │ ├── moby_handler.py │ │ ├── sgdb_handler.py │ │ └── ss_handler.py │ ├── redis_handler.py │ ├── scan_handler.py │ ├── socket_handler.py │ └── tests │ │ ├── __init__.py │ │ ├── cassettes │ │ └── test_fastapi │ │ │ ├── test_scan_platform.yaml │ │ │ └── test_scan_rom.yaml │ │ ├── conftest.py │ │ ├── test_db_handler.py │ │ └── test_fastapi.py ├── logger │ ├── __init__.py │ ├── formatter.py │ ├── logger.py │ └── tests │ │ ├── __init__.py │ │ └── test_logger.py ├── main.py ├── models │ ├── __init__.py │ ├── assets.py │ ├── base.py │ ├── collection.py │ ├── firmware.py │ ├── fixtures │ │ └── known_bios_files.json │ ├── platform.py │ ├── rom.py │ ├── tests │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── rom_response_example.json │ │ ├── test_assets.py │ │ ├── test_rom.py │ │ └── test_user.py │ └── user.py ├── romm_test │ ├── assets │ │ └── users │ │ │ └── 557365723a31 │ │ │ └── saves │ │ │ └── n64 │ │ │ └── mupen64 │ │ │ └── Super Mario 64 (J) (Rev A).sav │ ├── library │ │ ├── n64 │ │ │ └── roms │ │ │ │ ├── Paper Mario (USA).z64 │ │ │ │ └── Super Mario 64 (J) (Rev A) │ │ │ │ ├── Super Mario 64 (J) (Rev A) [Part 1].z64 │ │ │ │ └── Super Mario 64 (J) (Rev A) [Part 2].z64 │ │ └── psx │ │ │ └── roms │ │ │ └── PaRappa the Rapper.zip │ └── setup.sql ├── scheduler.py ├── tasks │ ├── __init__.py │ ├── scan_library.py │ ├── tasks.py │ └── update_switch_titledb.py ├── utils │ ├── __init__.py │ ├── archive_7zip.py │ ├── context.py │ ├── database.py │ ├── filesystem.py │ ├── generate_supported_platforms.py │ ├── hashing.py │ ├── json.py │ ├── nginx.py │ ├── router.py │ └── test_router.py ├── watcher.py └── worker.py ├── docker-compose.yml ├── docker ├── .dockerignore ├── Dockerfile ├── build_local_image.sh ├── init_scripts │ ├── docker-entrypoint.sh │ └── init └── nginx │ ├── default.conf │ ├── js │ └── decode.js │ └── templates │ └── default.conf.template ├── env.template ├── examples ├── config.batocera-retrobat.yml ├── config.es-de.example.yml ├── config.example.yml └── docker-compose.example.yml ├── frontend ├── .nvmrc ├── assets │ ├── auth_background.svg │ ├── auth_background_static.png │ ├── auth_background_static.svg │ ├── dashboard-icons │ │ ├── LICENSE │ │ ├── auth0.png │ │ ├── authelia.png │ │ ├── authentik.png │ │ ├── aws.png │ │ ├── azure.png │ │ ├── firebase.png │ │ ├── fusionauth.png │ │ ├── google.png │ │ ├── hydra.png │ │ ├── kanidm.png │ │ ├── keycloak.png │ │ ├── logto.png │ │ ├── okta.png │ │ ├── ping.png │ │ ├── pocket-id.png │ │ └── zitadel.png │ ├── default │ │ ├── cover │ │ │ ├── collection.svg │ │ │ ├── empty.svg │ │ │ ├── favorite.svg │ │ │ ├── missing_cover.svg │ │ │ └── unmatched.svg │ │ ├── user.png │ │ └── user.svg │ ├── emulatorjs │ │ └── powered_by_emulatorjs.png │ ├── fonts │ │ └── roboto │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkAnkaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBXkaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBnkaSTbQWg.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkC3kaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCHkaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCXkaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCnkaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkaHkaSTbQWt4N.woff2 │ │ │ ├── KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkenkaSTbQWt4N.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBHMdazTgWw.woff2 │ │ │ ├── KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBHMdazTgWw.woff2 │ │ │ └── OFL.txt │ ├── isotipo.png │ ├── isotipo.svg │ ├── logos │ │ ├── romm_logo_ps2_circle.png │ │ ├── romm_logo_ps2_circle.svg │ │ ├── romm_logo_ps2_square.png │ │ ├── romm_logo_ps2_square.svg │ │ ├── romm_logo_snes_circle.png │ │ ├── romm_logo_snes_circle.svg │ │ ├── romm_logo_snes_square.png │ │ ├── romm_logo_snes_square.svg │ │ ├── romm_logo_xbox_one_circle.png │ │ ├── romm_logo_xbox_one_circle.svg │ │ ├── romm_logo_xbox_one_circle_grayscale.png │ │ ├── romm_logo_xbox_one_circle_grayscale.svg │ │ ├── romm_logo_xbox_one_square.png │ │ └── romm_logo_xbox_one_square.svg │ ├── logotipo.png │ ├── logotipo.svg │ ├── platforms │ │ ├── 3do.ico │ │ ├── 3ds.ico │ │ ├── 64dd.ico │ │ ├── ATTRIBUTIONS │ │ ├── GamePark - GP32.ico │ │ ├── acpc.ico │ │ ├── adventure-vision.ico │ │ ├── amiga.ico │ │ ├── amiibo.ico │ │ ├── android.ico │ │ ├── apple-pippin.ico │ │ ├── appleii.ico │ │ ├── arcade.ico │ │ ├── arcadia-2001.ico │ │ ├── astrocade.ico │ │ ├── atari-jaguar-cd.ico │ │ ├── atari-st.ico │ │ ├── atari.ico │ │ ├── atari2600.ico │ │ ├── atari5200.ico │ │ ├── atari7800.ico │ │ ├── atari8bit.ico │ │ ├── atomiswave.ico │ │ ├── bbcmicro.ico │ │ ├── beena.ico │ │ ├── c-plus-4.ico │ │ ├── c64.ico │ │ ├── casio-loopy.ico │ │ ├── casio-pv-1000.ico │ │ ├── chihiro.ico │ │ ├── coleco.ico │ │ ├── colecovision.ico │ │ ├── cps1.ico │ │ ├── cps2.ico │ │ ├── cps3.ico │ │ ├── creativision.ico │ │ ├── daphne.ico │ │ ├── dc.ico │ │ ├── default.ico │ │ ├── doom.ico │ │ ├── dos.ico │ │ ├── e-reader.ico │ │ ├── epoch-super-cassette-vision.ico │ │ ├── fairchild-channel-f.ico │ │ ├── fairchild.ico │ │ ├── famicom.ico │ │ ├── fba2012.ico │ │ ├── fbneo.ico │ │ ├── fds.ico │ │ ├── flash.ico │ │ ├── g-and-w.ico │ │ ├── game-dot-com.ico │ │ ├── game-master.ico │ │ ├── gamegear.ico │ │ ├── gb.ico │ │ ├── gba.ico │ │ ├── gbc.ico │ │ ├── genesis-slash-megadrive.ico │ │ ├── gizmondo.ico │ │ ├── gp32.ico │ │ ├── hyperscan.ico │ │ ├── intellivision.ico │ │ ├── ios.ico │ │ ├── ique-player.ico │ │ ├── j2me.ico │ │ ├── jaguar.ico │ │ ├── java.ico │ │ ├── leappad.ico │ │ ├── leapster.ico │ │ ├── loopy.ico │ │ ├── lynx.ico │ │ ├── mac.ico │ │ ├── md.ico │ │ ├── megaduck.ico │ │ ├── ms.ico │ │ ├── msx.ico │ │ ├── msx2.ico │ │ ├── n64.ico │ │ ├── nds.ico │ │ ├── neo-geo-cd.ico │ │ ├── neo-geo-pocket-color.ico │ │ ├── neo-geo-pocket.ico │ │ ├── neocd.ico │ │ ├── neogeoaes.ico │ │ ├── neogeomvs.ico │ │ ├── nes.ico │ │ ├── new-nintendo-3ds.ico │ │ ├── ngage.ico │ │ ├── ngc.ico │ │ ├── ngp.ico │ │ ├── nintendo-dsi.ico │ │ ├── nuon.ico │ │ ├── odyssey--1.ico │ │ ├── odyssey-2-slash-videopac-g7000.ico │ │ ├── odyssey.ico │ │ ├── openbor.ico │ │ ├── pc-98.ico │ │ ├── pc-fx.ico │ │ ├── pce.ico │ │ ├── pcecd.ico │ │ ├── philips-cd-i.ico │ │ ├── picno.ico │ │ ├── pico-8.ico │ │ ├── pico.ico │ │ ├── pinball.ico │ │ ├── playdia.ico │ │ ├── pocket-challenge-v2.ico │ │ ├── pocket-challenge-w.ico │ │ ├── pocketstation.ico │ │ ├── pokemon-mini.ico │ │ ├── ps.ico │ │ ├── ps2.ico │ │ ├── ps3.ico │ │ ├── ps4--1.ico │ │ ├── ps5.ico │ │ ├── psp.ico │ │ ├── psvita.ico │ │ ├── rca-studio-ii.ico │ │ ├── rpgmaker.ico │ │ ├── satellaview.ico │ │ ├── saturn.ico │ │ ├── scummvm.ico │ │ ├── sega-master-system.ico │ │ ├── sega-pico.ico │ │ ├── sega32.ico │ │ ├── segacd.ico │ │ ├── segasgone.ico │ │ ├── sfam.ico │ │ ├── sg1000.ico │ │ ├── sgb.ico │ │ ├── sgfx.ico │ │ ├── sharp-x68000.ico │ │ ├── sms.ico │ │ ├── snes.ico │ │ ├── snes_alt.ico │ │ ├── study-box.ico │ │ ├── sufami-turbo.ico │ │ ├── super-acan.ico │ │ ├── supergrafx.ico │ │ ├── supervision.ico │ │ ├── switch.ico │ │ ├── systematic │ │ │ ├── 1292-advanced-programmable-video-system.svg │ │ │ ├── 3do.svg │ │ │ ├── 3ds.svg │ │ │ ├── 64dd.svg │ │ │ ├── acorn-archimedes.svg │ │ │ ├── acpc.svg │ │ │ ├── adventure-vision.svg │ │ │ ├── amazon-alexa.svg │ │ │ ├── amazon-fire-tv.svg │ │ │ ├── amiga-cd32.svg │ │ │ ├── amiga.svg │ │ │ ├── apf.svg │ │ │ ├── apple-i.svg │ │ │ ├── apple-iigs.svg │ │ │ ├── apple-pippin.svg │ │ │ ├── apple2gs.svg │ │ │ ├── appleii.svg │ │ │ ├── arcade.svg │ │ │ ├── arcadia-2001.svg │ │ │ ├── arduboy.svg │ │ │ ├── astrocade.svg │ │ │ ├── atari-jaguar-cd.svg │ │ │ ├── atari-st.svg │ │ │ ├── atari-vcs.svg │ │ │ ├── atari.svg │ │ │ ├── atari2600.svg │ │ │ ├── atari5200.svg │ │ │ ├── atari7800.svg │ │ │ ├── atari8bit.svg │ │ │ ├── atom.svg │ │ │ ├── atomiswave.svg │ │ │ ├── ay-3-8500.svg │ │ │ ├── ay-3-8603.svg │ │ │ ├── ay-3-8605.svg │ │ │ ├── ay-3-8610.svg │ │ │ ├── bbcmicro.svg │ │ │ ├── beena.svg │ │ │ ├── c-plus-4.svg │ │ │ ├── c128.svg │ │ │ ├── c64.svg │ │ │ ├── casio-loopy.svg │ │ │ ├── casio-pv-1000.svg │ │ │ ├── champion-2711.svg │ │ │ ├── colecoadam.svg │ │ │ ├── colecovision.svg │ │ │ ├── commodore-cdtv.svg │ │ │ ├── cpet.svg │ │ │ ├── cps1.svg │ │ │ ├── cps2.svg │ │ │ ├── cps3.svg │ │ │ ├── creativision.svg │ │ │ ├── dc.svg │ │ │ ├── dedicated-console.svg │ │ │ ├── dedicated-handheld.svg │ │ │ ├── default.svg │ │ │ ├── doom.svg │ │ │ ├── dos.svg │ │ │ ├── e-reader.svg │ │ │ ├── epoch-cassette-vision.svg │ │ │ ├── epoch-game-pocket-computer.svg │ │ │ ├── epoch-super-cassette-vision.svg │ │ │ ├── evercade.svg │ │ │ ├── fairchild-channel-f.svg │ │ │ ├── fairchild.svg │ │ │ ├── famicom.svg │ │ │ ├── fba2012.svg │ │ │ ├── fbneo.svg │ │ │ ├── fds.svg │ │ │ ├── fm-7.svg │ │ │ ├── fm-towns.svg │ │ │ ├── g-and-w.svg │ │ │ ├── gamate.svg │ │ │ ├── game-dot-com.svg │ │ │ ├── game-wave.svg │ │ │ ├── gamegear.svg │ │ │ ├── gamestick.svg │ │ │ ├── gb.svg │ │ │ ├── gba.svg │ │ │ ├── gbc.svg │ │ │ ├── genesis-slash-megadrive.svg │ │ │ ├── gizmondo.svg │ │ │ ├── gp2x-wiz.svg │ │ │ ├── gp2x.svg │ │ │ ├── gp32.svg │ │ │ ├── handheld-electronic-lcd.svg │ │ │ ├── hitachi-s1.svg │ │ │ ├── hyperscan.svg │ │ │ ├── intellivision-amico.svg │ │ │ ├── intellivision.svg │ │ │ ├── interton-video-2000.svg │ │ │ ├── jaguar.svg │ │ │ ├── laseractive.svg │ │ │ ├── leappad.svg │ │ │ ├── leapster-explorer-slash-leadpad-explorer.svg │ │ │ ├── leapster.svg │ │ │ ├── lynx.svg │ │ │ ├── mac.svg │ │ │ ├── mega-duck-slash-cougar-boy.svg │ │ │ ├── megaduck.svg │ │ │ ├── microvision--1.svg │ │ │ ├── ms.svg │ │ │ ├── msx.svg │ │ │ ├── msx2.svg │ │ │ ├── n64.svg │ │ │ ├── nds.svg │ │ │ ├── neo-geo-cd.svg │ │ │ ├── neo-geo-pocket-color.svg │ │ │ ├── neo-geo-pocket.svg │ │ │ ├── neo-geo-x.svg │ │ │ ├── neogeoaes.svg │ │ │ ├── neogeomvs.svg │ │ │ ├── nes.svg │ │ │ ├── new-nintendo-3ds.svg │ │ │ ├── ngage.svg │ │ │ ├── ngage2.svg │ │ │ ├── ngc.svg │ │ │ ├── ngp.svg │ │ │ ├── nintendo-dsi.svg │ │ │ ├── nuon.svg │ │ │ ├── odyssey--1.svg │ │ │ ├── odyssey-2-slash-videopac-g7000.svg │ │ │ ├── odyssey.svg │ │ │ ├── ouya.svg │ │ │ ├── pc-50x-family.svg │ │ │ ├── pc-98.svg │ │ │ ├── pc-fx.svg │ │ │ ├── pce.svg │ │ │ ├── pcecd.svg │ │ │ ├── philips-cd-i.svg │ │ │ ├── picno.svg │ │ │ ├── pico.svg │ │ │ ├── pippin.svg │ │ │ ├── playdate.svg │ │ │ ├── playdia.svg │ │ │ ├── pocket-challenge-v2.svg │ │ │ ├── pocket-challenge-w.svg │ │ │ ├── pocketstation.svg │ │ │ ├── pokemon-mini.svg │ │ │ ├── ps.svg │ │ │ ├── ps2.svg │ │ │ ├── ps3.svg │ │ │ ├── ps4--1.svg │ │ │ ├── ps5.svg │ │ │ ├── psp.svg │ │ │ ├── psvita.svg │ │ │ ├── r-zone.svg │ │ │ ├── rca-studio-ii.svg │ │ │ ├── rpgmaker.svg │ │ │ ├── satellaview.svg │ │ │ ├── saturn.svg │ │ │ ├── scummvm.svg │ │ │ ├── sega-32x.svg │ │ │ ├── sega-master-system.svg │ │ │ ├── sega-pico.svg │ │ │ ├── sega32.svg │ │ │ ├── segacd.svg │ │ │ ├── segasgone.svg │ │ │ ├── series-x.svg │ │ │ ├── sfam.svg │ │ │ ├── sg1000.svg │ │ │ ├── sgfx.svg │ │ │ ├── sharp-x68000.svg │ │ │ ├── sinclair-zx81.svg │ │ │ ├── sms.svg │ │ │ ├── snes.svg │ │ │ ├── socrates.svg │ │ │ ├── spectravideo.svg │ │ │ ├── stadia.svg │ │ │ ├── study-box.svg │ │ │ ├── sufami-turbo.svg │ │ │ ├── super-acan.svg │ │ │ ├── super-vision-8000.svg │ │ │ ├── supergrafx.svg │ │ │ ├── supervision.svg │ │ │ ├── swancrystal.svg │ │ │ ├── switch.svg │ │ │ ├── tele-spiel.svg │ │ │ ├── telstar-arcade.svg │ │ │ ├── terebikko-slash-see-n-say-video-phone.svg │ │ │ ├── thomson-mo5.svg │ │ │ ├── thomson-to.svg │ │ │ ├── ti-99.svg │ │ │ ├── ti-994a.svg │ │ │ ├── tic.svg │ │ │ ├── tomy-tutor.svg │ │ │ ├── turbografx-16-slash-pc-engine-cd.svg │ │ │ ├── turbografx16--1.svg │ │ │ ├── vb.svg │ │ │ ├── vc-4000.svg │ │ │ ├── vectrex.svg │ │ │ ├── vflash.svg │ │ │ ├── vic-20.svg │ │ │ ├── videobrain.svg │ │ │ ├── videopac-g7400.svg │ │ │ ├── videopac.svg │ │ │ ├── virtualboy.svg │ │ │ ├── vis.svg │ │ │ ├── visual-memory-unit-slash-visual-memory-system.svg │ │ │ ├── vsmile.svg │ │ │ ├── wasm-4.svg │ │ │ ├── watara-slash-quickshot-supervision.svg │ │ │ ├── wii.svg │ │ │ ├── wiiu.svg │ │ │ ├── wonderswan-color.svg │ │ │ ├── wonderswan.svg │ │ │ ├── ws.svg │ │ │ ├── x1.svg │ │ │ ├── xavixport.svg │ │ │ ├── xbox.svg │ │ │ ├── xbox360.svg │ │ │ ├── xboxone.svg │ │ │ ├── zeebo.svg │ │ │ ├── zod.svg │ │ │ ├── zodiac.svg │ │ │ ├── zx-spectrum-next.svg │ │ │ └── zxs.svg │ │ ├── tic.ico │ │ ├── turbografx-16-slash-pc-engine-cd.ico │ │ ├── turbografx16--1.ico │ │ ├── vb.ico │ │ ├── vectrex.ico │ │ ├── vic-20.ico │ │ ├── videopac-g7400.ico │ │ ├── videopac.ico │ │ ├── virtualboy.ico │ │ ├── visicom.ico │ │ ├── vsmile.ico │ │ ├── wasm-4.ico │ │ ├── watara-slash-quickshot-supervision.ico │ │ ├── wii.ico │ │ ├── wiiu.ico │ │ ├── win.ico │ │ ├── wonderswan-color.ico │ │ ├── wonderswan.ico │ │ ├── ws.ico │ │ ├── xbox.ico │ │ ├── xbox360.ico │ │ ├── xboxone.ico │ │ ├── zeebo.ico │ │ ├── zod.ico │ │ └── zxs.ico │ ├── ruffle │ │ └── powered_by_ruffle.png │ ├── scrappers │ │ ├── igdb.png │ │ ├── moby.png │ │ ├── sgdb.png │ │ └── ss.png │ └── webrcade │ │ └── feed │ │ ├── 2600-background.png │ │ ├── 2600-thumb.png │ │ ├── 3do-thumb.png │ │ ├── 5200-thumb.png │ │ ├── 7800-background.png │ │ ├── 7800-thumb.png │ │ ├── ATTRIBUTIONS │ │ ├── arcade-capcom-thumb.png │ │ ├── arcade-konami-thumb.png │ │ ├── arcade-thum.png │ │ ├── arcade-thumb.png │ │ ├── atari2600-background.png │ │ ├── atari2600-thumb.png │ │ ├── atari5200-thumb.png │ │ ├── atari7800-background.png │ │ ├── atari7800-thumb.png │ │ ├── coleco-thumb.png │ │ ├── colecovision-thumb.png │ │ ├── default-background.png │ │ ├── default-thumb.png │ │ ├── doom-background.png │ │ ├── doom-thumb.png │ │ ├── gamegear-background.png │ │ ├── gamegear-thumb.png │ │ ├── gb-background.png │ │ ├── gb-thumb.png │ │ ├── gba-background.png │ │ ├── gba-thumb.png │ │ ├── gbc-background.png │ │ ├── gbc-thumb.png │ │ ├── genesis-background.png │ │ ├── genesis-slash-megadrive-background.png │ │ ├── genesis-slash-megadrive-thumb.png │ │ ├── genesis-thumb.png │ │ ├── lynx-thumb.png │ │ ├── mastersystem-background.png │ │ ├── mastersystem-thumb.png │ │ ├── n64-thumb.png │ │ ├── neo-geo-cd-thumb.png │ │ ├── neo-geo-pocket-color-thumb.png │ │ ├── neo-geo-pocket-thumb.png │ │ ├── neogeo-thumb.png │ │ ├── neogeoaes-thumb.png │ │ ├── neogeocd-thumb.png │ │ ├── neogeomvs-thumb.png │ │ ├── nes-background.png │ │ ├── nes-thumb.png │ │ ├── ngc-thumb.png │ │ ├── ngp-thumb.png │ │ ├── pce-thumb.png │ │ ├── pcecd-thumb.png │ │ ├── pcecd.png │ │ ├── pcfx-thumb.png │ │ ├── ps-thumb.png │ │ ├── psx-thumb.png │ │ ├── quake-thumb.png │ │ ├── scummvm-background.png │ │ ├── scummvm-thumb.png │ │ ├── segacd-thumb.png │ │ ├── sg1000-thumb.png │ │ ├── sgx-thumb.png │ │ ├── sms-background.png │ │ ├── sms-thumb.png │ │ ├── snes-background.png │ │ ├── snes-thumb.png │ │ ├── supergrafx-thumb.png │ │ ├── turbografx-16-slash-pc-engine-cd-thumb.png │ │ ├── turbografx16--1.png │ │ ├── vb-thumb.png │ │ ├── virtualboy-thumb.png │ │ ├── wonderswan-color-thumb.png │ │ ├── wonderswan-thumb.png │ │ ├── ws-thumb.png │ │ └── wsc-thumb.png ├── eslint.config.js ├── index.html ├── jsconfig.json ├── package-lock.json ├── package.json ├── public │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon.ico │ ├── favicon.svg │ └── site.webmanifest ├── src │ ├── RomM.vue │ ├── __generated__ │ │ ├── index.ts │ │ └── models │ │ │ ├── AddFirmwareResponse.ts │ │ │ ├── Body_add_collection_api_collections_post.ts │ │ │ ├── Body_add_firmware_api_firmware_post.ts │ │ │ ├── Body_token_api_token_post.ts │ │ │ ├── Body_update_collection_api_collections__id__put.ts │ │ │ ├── Body_update_rom_api_roms__id__put.ts │ │ │ ├── Body_update_user_api_users__id__put.ts │ │ │ ├── CollectionSchema.ts │ │ │ ├── ConfigResponse.ts │ │ │ ├── CustomLimitOffsetPage_SimpleRomSchema_.ts │ │ │ ├── DetailedRomSchema.ts │ │ │ ├── EmulationDict.ts │ │ │ ├── FilesystemDict.ts │ │ │ ├── FirmwareSchema.ts │ │ │ ├── FrontendDict.ts │ │ │ ├── HTTPValidationError.ts │ │ │ ├── HeartbeatResponse.ts │ │ │ ├── IGDBAgeRating.ts │ │ │ ├── IGDBMetadataPlatform.ts │ │ │ ├── IGDBRelatedGame.ts │ │ │ ├── MessageResponse.ts │ │ │ ├── MetadataSourcesDict.ts │ │ │ ├── MobyMetadataPlatform.ts │ │ │ ├── OIDCDict.ts │ │ │ ├── PlatformSchema.ts │ │ │ ├── Role.ts │ │ │ ├── RomFileCategory.ts │ │ │ ├── RomFileSchema.ts │ │ │ ├── RomIGDBMetadata.ts │ │ │ ├── RomMetadataSchema.ts │ │ │ ├── RomMobyMetadata.ts │ │ │ ├── RomSSMetadata.ts │ │ │ ├── RomUserSchema.ts │ │ │ ├── RomUserStatus.ts │ │ │ ├── SaveSchema.ts │ │ │ ├── SchedulerDict.ts │ │ │ ├── ScreenshotSchema.ts │ │ │ ├── SearchCoverSchema.ts │ │ │ ├── SearchRomSchema.ts │ │ │ ├── SiblingRomSchema.ts │ │ │ ├── SimpleRomSchema.ts │ │ │ ├── StateSchema.ts │ │ │ ├── StatsReturn.ts │ │ │ ├── SystemDict.ts │ │ │ ├── TaskDict.ts │ │ │ ├── TinfoilFeedFileSchema.ts │ │ │ ├── TinfoilFeedSchema.ts │ │ │ ├── TinfoilFeedTitleDBSchema.ts │ │ │ ├── TokenResponse.ts │ │ │ ├── UserNotesSchema.ts │ │ │ ├── UserSchema.ts │ │ │ ├── ValidationError.ts │ │ │ ├── VirtualCollectionSchema.ts │ │ │ ├── WatcherDict.ts │ │ │ ├── WebrcadeFeedCategorySchema.ts │ │ │ ├── WebrcadeFeedItemPropsSchema.ts │ │ │ ├── WebrcadeFeedItemSchema.ts │ │ │ └── WebrcadeFeedSchema.ts │ ├── components │ │ ├── Details │ │ │ ├── ActionBar.vue │ │ │ ├── AdditionalContent.vue │ │ │ ├── BackgroundHeader.vue │ │ │ ├── Info │ │ │ │ ├── FileInfo.vue │ │ │ │ └── GameInfo.vue │ │ │ ├── PDFViewer.vue │ │ │ ├── Personal.vue │ │ │ ├── RelatedGames.vue │ │ │ ├── Saves.vue │ │ │ ├── Screenshots.vue │ │ │ ├── States.vue │ │ │ ├── Title.vue │ │ │ └── VersionSwitcher.vue │ │ ├── Gallery │ │ │ ├── AppBar │ │ │ │ ├── Base.vue │ │ │ │ ├── Collection │ │ │ │ │ ├── Base.vue │ │ │ │ │ └── CollectionInfoDrawer.vue │ │ │ │ ├── Platform │ │ │ │ │ ├── Base.vue │ │ │ │ │ ├── FirmwareBtn.vue │ │ │ │ │ ├── FirmwareDrawer.vue │ │ │ │ │ └── PlatformInfoDrawer.vue │ │ │ │ ├── Search │ │ │ │ │ ├── Base.vue │ │ │ │ │ ├── SearchBtn.vue │ │ │ │ │ └── SearchTextField.vue │ │ │ │ └── common │ │ │ │ │ ├── CharIndexBar.vue │ │ │ │ │ ├── FilterBtn.vue │ │ │ │ │ ├── FilterDrawer │ │ │ │ │ ├── Base.vue │ │ │ │ │ ├── FilterDuplicatesBtn.vue │ │ │ │ │ ├── FilterFavouritesBtn.vue │ │ │ │ │ ├── FilterMatchedBtn.vue │ │ │ │ │ └── FilterUnmatchedBtn.vue │ │ │ │ │ ├── FilterTextField.vue │ │ │ │ │ ├── GalleryViewBtn.vue │ │ │ │ │ ├── SelectingBtn.vue │ │ │ │ │ ├── SortBar.vue │ │ │ │ │ └── SortBtn.vue │ │ │ ├── FabOverlay.vue │ │ │ ├── LoadMoreBtn.vue │ │ │ └── Skeleton.vue │ │ ├── Home │ │ │ ├── Collections.vue │ │ │ ├── ContinuePlaying.vue │ │ │ ├── Platforms.vue │ │ │ ├── RecentAdded.vue │ │ │ ├── RecentSkeletonLoader.vue │ │ │ ├── Stats.vue │ │ │ └── VirtualCollections.vue │ │ ├── Settings │ │ │ ├── Administration │ │ │ │ ├── TaskOption.vue │ │ │ │ ├── Tasks.vue │ │ │ │ └── Users │ │ │ │ │ ├── Dialog │ │ │ │ │ ├── CreateUser.vue │ │ │ │ │ ├── DeleteUser.vue │ │ │ │ │ └── EditUser.vue │ │ │ │ │ └── Table.vue │ │ │ ├── Footer.vue │ │ │ ├── LibraryManagement │ │ │ │ ├── AddBtn.vue │ │ │ │ ├── Dialog │ │ │ │ │ ├── CreateExclusion.vue │ │ │ │ │ ├── CreatePlatformBinding.vue │ │ │ │ │ ├── CreatePlatformVersion.vue │ │ │ │ │ ├── DeletePlatformBinding.vue │ │ │ │ │ └── DeletePlatformVersion.vue │ │ │ │ ├── Excluded.vue │ │ │ │ ├── ExcludedCard.vue │ │ │ │ ├── PlatformBindCard.vue │ │ │ │ ├── PlatformBinding.vue │ │ │ │ └── PlatformVersions.vue │ │ │ └── UserInterface │ │ │ │ ├── Interface.vue │ │ │ │ ├── InterfaceOption.vue │ │ │ │ ├── Language.vue │ │ │ │ ├── LanguageSelector.vue │ │ │ │ ├── Theme.vue │ │ │ │ └── ThemeOption.vue │ │ └── common │ │ │ ├── Collection │ │ │ ├── Card.vue │ │ │ ├── Dialog │ │ │ │ ├── AddRoms.vue │ │ │ │ ├── CreateCollection.vue │ │ │ │ ├── DeleteCollection.vue │ │ │ │ └── RemoveRoms.vue │ │ │ ├── ListItem.vue │ │ │ └── RAvatar.vue │ │ │ ├── EmptyStates │ │ │ ├── EmptyCollection.vue │ │ │ ├── EmptyFirmware.vue │ │ │ ├── EmptyGame.vue │ │ │ ├── EmptyPlatform.vue │ │ │ └── EmptySearch.vue │ │ │ ├── Game │ │ │ ├── AdminMenu.vue │ │ │ ├── Card │ │ │ │ ├── ActionBar.vue │ │ │ │ ├── Base.vue │ │ │ │ ├── Flags.vue │ │ │ │ ├── Related.vue │ │ │ │ └── Sources.vue │ │ │ ├── Dialog │ │ │ │ ├── Asset │ │ │ │ │ ├── DeleteSaves.vue │ │ │ │ │ ├── DeleteStates.vue │ │ │ │ │ ├── SelectSave.vue │ │ │ │ │ ├── SelectState.vue │ │ │ │ │ ├── UploadSaves.vue │ │ │ │ │ └── UploadStates.vue │ │ │ │ ├── CopyDownloadLink.vue │ │ │ │ ├── DeleteRom.vue │ │ │ │ ├── EditRom.vue │ │ │ │ ├── MatchRom.vue │ │ │ │ ├── ShowQRCode.vue │ │ │ │ └── UploadRom.vue │ │ │ ├── FavBtn.vue │ │ │ ├── ListItem.vue │ │ │ ├── RAvatar.vue │ │ │ └── Table.vue │ │ │ ├── Navigation │ │ │ ├── CollectionsBtn.vue │ │ │ ├── CollectionsDrawer.vue │ │ │ ├── HomeBtn.vue │ │ │ ├── MainAppBar.vue │ │ │ ├── PlatformsBtn.vue │ │ │ ├── PlatformsDrawer.vue │ │ │ ├── ScanBtn.vue │ │ │ ├── SearchBtn.vue │ │ │ ├── SettingsDrawer.vue │ │ │ ├── UploadBtn.vue │ │ │ └── UserBtn.vue │ │ │ ├── NewVersionDialog.vue │ │ │ ├── Notifications │ │ │ ├── Notification.vue │ │ │ └── UploadProgress.vue │ │ │ ├── Platform │ │ │ ├── Card.vue │ │ │ ├── Dialog │ │ │ │ ├── DeleteFirmware.vue │ │ │ │ ├── DeletePlatform.vue │ │ │ │ └── UploadFirmware.vue │ │ │ ├── Icon.vue │ │ │ └── ListItem.vue │ │ │ ├── RDialog.vue │ │ │ ├── RIsotipo.vue │ │ │ ├── RSection.vue │ │ │ ├── SearchCover.vue │ │ │ └── ViewLoader.vue │ ├── layouts │ │ ├── Auth.vue │ │ ├── Main.vue │ │ └── Settings.vue │ ├── locales │ │ ├── check_i18n_locales.py │ │ ├── de_DE │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── en_GB │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── en_US │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── es_ES │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── fr_FR │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── index.ts │ │ ├── it_IT │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── ja_JP │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── ko_KR │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── pt_BR │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── ro_RO │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ ├── ru_RU │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ │ └── zh_CN │ │ │ ├── collection.json │ │ │ ├── common.json │ │ │ ├── emptyStates.json │ │ │ ├── gallery.json │ │ │ ├── home.json │ │ │ ├── login.json │ │ │ ├── platform.json │ │ │ ├── play.json │ │ │ ├── rom.json │ │ │ ├── scan.json │ │ │ └── settings.json │ ├── main.ts │ ├── plugins │ │ ├── index.ts │ │ ├── mdeditor.ts │ │ ├── pinia.d.ts │ │ ├── pinia.ts │ │ ├── router.ts │ │ ├── transition │ │ │ └── index.ts │ │ └── vuetify.ts │ ├── services │ │ ├── api │ │ │ ├── collection.ts │ │ │ ├── config.ts │ │ │ ├── firmware.ts │ │ │ ├── identity.ts │ │ │ ├── index.ts │ │ │ ├── platform.ts │ │ │ ├── rom.ts │ │ │ ├── save.ts │ │ │ ├── screenshot.ts │ │ │ ├── sgdb.ts │ │ │ ├── state.ts │ │ │ └── user.ts │ │ └── socket.ts │ ├── stores │ │ ├── auth.ts │ │ ├── collections.ts │ │ ├── config.ts │ │ ├── download.ts │ │ ├── galleryFilter.ts │ │ ├── galleryView.ts │ │ ├── heartbeat.ts │ │ ├── language.ts │ │ ├── navigation.ts │ │ ├── notifications.ts │ │ ├── platforms.ts │ │ ├── roms.ts │ │ ├── runningTasks.ts │ │ ├── scanning.ts │ │ ├── upload.ts │ │ └── users.ts │ ├── styles │ │ ├── common.css │ │ ├── fonts.css │ │ ├── scrollbar.css │ │ └── themes.ts │ ├── types │ │ ├── emitter.d.ts │ │ ├── index.ts │ │ ├── main.d.ts │ │ ├── rom.d.ts │ │ └── user.d.ts │ ├── utils │ │ ├── covers.ts │ │ ├── index.ts │ │ └── indexdb-monitor.ts │ └── views │ │ ├── 404.vue │ │ ├── Auth │ │ ├── Login.vue │ │ └── Setup.vue │ │ ├── Gallery │ │ ├── Collection.vue │ │ ├── Platform.vue │ │ └── Search.vue │ │ ├── GameDetails.vue │ │ ├── Home.vue │ │ ├── Player │ │ ├── EmulatorJS │ │ │ ├── Base.vue │ │ │ ├── CacheDialog.vue │ │ │ ├── Player.vue │ │ │ └── utils.ts │ │ └── RuffleRS │ │ │ └── Base.vue │ │ ├── Scan.vue │ │ └── Settings │ │ ├── Administration.vue │ │ ├── LibraryManagement.vue │ │ ├── UserInterface.vue │ │ └── UserProfile.vue ├── tsconfig.json └── vite.config.js ├── poetry.lock ├── pyproject.toml └── pytest.ini /.gitattributes: -------------------------------------------------------------------------------- 1 | **/tests/cassettes/*.yaml linguist-generated 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: romm 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/custom.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Custom issue template 3 | about: Describe this issue template's purpose here. 4 | title: "[Other] Custom issue title" 5 | assignees: "" 6 | --- 7 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[Feature] Feature title" 5 | assignees: "" 6 | --- 7 | 8 | **Is your feature request related to a problem? Please describe.** 9 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 10 | 11 | **Describe the solution you'd like** 12 | A clear and concise description of what you want to happen. 13 | 14 | **Describe alternatives you've considered** 15 | A clear and concise description of any alternative solutions or features you've considered. 16 | 17 | **Additional context** 18 | Add any other context or screenshots about the feature request here. 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/ui-ux.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: UI/UX 3 | about: UI/UX improvement suggestion 4 | title: "[UI/UX] Title" 5 | labels: ui/ux 6 | assignees: "" 7 | --- 8 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | **Description** 5 | Explain the changes or enhancements you are proposing with this pull request. 6 | 7 | **Checklist** 8 | Please check all that apply. 9 | 10 | - [ ] I've tested the changes locally 11 | - [ ] I've updated relevant comments 12 | - [ ] I've assigned reviewers for this PR 13 | - [ ] I've added unit tests that cover the changes 14 | 15 | #### Screenshots 16 | -------------------------------------------------------------------------------- /.github/resources/isotipo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/isotipo.png -------------------------------------------------------------------------------- /.github/resources/logotipo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/logotipo.png -------------------------------------------------------------------------------- /.github/resources/screenshots/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/details.png -------------------------------------------------------------------------------- /.github/resources/screenshots/gallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/gallery.png -------------------------------------------------------------------------------- /.github/resources/screenshots/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/home.png -------------------------------------------------------------------------------- /.github/resources/screenshots/m_details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/m_details.png -------------------------------------------------------------------------------- /.github/resources/screenshots/m_drawer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/m_drawer.png -------------------------------------------------------------------------------- /.github/resources/screenshots/m_gallery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/m_gallery.png -------------------------------------------------------------------------------- /.github/resources/screenshots/m_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/m_home.png -------------------------------------------------------------------------------- /.github/resources/screenshots/m_search_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/m_search_1.png -------------------------------------------------------------------------------- /.github/resources/screenshots/m_search_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/m_search_2.png -------------------------------------------------------------------------------- /.github/resources/screenshots/preview-desktop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/preview-desktop.gif -------------------------------------------------------------------------------- /.github/resources/screenshots/preview-mobile.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/preview-mobile.gif -------------------------------------------------------------------------------- /.github/resources/screenshots/search_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/search_1.png -------------------------------------------------------------------------------- /.github/resources/screenshots/search_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/screenshots/search_2.png -------------------------------------------------------------------------------- /.github/resources/social_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/.github/resources/social_preview.png -------------------------------------------------------------------------------- /.github/workflows/i18n.yml: -------------------------------------------------------------------------------- 1 | name: I18N Localization Check 2 | 3 | on: 4 | pull_request: 5 | paths: 6 | - "frontend/src/locales/**/*.json" 7 | 8 | permissions: read-all 9 | 10 | jobs: 11 | check-translations: 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - name: Checkout code 16 | uses: actions/checkout@v4 17 | 18 | - name: Set up Python 3.12 19 | uses: actions/setup-python@v5 20 | with: 21 | python-version: "3.12" 22 | 23 | - name: Run localization check 24 | run: python frontend/src/locales/check_i18n_locales.py 25 | -------------------------------------------------------------------------------- /.github/workflows/trunk-check.yml: -------------------------------------------------------------------------------- 1 | name: Run Trunk Check 2 | 3 | on: 4 | pull_request: 5 | 6 | concurrency: 7 | group: ${{ github.head_ref || github.run_id }} 8 | cancel-in-progress: true 9 | 10 | permissions: read-all 11 | 12 | jobs: 13 | trunk_check: 14 | runs-on: ubuntu-latest 15 | permissions: 16 | checks: write # For trunk to post annotations 17 | contents: read # For repo checkout 18 | steps: 19 | - name: Checkout 20 | uses: actions/checkout@v4 21 | - name: Trunk Check 22 | uses: trunk-io/trunk-action@v1 23 | -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- 1 | 3.12 2 | -------------------------------------------------------------------------------- /.trunk/.gitignore: -------------------------------------------------------------------------------- 1 | *out 2 | *logs 3 | *actions 4 | *notifications 5 | *tools 6 | plugins 7 | user_trunk.yaml 8 | user.yaml 9 | tmp 10 | -------------------------------------------------------------------------------- /.trunk/configs/.bandit: -------------------------------------------------------------------------------- 1 | [bandit] 2 | exclude = tests 3 | skips=B101 4 | -------------------------------------------------------------------------------- /.trunk/configs/.hadolint.yaml: -------------------------------------------------------------------------------- 1 | # Following source doesn't work in most setups 2 | ignored: 3 | - SC1090 4 | - SC1091 5 | -------------------------------------------------------------------------------- /.trunk/configs/.isort.cfg: -------------------------------------------------------------------------------- 1 | [settings] 2 | profile=black 3 | -------------------------------------------------------------------------------- /.trunk/configs/.markdownlint.yaml: -------------------------------------------------------------------------------- 1 | # Prettier friendly markdownlint config (all formatting rules disabled) 2 | extends: markdownlint/style/prettier 3 | -------------------------------------------------------------------------------- /.trunk/configs/.shellcheckrc: -------------------------------------------------------------------------------- 1 | enable=all 2 | source-path=SCRIPTDIR 3 | disable=SC2154 4 | 5 | # If you're having issues with shellcheck following source, disable the errors via: 6 | # disable=SC1090 7 | # disable=SC1091 8 | -------------------------------------------------------------------------------- /.trunk/configs/.yamllint.yaml: -------------------------------------------------------------------------------- 1 | rules: 2 | quoted-strings: 3 | required: false 4 | key-duplicates: {} 5 | octal-values: 6 | forbid-implicit-octal: true 7 | -------------------------------------------------------------------------------- /.trunk/configs/mypy.ini: -------------------------------------------------------------------------------- 1 | [mypy] 2 | check_untyped_defs = True 3 | disable_error_code = import-untyped 4 | exclude = ["tests", "alembic"] 5 | -------------------------------------------------------------------------------- /.trunk/configs/ruff.toml: -------------------------------------------------------------------------------- 1 | [lint] 2 | # Generic, formatter-friendly config. 3 | # ASYNC: flake8-async. 4 | # B: flake8-bugbear. 5 | # D3: flake8-docstrings (D3xx). 6 | # E: pycodestyle errors. 7 | # F: Pyflakes. 8 | select = ["ASYNC", "B", "D3", "E", "F"] 9 | 10 | # Never enforce `E501` (line length violations). This should be handled by formatters. 11 | ignore = ["E501"] 12 | -------------------------------------------------------------------------------- /.trunk/configs/svgo.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | { 4 | name: "preset-default", 5 | params: { 6 | overrides: { 7 | removeViewBox: false, // https://github.com/svg/svgo/issues/1128 8 | sortAttrs: true, 9 | removeOffCanvasPaths: true, 10 | cleanupIDs: false, 11 | }, 12 | }, 13 | }, 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /.trunk/setup-ci/action.yaml: -------------------------------------------------------------------------------- 1 | name: Trunk Check setup 2 | description: Set up dependencies for Trunk Check 3 | 4 | runs: 5 | using: composite 6 | steps: 7 | - name: Setup node 8 | uses: actions/setup-node@v4 9 | with: 10 | node-version: 18 11 | 12 | - name: Install dependencies 13 | shell: bash 14 | run: npm install 15 | working-directory: frontend 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "python.testing.cwd": "${workspaceFolder}/backend", 3 | "python.testing.pytestArgs": ["."], 4 | "python.testing.unittestEnabled": false, 5 | "python.testing.pytestEnabled": true, 6 | "postman.settings.dotenv-detection-notification-visibility": false 7 | } 8 | -------------------------------------------------------------------------------- /backend/__version__.py: -------------------------------------------------------------------------------- 1 | __version__ = "" 2 | -------------------------------------------------------------------------------- /backend/adapters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/adapters/__init__.py -------------------------------------------------------------------------------- /backend/adapters/services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/adapters/services/__init__.py -------------------------------------------------------------------------------- /backend/alembic/script.py.mako: -------------------------------------------------------------------------------- 1 | """${message} 2 | 3 | Revision ID: ${up_revision} 4 | Revises: ${down_revision | comma,n} 5 | Create Date: ${create_date} 6 | 7 | """ 8 | from alembic import op 9 | import sqlalchemy as sa 10 | ${imports if imports else ""} 11 | 12 | # revision identifiers, used by Alembic. 13 | revision = ${repr(up_revision)} 14 | down_revision = ${repr(down_revision)} 15 | branch_labels = ${repr(branch_labels)} 16 | depends_on = ${repr(depends_on)} 17 | 18 | 19 | def upgrade() -> None: 20 | ${upgrades if upgrades else "pass"} 21 | 22 | 23 | def downgrade() -> None: 24 | ${downgrades if downgrades else "pass"} 25 | -------------------------------------------------------------------------------- /backend/alembic/versions/0030_user_email_null.py: -------------------------------------------------------------------------------- 1 | """Change empty string in users.email to NULL. 2 | 3 | Revision ID: 0030_user_email_null 4 | Revises: 0029_platforms_custom_name 5 | Create Date: 2025-01-14 01:30:39.696257 6 | 7 | """ 8 | 9 | from alembic import op 10 | 11 | # revision identifiers, used by Alembic. 12 | revision = "0030_user_email_null" 13 | down_revision = "0029_platforms_custom_name" 14 | branch_labels = None 15 | depends_on = None 16 | 17 | 18 | def upgrade() -> None: 19 | with op.batch_alter_table("users", schema=None) as batch_op: 20 | batch_op.execute("UPDATE users SET email = NULL WHERE email = ''") 21 | 22 | 23 | def downgrade() -> None: 24 | with op.batch_alter_table("users", schema=None) as batch_op: 25 | batch_op.execute("UPDATE users SET email = '' WHERE email IS NULL") 26 | -------------------------------------------------------------------------------- /backend/config/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/config/tests/__init__.py -------------------------------------------------------------------------------- /backend/config/tests/fixtures/config/config.yml: -------------------------------------------------------------------------------- 1 | # Example config file used only for testing 2 | # Refer to examples/config.example.yml for a more detailed config file 3 | 4 | exclude: 5 | platforms: 6 | - "romm" 7 | roms: 8 | single_file: 9 | names: 10 | - "info.txt" 11 | extensions: 12 | - "xml" 13 | 14 | multi_file: 15 | names: 16 | - "my_multi_file_game" 17 | - "DLC" 18 | parts: 19 | names: 20 | - "data.xml" 21 | extensions: 22 | - "txt" 23 | system: 24 | platforms: 25 | gc: "ngc" 26 | versions: 27 | naomi: "arcade" 28 | 29 | filesystem: 30 | roms_folder: "ROMS" 31 | firmware_folder: "BIOS" 32 | -------------------------------------------------------------------------------- /backend/config/tests/fixtures/config/empty_config.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/config/tests/fixtures/config/empty_config.yml -------------------------------------------------------------------------------- /backend/decorators/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/decorators/__init__.py -------------------------------------------------------------------------------- /backend/endpoints/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/endpoints/__init__.py -------------------------------------------------------------------------------- /backend/endpoints/responses/__init__.py: -------------------------------------------------------------------------------- 1 | from typing import TypedDict 2 | 3 | 4 | class MessageResponse(TypedDict): 5 | msg: str 6 | -------------------------------------------------------------------------------- /backend/endpoints/responses/assets.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from .base import BaseModel 4 | 5 | 6 | class BaseAsset(BaseModel): 7 | id: int 8 | rom_id: int 9 | user_id: int 10 | file_name: str 11 | file_name_no_tags: str 12 | file_name_no_ext: str 13 | file_extension: str 14 | file_path: str 15 | file_size_bytes: int 16 | full_path: str 17 | download_path: str 18 | created_at: datetime 19 | updated_at: datetime 20 | 21 | class Config: 22 | from_attributes = True 23 | 24 | 25 | class ScreenshotSchema(BaseAsset): 26 | pass 27 | 28 | 29 | class SaveSchema(BaseAsset): 30 | emulator: str | None 31 | screenshot: ScreenshotSchema | None 32 | 33 | 34 | class StateSchema(BaseAsset): 35 | emulator: str | None 36 | screenshot: ScreenshotSchema | None 37 | -------------------------------------------------------------------------------- /backend/endpoints/responses/base.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime, timezone 2 | 3 | from pydantic import BaseModel as PydanticBaseModel 4 | from pydantic import ConfigDict 5 | 6 | 7 | class BaseModel(PydanticBaseModel): 8 | """Ensures all datetime fields include UTC timezone""" 9 | 10 | model_config = ConfigDict( 11 | json_encoders={ 12 | datetime: lambda dt: ( 13 | dt.isoformat() 14 | if dt.tzinfo 15 | else dt.replace(tzinfo=timezone.utc).isoformat() 16 | ) 17 | } 18 | ) 19 | -------------------------------------------------------------------------------- /backend/endpoints/responses/config.py: -------------------------------------------------------------------------------- 1 | from typing import TypedDict 2 | 3 | 4 | class ConfigResponse(TypedDict): 5 | EXCLUDED_PLATFORMS: list[str] 6 | EXCLUDED_SINGLE_EXT: list[str] 7 | EXCLUDED_SINGLE_FILES: list[str] 8 | EXCLUDED_MULTI_FILES: list[str] 9 | EXCLUDED_MULTI_PARTS_EXT: list[str] 10 | EXCLUDED_MULTI_PARTS_FILES: list[str] 11 | PLATFORMS_BINDING: dict[str, str] 12 | PLATFORMS_VERSIONS: dict[str, str] 13 | -------------------------------------------------------------------------------- /backend/endpoints/responses/firmware.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | from typing import TypedDict 3 | 4 | from .base import BaseModel 5 | 6 | 7 | class FirmwareSchema(BaseModel): 8 | id: int 9 | 10 | file_name: str 11 | file_name_no_tags: str 12 | file_name_no_ext: str 13 | file_extension: str 14 | file_path: str 15 | file_size_bytes: int 16 | 17 | full_path: str 18 | is_verified: bool 19 | crc_hash: str 20 | md5_hash: str 21 | sha1_hash: str 22 | 23 | created_at: datetime 24 | updated_at: datetime 25 | 26 | class Config: 27 | from_attributes = True 28 | 29 | 30 | class AddFirmwareResponse(TypedDict): 31 | uploaded: int 32 | firmware: list[FirmwareSchema] 33 | -------------------------------------------------------------------------------- /backend/endpoints/responses/identity.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from models.user import Role 4 | 5 | from .base import BaseModel 6 | 7 | 8 | class UserSchema(BaseModel): 9 | id: int 10 | username: str 11 | email: str | None 12 | enabled: bool 13 | role: Role 14 | oauth_scopes: list[str] 15 | avatar_path: str 16 | last_login: datetime | None 17 | last_active: datetime | None 18 | 19 | created_at: datetime 20 | updated_at: datetime 21 | 22 | class Config: 23 | from_attributes = True 24 | -------------------------------------------------------------------------------- /backend/endpoints/responses/oauth.py: -------------------------------------------------------------------------------- 1 | from typing import NotRequired, TypedDict 2 | 3 | 4 | class TokenResponse(TypedDict): 5 | access_token: str 6 | refresh_token: NotRequired[str] 7 | token_type: str 8 | expires: int 9 | -------------------------------------------------------------------------------- /backend/endpoints/responses/search.py: -------------------------------------------------------------------------------- 1 | from .base import BaseModel 2 | 3 | 4 | class SearchRomSchema(BaseModel): 5 | id: int | None = None 6 | igdb_id: int | None = None 7 | moby_id: int | None = None 8 | ss_id: int | None = None 9 | slug: str 10 | name: str 11 | summary: str 12 | igdb_url_cover: str = "" 13 | moby_url_cover: str = "" 14 | ss_url_cover: str = "" 15 | platform_id: int 16 | 17 | 18 | class SearchCoverSchema(BaseModel): 19 | name: str 20 | resources: list 21 | -------------------------------------------------------------------------------- /backend/endpoints/responses/stats.py: -------------------------------------------------------------------------------- 1 | from typing import TypedDict 2 | 3 | 4 | class StatsReturn(TypedDict): 5 | PLATFORMS: int 6 | ROMS: int 7 | SAVES: int 8 | STATES: int 9 | SCREENSHOTS: int 10 | FILESIZE: int 11 | -------------------------------------------------------------------------------- /backend/endpoints/stats.py: -------------------------------------------------------------------------------- 1 | from endpoints.responses.stats import StatsReturn 2 | from handler.database import db_stats_handler 3 | from utils.router import APIRouter 4 | 5 | router = APIRouter( 6 | prefix="/stats", 7 | tags=["stats"], 8 | ) 9 | 10 | 11 | @router.get("") 12 | def stats() -> StatsReturn: 13 | """Endpoint to return the current RomM stats 14 | 15 | Returns: 16 | dict: Dictionary with all the stats 17 | """ 18 | 19 | return { 20 | "PLATFORMS": db_stats_handler.get_platforms_count(), 21 | "ROMS": db_stats_handler.get_roms_count(), 22 | "SAVES": db_stats_handler.get_saves_count(), 23 | "STATES": db_stats_handler.get_states_count(), 24 | "SCREENSHOTS": db_stats_handler.get_screenshots_count(), 25 | "FILESIZE": db_stats_handler.get_total_filesize(), 26 | } 27 | -------------------------------------------------------------------------------- /backend/endpoints/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/endpoints/tests/__init__.py -------------------------------------------------------------------------------- /backend/endpoints/tests/test_config.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | from fastapi.testclient import TestClient 3 | from main import app 4 | 5 | 6 | @pytest.fixture 7 | def client(): 8 | with TestClient(app) as client: 9 | yield client 10 | 11 | 12 | def test_config(client): 13 | response = client.get("/api/config") 14 | assert response.status_code == 200 15 | 16 | config = response.json() 17 | assert config.get("EXCLUDED_PLATFORMS") == [] 18 | assert config.get("EXCLUDED_SINGLE_EXT") == [] 19 | assert config.get("EXCLUDED_SINGLE_FILES") == [] 20 | assert config.get("EXCLUDED_MULTI_FILES") == [] 21 | assert config.get("EXCLUDED_MULTI_PARTS_EXT") == [] 22 | assert config.get("EXCLUDED_MULTI_PARTS_FILES") == [] 23 | assert config.get("PLATFORMS_BINDING") == {} 24 | -------------------------------------------------------------------------------- /backend/endpoints/tests/test_platform.py: -------------------------------------------------------------------------------- 1 | import pytest 2 | from fastapi.testclient import TestClient 3 | from main import app 4 | 5 | 6 | @pytest.fixture 7 | def client(): 8 | with TestClient(app) as client: 9 | yield client 10 | 11 | 12 | def test_get_platforms(client, access_token, platform): 13 | response = client.get("/api/platforms") 14 | assert response.status_code == 403 15 | 16 | response = client.get( 17 | "/api/platforms", headers={"Authorization": f"Bearer {access_token}"} 18 | ) 19 | assert response.status_code == 200 20 | 21 | platforms = response.json() 22 | assert len(platforms) == 1 23 | -------------------------------------------------------------------------------- /backend/exceptions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/exceptions/__init__.py -------------------------------------------------------------------------------- /backend/exceptions/config_exceptions.py: -------------------------------------------------------------------------------- 1 | class ConfigNotReadableException(Exception): 2 | def __init__(self): 3 | self.message = "Config file can't be read. Check config.yml permissions" 4 | super().__init__(self.message) 5 | 6 | def __repr__(self) -> str: 7 | return self.message 8 | 9 | 10 | class ConfigNotWritableException(Exception): 11 | def __init__(self): 12 | self.message = "Config file is not writable. Check config.yml permissions" 13 | super().__init__(self.message) 14 | 15 | def __repr__(self) -> str: 16 | return self.message 17 | -------------------------------------------------------------------------------- /backend/exceptions/socket_exceptions.py: -------------------------------------------------------------------------------- 1 | class ScanStoppedException(Exception): ... 2 | -------------------------------------------------------------------------------- /backend/exceptions/task_exceptions.py: -------------------------------------------------------------------------------- 1 | class SchedulerException(Exception): 2 | def __init__(self, message: str): 3 | self.message = message 4 | super().__init__(self.message) 5 | 6 | def __repr__(self): 7 | return self.message 8 | -------------------------------------------------------------------------------- /backend/handler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/handler/__init__.py -------------------------------------------------------------------------------- /backend/handler/auth/__init__.py: -------------------------------------------------------------------------------- 1 | from .base_handler import AuthHandler, OAuthHandler, OpenIDHandler 2 | 3 | auth_handler = AuthHandler() 4 | oauth_handler = OAuthHandler() 5 | oidc_handler = OpenIDHandler() 6 | -------------------------------------------------------------------------------- /backend/handler/auth/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/handler/auth/tests/__init__.py -------------------------------------------------------------------------------- /backend/handler/auth/tests/conftest.py: -------------------------------------------------------------------------------- 1 | from handler.tests.conftest import ( # noqa 2 | admin_user, 3 | clear_database, 4 | editor_user, 5 | setup_database, 6 | viewer_user, 7 | ) 8 | -------------------------------------------------------------------------------- /backend/handler/filesystem/__init__.py: -------------------------------------------------------------------------------- 1 | from .assets_handler import FSAssetsHandler 2 | from .firmware_handler import FSFirmwareHandler 3 | from .platforms_handler import FSPlatformsHandler 4 | from .resources_handler import FSResourcesHandler 5 | from .roms_handler import FSRomsHandler 6 | 7 | fs_asset_handler = FSAssetsHandler() 8 | fs_firmware_handler = FSFirmwareHandler() 9 | fs_platform_handler = FSPlatformsHandler() 10 | fs_rom_handler = FSRomsHandler() 11 | fs_resource_handler = FSResourcesHandler() 12 | -------------------------------------------------------------------------------- /backend/handler/filesystem/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/handler/filesystem/tests/__init__.py -------------------------------------------------------------------------------- /backend/handler/metadata/__init__.py: -------------------------------------------------------------------------------- 1 | from .igdb_handler import IGDBHandler 2 | from .moby_handler import MobyGamesHandler 3 | from .sgdb_handler import SGDBBaseHandler 4 | from .ss_handler import SSHandler 5 | 6 | meta_igdb_handler = IGDBHandler() 7 | meta_moby_handler = MobyGamesHandler() 8 | meta_ss_handler = SSHandler() 9 | meta_sgdb_handler = SGDBBaseHandler() 10 | -------------------------------------------------------------------------------- /backend/handler/socket_handler.py: -------------------------------------------------------------------------------- 1 | import socketio # type: ignore 2 | from config import REDIS_URL 3 | from utils import json as json_module 4 | 5 | 6 | class SocketHandler: 7 | def __init__(self) -> None: 8 | self.socket_server = socketio.AsyncServer( 9 | cors_allowed_origins="*", 10 | async_mode="asgi", 11 | json=json_module, 12 | logger=False, 13 | engineio_logger=False, 14 | client_manager=socketio.AsyncRedisManager(str(REDIS_URL)), 15 | ) 16 | 17 | self.socket_app = socketio.ASGIApp( 18 | self.socket_server, socketio_path="/ws/socket.io" 19 | ) 20 | 21 | 22 | socket_handler = SocketHandler() 23 | -------------------------------------------------------------------------------- /backend/handler/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/handler/tests/__init__.py -------------------------------------------------------------------------------- /backend/logger/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/logger/__init__.py -------------------------------------------------------------------------------- /backend/logger/logger.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import sys 3 | 4 | from config import LOGLEVEL 5 | from logger.formatter import Formatter 6 | 7 | # Set up logger 8 | log = logging.getLogger("romm") 9 | log.setLevel(LOGLEVEL) 10 | 11 | # Set up sqlachemy logger 12 | # sql_log = logging.getLogger("sqlalchemy.engine") 13 | # sql_log.setLevel(LOGLEVEL) 14 | 15 | # Define stdout handler 16 | stdout_handler = logging.StreamHandler(sys.stdout) 17 | stdout_handler.setFormatter(Formatter()) 18 | log.addHandler(stdout_handler) 19 | # sql_log.addHandler(stdout_handler) 20 | 21 | # Hush passlib warnings 22 | logging.getLogger("passlib").setLevel(logging.ERROR) 23 | -------------------------------------------------------------------------------- /backend/logger/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/logger/tests/__init__.py -------------------------------------------------------------------------------- /backend/logger/tests/test_logger.py: -------------------------------------------------------------------------------- 1 | from logger.logger import log 2 | 3 | 4 | def test_logger(caplog): 5 | log.debug("Testing debug message") 6 | assert "debug message" in caplog.text 7 | 8 | log.info("Testing info message") 9 | assert "info message" in caplog.text 10 | 11 | log.warning("Testing warning message") 12 | assert "warning message" in caplog.text 13 | 14 | log.error("Testing error message") 15 | assert "error message" in caplog.text 16 | 17 | log.critical("Testing critical message") 18 | assert "critical message" in caplog.text 19 | -------------------------------------------------------------------------------- /backend/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/models/__init__.py -------------------------------------------------------------------------------- /backend/models/base.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from sqlalchemy import TIMESTAMP, func 4 | from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column 5 | 6 | 7 | class BaseModel(DeclarativeBase): 8 | created_at: Mapped[datetime] = mapped_column( 9 | TIMESTAMP(timezone=True), server_default=func.now() 10 | ) 11 | updated_at: Mapped[datetime] = mapped_column( 12 | TIMESTAMP(timezone=True), server_default=func.now(), onupdate=func.now() 13 | ) 14 | -------------------------------------------------------------------------------- /backend/models/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/models/tests/__init__.py -------------------------------------------------------------------------------- /backend/models/tests/conftest.py: -------------------------------------------------------------------------------- 1 | from handler.tests.conftest import ( # noqa 2 | admin_user, 3 | clear_database, 4 | editor_user, 5 | platform, 6 | rom, 7 | save, 8 | screenshot, 9 | setup_database, 10 | state, 11 | viewer_user, 12 | ) 13 | -------------------------------------------------------------------------------- /backend/models/tests/test_rom.py: -------------------------------------------------------------------------------- 1 | from models.rom import Rom 2 | 3 | 4 | def test_rom(rom: Rom): 5 | assert rom.fs_path == "test_platform_slug/roms" 6 | assert rom.full_path == "test_platform_slug/roms/test_rom.zip" 7 | -------------------------------------------------------------------------------- /backend/models/tests/test_user.py: -------------------------------------------------------------------------------- 1 | from handler.auth.constants import EDIT_SCOPES, FULL_SCOPES, WRITE_SCOPES 2 | from models.user import User 3 | 4 | 5 | def test_admin(admin_user: User): 6 | assert admin_user.oauth_scopes == FULL_SCOPES 7 | 8 | 9 | def test_editor(editor_user: User): 10 | assert editor_user.oauth_scopes == EDIT_SCOPES 11 | 12 | 13 | def test_user(viewer_user: User): 14 | assert viewer_user.oauth_scopes == WRITE_SCOPES 15 | -------------------------------------------------------------------------------- /backend/romm_test/assets/users/557365723a31/saves/n64/mupen64/Super Mario 64 (J) (Rev A).sav: -------------------------------------------------------------------------------- 1 | SUPER_MARIO_64_SAVE_FILE 2 | -------------------------------------------------------------------------------- /backend/romm_test/setup.sql: -------------------------------------------------------------------------------- 1 | CREATE DATABASE IF NOT EXISTS romm_test; 2 | CREATE USER IF NOT EXISTS 'romm_test'@'%' IDENTIFIED BY 'passwd'; 3 | GRANT ALL PRIVILEGES ON romm_test.* TO 'romm_test'@'%' WITH GRANT OPTION; 4 | FLUSH PRIVILEGES; 5 | -------------------------------------------------------------------------------- /backend/scheduler.py: -------------------------------------------------------------------------------- 1 | import sentry_sdk 2 | from config import SENTRY_DSN 3 | from logger.logger import log 4 | from tasks.scan_library import scan_library_task 5 | from tasks.tasks import tasks_scheduler 6 | from tasks.update_switch_titledb import update_switch_titledb_task 7 | from utils import get_version 8 | 9 | sentry_sdk.init( 10 | dsn=SENTRY_DSN, 11 | release="romm@" + get_version(), 12 | ) 13 | 14 | if __name__ == "__main__": 15 | # Initialize the tasks 16 | scan_library_task.init() 17 | update_switch_titledb_task.init() 18 | 19 | log.info("Starting scheduler") 20 | 21 | # Start the scheduler 22 | tasks_scheduler.run() 23 | -------------------------------------------------------------------------------- /backend/tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/backend/tasks/__init__.py -------------------------------------------------------------------------------- /backend/utils/__init__.py: -------------------------------------------------------------------------------- 1 | from __version__ import __version__ 2 | 3 | 4 | def get_version() -> str: 5 | """Returns current version tag""" 6 | if __version__ != "": 7 | return __version__ 8 | 9 | return "development" 10 | -------------------------------------------------------------------------------- /backend/utils/hashing.py: -------------------------------------------------------------------------------- 1 | def crc32_to_hex(value: int) -> str: 2 | return (value & 0xFFFFFFFF).to_bytes(4, byteorder="big").hex() 3 | -------------------------------------------------------------------------------- /backend/worker.py: -------------------------------------------------------------------------------- 1 | import sentry_sdk 2 | from config import SENTRY_DSN 3 | from handler.redis_handler import redis_client 4 | from rq import Queue, Worker 5 | from utils import get_version 6 | 7 | listen = ("high", "default", "low") 8 | 9 | sentry_sdk.init( 10 | dsn=SENTRY_DSN, 11 | release="romm@" + get_version(), 12 | ) 13 | 14 | 15 | if __name__ == "__main__": 16 | # Start the worker 17 | worker = Worker([Queue(name, connection=redis_client) for name in listen]) 18 | worker.work() 19 | -------------------------------------------------------------------------------- /docker/.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | node_modules/ 3 | 4 | **/venv 5 | venv/ 6 | 7 | **/__pycache__ 8 | __pycache__/ 9 | 10 | **/assets/library 11 | ../frontend/assets/library/ 12 | 13 | **/.env 14 | .env 15 | 16 | **/romm_test 17 | romm_test/ 18 | 19 | **/romm_mock 20 | romm_mock/ 21 | 22 | **/.pytest_cache 23 | .pytest_cache/ 24 | -------------------------------------------------------------------------------- /docker/build_local_image.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | branch_name="$(git symbolic-ref HEAD 2>/dev/null)" 4 | branch_name=${branch_name##refs/heads/} 5 | docker build -t "rommapp/romm:local-${branch_name}" . --file ./docker/Dockerfile 6 | -------------------------------------------------------------------------------- /docker/nginx/js/decode.js: -------------------------------------------------------------------------------- 1 | // Decode a Base64 encoded string received as a query parameter named 'value', 2 | // and return the decoded value in the response body. 3 | function decodeBase64(r) { 4 | var encodedValue = r.args.value; 5 | 6 | if (!encodedValue) { 7 | r.return(400, "Missing 'value' query parameter"); 8 | return; 9 | } 10 | 11 | try { 12 | var decodedValue = atob(encodedValue); 13 | r.return(200, decodedValue); 14 | } catch (e) { 15 | r.return(400, "Invalid Base64 encoding"); 16 | } 17 | } 18 | 19 | export default { decodeBase64 }; 20 | -------------------------------------------------------------------------------- /frontend/.nvmrc: -------------------------------------------------------------------------------- 1 | 18 2 | -------------------------------------------------------------------------------- /frontend/assets/auth_background_static.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/auth_background_static.png -------------------------------------------------------------------------------- /frontend/assets/auth_background_static.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/LICENSE: -------------------------------------------------------------------------------- 1 | **Icons and Assets** 2 | 3 | Unless otherwise indicated, all images and assets in this folder, including product names, trademarks, and registered trademarks, are the property of their respective owners. These images and assets are used for identification purposes only and their use does not imply endorsement. 4 | -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/auth0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/auth0.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/authelia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/authelia.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/authentik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/authentik.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/aws.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/azure.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/firebase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/firebase.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/fusionauth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/fusionauth.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/google.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/hydra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/hydra.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/kanidm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/kanidm.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/keycloak.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/keycloak.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/logto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/logto.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/okta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/okta.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/ping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/ping.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/pocket-id.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/pocket-id.png -------------------------------------------------------------------------------- /frontend/assets/dashboard-icons/zitadel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/dashboard-icons/zitadel.png -------------------------------------------------------------------------------- /frontend/assets/default/cover/empty.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/assets/default/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/default/user.png -------------------------------------------------------------------------------- /frontend/assets/default/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/assets/emulatorjs/powered_by_emulatorjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/emulatorjs/powered_by_emulatorjs.png -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkAnkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkAnkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBXkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBXkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBnkaSTbQWg.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkBnkaSTbQWg.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkC3kaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkC3kaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCHkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCHkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCXkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCXkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCnkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkCnkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkaHkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkaHkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkenkaSTbQWt4N.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO5CnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmkenkaSTbQWt4N.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3-UBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3CUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3GUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3OUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3iUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMawCUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBHMdazTgWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/fonts/roboto/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMaxKUBHMdazTgWw.woff2 -------------------------------------------------------------------------------- /frontend/assets/isotipo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/isotipo.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_ps2_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_ps2_circle.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_ps2_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_ps2_square.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_snes_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_snes_circle.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_snes_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_snes_square.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_xbox_one_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_xbox_one_circle.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_xbox_one_circle_grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_xbox_one_circle_grayscale.png -------------------------------------------------------------------------------- /frontend/assets/logos/romm_logo_xbox_one_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logos/romm_logo_xbox_one_square.png -------------------------------------------------------------------------------- /frontend/assets/logotipo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/logotipo.png -------------------------------------------------------------------------------- /frontend/assets/platforms/3do.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/3do.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/3ds.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/3ds.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/64dd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/64dd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/GamePark - GP32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/GamePark - GP32.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/acpc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/acpc.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/adventure-vision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/adventure-vision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/amiga.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/amiga.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/amiibo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/amiibo.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/android.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/android.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/apple-pippin.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/apple-pippin.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/appleii.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/appleii.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/arcade.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/arcade.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/arcadia-2001.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/arcadia-2001.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/astrocade.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/astrocade.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari-jaguar-cd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari-jaguar-cd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari-st.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari-st.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari2600.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari2600.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari5200.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari5200.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari7800.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari7800.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atari8bit.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atari8bit.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/atomiswave.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/atomiswave.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/bbcmicro.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/bbcmicro.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/beena.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/beena.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/c-plus-4.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/c-plus-4.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/c64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/c64.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/casio-loopy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/casio-loopy.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/casio-pv-1000.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/casio-pv-1000.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/chihiro.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/chihiro.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/coleco.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/coleco.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/colecovision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/colecovision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/cps1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/cps1.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/cps2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/cps2.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/cps3.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/cps3.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/creativision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/creativision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/daphne.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/daphne.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/dc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/dc.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/default.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/default.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/doom.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/doom.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/dos.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/dos.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/e-reader.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/e-reader.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/epoch-super-cassette-vision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/epoch-super-cassette-vision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/fairchild-channel-f.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/fairchild-channel-f.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/fairchild.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/fairchild.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/famicom.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/famicom.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/fba2012.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/fba2012.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/fbneo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/fbneo.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/fds.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/fds.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/flash.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/flash.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/g-and-w.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/g-and-w.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/game-dot-com.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/game-dot-com.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/game-master.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/game-master.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/gamegear.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/gamegear.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/gb.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/gb.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/gba.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/gba.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/gbc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/gbc.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/genesis-slash-megadrive.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/genesis-slash-megadrive.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/gizmondo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/gizmondo.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/gp32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/gp32.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/hyperscan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/hyperscan.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/intellivision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/intellivision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ios.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ios.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ique-player.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ique-player.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/j2me.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/j2me.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/jaguar.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/jaguar.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/java.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/java.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/leappad.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/leappad.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/leapster.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/leapster.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/loopy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/loopy.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/lynx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/lynx.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/mac.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/mac.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/md.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/md.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/megaduck.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/megaduck.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ms.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/msx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/msx.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/msx2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/msx2.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/n64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/n64.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/nds.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/nds.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/neo-geo-cd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/neo-geo-cd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/neo-geo-pocket-color.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/neo-geo-pocket-color.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/neo-geo-pocket.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/neo-geo-pocket.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/neocd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/neocd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/neogeoaes.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/neogeoaes.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/neogeomvs.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/neogeomvs.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/nes.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/nes.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/new-nintendo-3ds.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/new-nintendo-3ds.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ngage.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ngage.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ngc.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ngc.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ngp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ngp.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/nintendo-dsi.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/nintendo-dsi.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/nuon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/nuon.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/odyssey--1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/odyssey--1.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/odyssey-2-slash-videopac-g7000.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/odyssey-2-slash-videopac-g7000.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/odyssey.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/odyssey.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/openbor.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/openbor.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pc-98.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pc-98.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pc-fx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pc-fx.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pce.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pce.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pcecd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pcecd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/philips-cd-i.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/philips-cd-i.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/picno.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/picno.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pico-8.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pico-8.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pico.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pinball.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pinball.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/playdia.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/playdia.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pocket-challenge-v2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pocket-challenge-v2.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pocket-challenge-w.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pocket-challenge-w.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pocketstation.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pocketstation.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/pokemon-mini.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/pokemon-mini.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ps.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ps.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ps2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ps2.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ps3.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ps3.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ps4--1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ps4--1.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ps5.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ps5.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/psp.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/psp.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/psvita.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/psvita.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/rca-studio-ii.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/rca-studio-ii.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/rpgmaker.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/rpgmaker.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/satellaview.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/satellaview.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/saturn.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/saturn.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/scummvm.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/scummvm.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sega-master-system.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sega-master-system.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sega-pico.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sega-pico.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sega32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sega32.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/segacd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/segacd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/segasgone.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/segasgone.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sfam.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sfam.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sg1000.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sg1000.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sgb.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sgb.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sgfx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sgfx.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sharp-x68000.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sharp-x68000.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sms.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sms.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/snes.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/snes.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/snes_alt.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/snes_alt.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/study-box.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/study-box.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/sufami-turbo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/sufami-turbo.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/super-acan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/super-acan.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/supergrafx.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/supergrafx.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/supervision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/supervision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/switch.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/switch.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/systematic/wasm-4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /frontend/assets/platforms/tic.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/tic.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/turbografx-16-slash-pc-engine-cd.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/turbografx-16-slash-pc-engine-cd.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/turbografx16--1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/turbografx16--1.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/vb.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/vb.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/vectrex.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/vectrex.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/vic-20.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/vic-20.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/videopac-g7400.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/videopac-g7400.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/videopac.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/videopac.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/virtualboy.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/virtualboy.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/visicom.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/visicom.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/vsmile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/vsmile.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/wasm-4.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/wasm-4.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/watara-slash-quickshot-supervision.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/watara-slash-quickshot-supervision.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/wii.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/wii.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/wiiu.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/wiiu.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/win.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/win.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/wonderswan-color.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/wonderswan-color.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/wonderswan.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/wonderswan.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/ws.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/ws.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/xbox.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/xbox.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/xbox360.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/xbox360.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/xboxone.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/xboxone.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/zeebo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/zeebo.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/zod.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/zod.ico -------------------------------------------------------------------------------- /frontend/assets/platforms/zxs.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/platforms/zxs.ico -------------------------------------------------------------------------------- /frontend/assets/ruffle/powered_by_ruffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/ruffle/powered_by_ruffle.png -------------------------------------------------------------------------------- /frontend/assets/scrappers/igdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/scrappers/igdb.png -------------------------------------------------------------------------------- /frontend/assets/scrappers/moby.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/scrappers/moby.png -------------------------------------------------------------------------------- /frontend/assets/scrappers/sgdb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/scrappers/sgdb.png -------------------------------------------------------------------------------- /frontend/assets/scrappers/ss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/scrappers/ss.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/2600-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/2600-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/2600-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/2600-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/3do-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/3do-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/5200-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/5200-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/7800-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/7800-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/7800-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/7800-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/ATTRIBUTIONS: -------------------------------------------------------------------------------- 1 | ### Attribution Information for Libretro icons 2 | 3 | The files found in this folder are sourced from the webRcade project, which is licensed under then Apache License 2.0 4 | The original license can be found at https://github.com/webrcade/webrcade/blob/master/LICENSE 5 | For more information about the Apache License 2.0, visit https://www.apache.org/licenses/LICENSE-2.0 6 | 7 | The RomM Project 8 | December 27th, 2023 9 | -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/arcade-capcom-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/arcade-capcom-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/arcade-konami-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/arcade-konami-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/arcade-thum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/arcade-thum.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/arcade-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/arcade-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/atari2600-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/atari2600-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/atari2600-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/atari2600-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/atari5200-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/atari5200-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/atari7800-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/atari7800-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/atari7800-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/atari7800-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/coleco-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/coleco-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/colecovision-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/colecovision-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/default-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/default-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/default-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/default-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/doom-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/doom-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/doom-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/doom-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gamegear-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gamegear-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gamegear-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gamegear-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gb-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gb-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gb-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gb-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gba-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gba-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gba-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gba-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gbc-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gbc-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/gbc-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/gbc-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/genesis-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/genesis-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/genesis-slash-megadrive-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/genesis-slash-megadrive-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/genesis-slash-megadrive-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/genesis-slash-megadrive-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/genesis-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/genesis-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/lynx-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/lynx-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/mastersystem-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/mastersystem-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/mastersystem-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/mastersystem-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/n64-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/n64-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neo-geo-cd-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neo-geo-cd-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neo-geo-pocket-color-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neo-geo-pocket-color-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neo-geo-pocket-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neo-geo-pocket-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neogeo-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neogeo-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neogeoaes-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neogeoaes-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neogeocd-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neogeocd-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/neogeomvs-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/neogeomvs-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/nes-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/nes-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/nes-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/nes-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/ngc-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/ngc-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/ngp-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/ngp-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/pce-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/pce-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/pcecd-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/pcecd-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/pcecd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/pcecd.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/pcfx-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/pcfx-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/ps-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/ps-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/psx-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/psx-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/quake-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/quake-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/scummvm-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/scummvm-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/scummvm-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/scummvm-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/segacd-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/segacd-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/sg1000-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/sg1000-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/sgx-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/sgx-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/sms-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/sms-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/sms-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/sms-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/snes-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/snes-background.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/snes-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/snes-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/supergrafx-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/supergrafx-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/turbografx-16-slash-pc-engine-cd-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/turbografx-16-slash-pc-engine-cd-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/turbografx16--1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/turbografx16--1.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/vb-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/vb-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/virtualboy-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/virtualboy-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/wonderswan-color-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/wonderswan-color-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/wonderswan-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/wonderswan-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/ws-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/ws-thumb.png -------------------------------------------------------------------------------- /frontend/assets/webrcade/feed/wsc-thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/assets/webrcade/feed/wsc-thumb.png -------------------------------------------------------------------------------- /frontend/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowJs": true, 4 | "target": "es5", 5 | "module": "esnext", 6 | "baseUrl": "./", 7 | "moduleResolution": "node", 8 | "paths": { 9 | "@/*": ["src/*"] 10 | }, 11 | "lib": ["esnext", "dom", "dom.iterable", "scripthost"] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /frontend/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /frontend/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /frontend/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/public/apple-touch-icon.png -------------------------------------------------------------------------------- /frontend/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/public/favicon-16x16.png -------------------------------------------------------------------------------- /frontend/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/public/favicon-32x32.png -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rommapp/romm/abc7a05c5d4216fdf44c5b2d9f3c677a077c2d37/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/public/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /frontend/src/RomM.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 27 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/AddFirmwareResponse.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { FirmwareSchema } from './FirmwareSchema'; 6 | export type AddFirmwareResponse = { 7 | uploaded: number; 8 | firmware: Array; 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Body_add_collection_api_collections_post.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Body_add_collection_api_collections_post = { 6 | artwork?: (Blob | null); 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Body_add_firmware_api_firmware_post.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Body_add_firmware_api_firmware_post = { 6 | files: Array; 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Body_token_api_token_post.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Body_token_api_token_post = { 6 | grant_type?: string; 7 | scope?: string; 8 | username?: (string | null); 9 | password?: (string | null); 10 | client_id?: (string | null); 11 | client_secret?: (string | null); 12 | refresh_token?: (string | null); 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Body_update_collection_api_collections__id__put.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Body_update_collection_api_collections__id__put = { 6 | artwork?: (Blob | null); 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Body_update_rom_api_roms__id__put.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Body_update_rom_api_roms__id__put = { 6 | artwork?: (Blob | null); 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Body_update_user_api_users__id__put.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Body_update_user_api_users__id__put = { 6 | avatar?: (Blob | null); 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/CollectionSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type CollectionSchema = { 6 | name: string; 7 | description: string; 8 | rom_ids: Array; 9 | rom_count: number; 10 | path_cover_small: (string | null); 11 | path_cover_large: (string | null); 12 | path_covers_small: Array; 13 | path_covers_large: Array; 14 | id: number; 15 | url_cover: (string | null); 16 | user_id: number; 17 | user__username: string; 18 | is_public: boolean; 19 | is_favorite: boolean; 20 | is_virtual?: boolean; 21 | created_at: string; 22 | updated_at: string; 23 | }; 24 | 25 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/ConfigResponse.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type ConfigResponse = { 6 | EXCLUDED_PLATFORMS: Array; 7 | EXCLUDED_SINGLE_EXT: Array; 8 | EXCLUDED_SINGLE_FILES: Array; 9 | EXCLUDED_MULTI_FILES: Array; 10 | EXCLUDED_MULTI_PARTS_EXT: Array; 11 | EXCLUDED_MULTI_PARTS_FILES: Array; 12 | PLATFORMS_BINDING: Record; 13 | PLATFORMS_VERSIONS: Record; 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/CustomLimitOffsetPage_SimpleRomSchema_.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { SimpleRomSchema } from './SimpleRomSchema'; 6 | export type CustomLimitOffsetPage_SimpleRomSchema_ = { 7 | items: Array; 8 | total: (number | null); 9 | limit: (number | null); 10 | offset: (number | null); 11 | char_index: Record; 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/EmulationDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type EmulationDict = { 6 | DISABLE_EMULATOR_JS: boolean; 7 | DISABLE_RUFFLE_RS: boolean; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/FilesystemDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type FilesystemDict = { 6 | FS_PLATFORMS: Array; 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/FirmwareSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type FirmwareSchema = { 6 | id: number; 7 | file_name: string; 8 | file_name_no_tags: string; 9 | file_name_no_ext: string; 10 | file_extension: string; 11 | file_path: string; 12 | file_size_bytes: number; 13 | full_path: string; 14 | is_verified: boolean; 15 | crc_hash: string; 16 | md5_hash: string; 17 | sha1_hash: string; 18 | created_at: string; 19 | updated_at: string; 20 | }; 21 | 22 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/FrontendDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type FrontendDict = { 6 | UPLOAD_TIMEOUT: number; 7 | DISABLE_USERPASS_LOGIN: boolean; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/HTTPValidationError.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { ValidationError } from './ValidationError'; 6 | export type HTTPValidationError = { 7 | detail?: Array; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/IGDBAgeRating.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type IGDBAgeRating = { 6 | rating: string; 7 | category: string; 8 | rating_cover_url: string; 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/IGDBMetadataPlatform.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type IGDBMetadataPlatform = { 6 | igdb_id: number; 7 | name: string; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/IGDBRelatedGame.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type IGDBRelatedGame = { 6 | id: number; 7 | name: string; 8 | slug: string; 9 | type: string; 10 | cover_url: string; 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/MessageResponse.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type MessageResponse = { 6 | msg: string; 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/MetadataSourcesDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type MetadataSourcesDict = { 6 | ANY_SOURCE_ENABLED: boolean; 7 | IGDB_API_ENABLED: boolean; 8 | MOBY_API_ENABLED: boolean; 9 | SS_API_ENABLED: boolean; 10 | STEAMGRIDDB_ENABLED: boolean; 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/MobyMetadataPlatform.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type MobyMetadataPlatform = { 6 | moby_id: number; 7 | name: string; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/OIDCDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type OIDCDict = { 6 | ENABLED: boolean; 7 | PROVIDER: string; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/Role.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type Role = 'viewer' | 'editor' | 'admin'; 6 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomFileCategory.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type RomFileCategory = 'dlc' | 'hack' | 'manual' | 'patch' | 'update' | 'mod' | 'demo' | 'translation' | 'prototype'; 6 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomFileSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { RomFileCategory } from './RomFileCategory'; 6 | export type RomFileSchema = { 7 | id: number; 8 | rom_id: number; 9 | file_name: string; 10 | file_path: string; 11 | file_size_bytes: number; 12 | full_path: string; 13 | created_at: string; 14 | updated_at: string; 15 | last_modified: string; 16 | crc_hash: (string | null); 17 | md5_hash: (string | null); 18 | sha1_hash: (string | null); 19 | category: (RomFileCategory | null); 20 | }; 21 | 22 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomMetadataSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type RomMetadataSchema = { 6 | rom_id: number; 7 | genres: Array; 8 | franchises: Array; 9 | collections: Array; 10 | companies: Array; 11 | game_modes: Array; 12 | age_ratings: Array; 13 | first_release_date: (number | null); 14 | average_rating: (number | null); 15 | }; 16 | 17 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomMobyMetadata.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { MobyMetadataPlatform } from './MobyMetadataPlatform'; 6 | export type RomMobyMetadata = { 7 | moby_score?: string; 8 | genres?: Array; 9 | alternate_titles?: Array; 10 | platforms?: Array; 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomSSMetadata.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type RomSSMetadata = { 6 | ss_score?: string; 7 | first_release_date?: (number | null); 8 | alternative_names?: Array; 9 | companies?: Array; 10 | franchises?: Array; 11 | game_modes?: Array; 12 | genres?: Array; 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomUserSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { RomUserStatus } from './RomUserStatus'; 6 | export type RomUserSchema = { 7 | id: number; 8 | user_id: number; 9 | rom_id: number; 10 | created_at: string; 11 | updated_at: string; 12 | last_played: (string | null); 13 | note_raw_markdown: string; 14 | note_is_public: boolean; 15 | is_main_sibling: boolean; 16 | backlogged: boolean; 17 | now_playing: boolean; 18 | hidden: boolean; 19 | rating: number; 20 | difficulty: number; 21 | completion: number; 22 | status: (RomUserStatus | null); 23 | user__username: string; 24 | }; 25 | 26 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/RomUserStatus.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type RomUserStatus = 'incomplete' | 'finished' | 'completed_100' | 'retired' | 'never_playing'; 6 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/SaveSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { ScreenshotSchema } from './ScreenshotSchema'; 6 | export type SaveSchema = { 7 | id: number; 8 | rom_id: number; 9 | user_id: number; 10 | file_name: string; 11 | file_name_no_tags: string; 12 | file_name_no_ext: string; 13 | file_extension: string; 14 | file_path: string; 15 | file_size_bytes: number; 16 | full_path: string; 17 | download_path: string; 18 | created_at: string; 19 | updated_at: string; 20 | emulator: (string | null); 21 | screenshot: (ScreenshotSchema | null); 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/SchedulerDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { TaskDict } from './TaskDict'; 6 | export type SchedulerDict = { 7 | RESCAN: TaskDict; 8 | SWITCH_TITLEDB: TaskDict; 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/ScreenshotSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type ScreenshotSchema = { 6 | id: number; 7 | rom_id: number; 8 | user_id: number; 9 | file_name: string; 10 | file_name_no_tags: string; 11 | file_name_no_ext: string; 12 | file_extension: string; 13 | file_path: string; 14 | file_size_bytes: number; 15 | full_path: string; 16 | download_path: string; 17 | created_at: string; 18 | updated_at: string; 19 | }; 20 | 21 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/SearchCoverSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type SearchCoverSchema = { 6 | name: string; 7 | resources: Array; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/SearchRomSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type SearchRomSchema = { 6 | id?: (number | null); 7 | igdb_id?: (number | null); 8 | moby_id?: (number | null); 9 | ss_id?: (number | null); 10 | slug: string; 11 | name: string; 12 | summary: string; 13 | igdb_url_cover?: string; 14 | moby_url_cover?: string; 15 | ss_url_cover?: string; 16 | platform_id: number; 17 | }; 18 | 19 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/SiblingRomSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type SiblingRomSchema = { 6 | id: number; 7 | name: (string | null); 8 | fs_name_no_tags: string; 9 | fs_name_no_ext: string; 10 | readonly sort_comparator: string; 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/StateSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { ScreenshotSchema } from './ScreenshotSchema'; 6 | export type StateSchema = { 7 | id: number; 8 | rom_id: number; 9 | user_id: number; 10 | file_name: string; 11 | file_name_no_tags: string; 12 | file_name_no_ext: string; 13 | file_extension: string; 14 | file_path: string; 15 | file_size_bytes: number; 16 | full_path: string; 17 | download_path: string; 18 | created_at: string; 19 | updated_at: string; 20 | emulator: (string | null); 21 | screenshot: (ScreenshotSchema | null); 22 | }; 23 | 24 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/StatsReturn.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type StatsReturn = { 6 | PLATFORMS: number; 7 | ROMS: number; 8 | SAVES: number; 9 | STATES: number; 10 | SCREENSHOTS: number; 11 | FILESIZE: number; 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/SystemDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type SystemDict = { 6 | VERSION: string; 7 | SHOW_SETUP_WIZARD: boolean; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/TaskDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type TaskDict = { 6 | ENABLED: boolean; 7 | TITLE: string; 8 | MESSAGE: string; 9 | CRON: string; 10 | }; 11 | 12 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/TinfoilFeedFileSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type TinfoilFeedFileSchema = { 6 | url: string; 7 | size: number; 8 | }; 9 | 10 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/TinfoilFeedSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { TinfoilFeedFileSchema } from './TinfoilFeedFileSchema'; 6 | import type { TinfoilFeedTitleDBSchema } from './TinfoilFeedTitleDBSchema'; 7 | export type TinfoilFeedSchema = { 8 | files: Array; 9 | directories: Array; 10 | titledb?: Record; 11 | success?: string; 12 | error?: string; 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/TinfoilFeedTitleDBSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type TinfoilFeedTitleDBSchema = { 6 | id: string; 7 | name: string; 8 | version: number; 9 | region: string; 10 | releaseDate: number; 11 | rating: number; 12 | publisher: string; 13 | description: string; 14 | size: number; 15 | rank: number; 16 | }; 17 | 18 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/TokenResponse.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type TokenResponse = { 6 | access_token: string; 7 | refresh_token?: string; 8 | token_type: string; 9 | expires: number; 10 | }; 11 | 12 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/UserNotesSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type UserNotesSchema = { 6 | user_id: number; 7 | username: string; 8 | note_raw_markdown: string; 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/UserSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { Role } from './Role'; 6 | export type UserSchema = { 7 | id: number; 8 | username: string; 9 | email: (string | null); 10 | enabled: boolean; 11 | role: Role; 12 | oauth_scopes: Array; 13 | avatar_path: string; 14 | last_login: (string | null); 15 | last_active: (string | null); 16 | created_at: string; 17 | updated_at: string; 18 | }; 19 | 20 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/ValidationError.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type ValidationError = { 6 | loc: Array<(string | number)>; 7 | msg: string; 8 | type: string; 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/VirtualCollectionSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type VirtualCollectionSchema = { 6 | name: string; 7 | description: string; 8 | rom_ids: Array; 9 | rom_count: number; 10 | path_cover_small: (string | null); 11 | path_cover_large: (string | null); 12 | path_covers_small: Array; 13 | path_covers_large: Array; 14 | id: string; 15 | type: string; 16 | is_public?: boolean; 17 | is_favorite?: boolean; 18 | is_virtual?: boolean; 19 | created_at: string; 20 | updated_at: string; 21 | }; 22 | 23 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/WatcherDict.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type WatcherDict = { 6 | ENABLED: boolean; 7 | TITLE: string; 8 | MESSAGE: string; 9 | }; 10 | 11 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/WebrcadeFeedCategorySchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { WebrcadeFeedItemSchema } from './WebrcadeFeedItemSchema'; 6 | export type WebrcadeFeedCategorySchema = { 7 | title: string; 8 | longTitle?: string; 9 | background?: string; 10 | thumbnail?: string; 11 | description?: string; 12 | items: Array; 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/WebrcadeFeedItemPropsSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | export type WebrcadeFeedItemPropsSchema = { 6 | rom: string; 7 | }; 8 | 9 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/WebrcadeFeedItemSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { WebrcadeFeedItemPropsSchema } from './WebrcadeFeedItemPropsSchema'; 6 | export type WebrcadeFeedItemSchema = { 7 | title: string; 8 | longTitle?: string; 9 | description?: string; 10 | type: string; 11 | thumbnail?: string; 12 | background?: string; 13 | props: WebrcadeFeedItemPropsSchema; 14 | }; 15 | 16 | -------------------------------------------------------------------------------- /frontend/src/__generated__/models/WebrcadeFeedSchema.ts: -------------------------------------------------------------------------------- 1 | /* generated using openapi-typescript-codegen -- do not edit */ 2 | /* istanbul ignore file */ 3 | /* tslint:disable */ 4 | /* eslint-disable */ 5 | import type { WebrcadeFeedCategorySchema } from './WebrcadeFeedCategorySchema'; 6 | export type WebrcadeFeedSchema = { 7 | title: string; 8 | longTitle?: string; 9 | description?: string; 10 | thumbnail?: string; 11 | background?: string; 12 | categories: Array; 13 | }; 14 | 15 | -------------------------------------------------------------------------------- /frontend/src/components/Details/AdditionalContent.vue: -------------------------------------------------------------------------------- 1 | 12 | 19 | -------------------------------------------------------------------------------- /frontend/src/components/Details/RelatedGames.vue: -------------------------------------------------------------------------------- 1 | 13 | 20 | -------------------------------------------------------------------------------- /frontend/src/components/Details/Screenshots.vue: -------------------------------------------------------------------------------- 1 | 6 | 22 | -------------------------------------------------------------------------------- /frontend/src/components/Gallery/AppBar/Search/Base.vue: -------------------------------------------------------------------------------- 1 | 4 | 7 | -------------------------------------------------------------------------------- /frontend/src/components/Gallery/AppBar/common/GalleryViewBtn.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 29 | -------------------------------------------------------------------------------- /frontend/src/components/Gallery/AppBar/common/SelectingBtn.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 29 | -------------------------------------------------------------------------------- /frontend/src/components/Settings/LibraryManagement/AddBtn.vue: -------------------------------------------------------------------------------- 1 | 14 | 30 | -------------------------------------------------------------------------------- /frontend/src/components/Settings/UserInterface/Language.vue: -------------------------------------------------------------------------------- 1 | 9 | 16 | -------------------------------------------------------------------------------- /frontend/src/components/common/EmptyStates/EmptyCollection.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /frontend/src/components/common/EmptyStates/EmptyFirmware.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /frontend/src/components/common/EmptyStates/EmptyGame.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /frontend/src/components/common/EmptyStates/EmptyPlatform.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /frontend/src/components/common/EmptyStates/EmptySearch.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /frontend/src/components/common/Navigation/HomeBtn.vue: -------------------------------------------------------------------------------- 1 | 9 | 14 | -------------------------------------------------------------------------------- /frontend/src/components/common/Platform/Icon.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 27 | -------------------------------------------------------------------------------- /frontend/src/components/common/ViewLoader.vue: -------------------------------------------------------------------------------- 1 | 15 | 16 | 21 | -------------------------------------------------------------------------------- /frontend/src/layouts/Settings.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | -------------------------------------------------------------------------------- /frontend/src/locales/de_DE/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Sammlung hinzufügen", 3 | "danger-zone": "Gefahrenzone", 4 | "delete-collection": "Sammlung löschen", 5 | "description": "Beschreibung", 6 | "edit-collection": "Sammlung bearbeiten", 7 | "name": "Name", 8 | "owner": "Besitzer", 9 | "private": "Privat", 10 | "private-desc": "Privat (nur für mich sichtbar)", 11 | "public": "Öffentlich", 12 | "public-desc": "Öffentlich (für alle sichtbar)", 13 | "removing-collection-1": "Löschen Sammlung", 14 | "removing-collection-2": "aus RomM. Bist du sicher?", 15 | "search-collection": "Sammlung durchsuchen" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/de_DE/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "Die Seite, die Sie suchen, existiert nicht", 3 | "404-title": "Seite nicht gefunden", 4 | "search-for-games": "Suche nach Spielen auf allen Plattformen" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/de_DE/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Mehr laden", 3 | "all-loaded": "Alle Spiele wurden geladen" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/de_DE/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Weiter spielen", 3 | "recently-added": "Kürzlich hinzugefügt" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/de_DE/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Einloggen", 3 | "login-oidc": "Einloggen mit {oidc}", 4 | "or": "oder", 5 | "password": "Passwort", 6 | "username": "Benutzername" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/de_DE/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Zurück zur Plattformübersicht", 3 | "back-to-game-details": "Zurück zu den Spieldetails", 4 | "clear-cache": "EmulatorJS-Cache löschen", 5 | "clear-cache-description": "Es hat keine Auswirkungen auf Spielstände und Speicherungen, die auf dem Server gespeichert sind.", 6 | "clear-cache-title": "Möchtest du den EmulatorJS-Cache wirklich löschen?", 7 | "clear-cache-warning": "Dadurch werden alle im Browser gespeicherten Spielstände und Speicherungen entfernt.", 8 | "full-screen": "Vollbild", 9 | "play": "Spielen", 10 | "quit": "Beenden", 11 | "save-and-quit": "Speichern und beenden", 12 | "select-save": "Speicherstand auswählen", 13 | "select-state": "Speicherstand auswählen" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/en_GB/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Add collection", 3 | "danger-zone": "Danger zone", 4 | "delete-collection": "Delete collection", 5 | "description": "Description", 6 | "edit-collection": "Edit collection", 7 | "name": "Name", 8 | "owner": "Owner", 9 | "private": "Private", 10 | "private-desc": "Private (only visible to me)", 11 | "public": "Public", 12 | "public-desc": "Pubilc (visible to everyone)", 13 | "removing-collection-1": "Removing collection", 14 | "removing-collection-2": "from RomM. Do you confirm?", 15 | "search-collection": "Search collection" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/en_GB/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "The page you are looking for does not exist", 3 | "404-title": "Page not found", 4 | "search-for-games": "Search for games across all platforms" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/en_GB/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Load more", 3 | "all-loaded": "All games have been loaded" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/en_GB/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continue playing", 3 | "recently-added": "Recently added" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/en_GB/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Login", 3 | "login-oidc": "Login with {oidc}", 4 | "or": "or", 5 | "password": "Password", 6 | "username": "Username" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/en_GB/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Back to gallery", 3 | "back-to-game-details": "Back to game details", 4 | "clear-cache": "Clear EmulatorJS Cache", 5 | "clear-cache-description": "Any saves or states stored on the server will not be affected.", 6 | "clear-cache-title": "Are you sure you want to clear the EmulatorJS cache?", 7 | "clear-cache-warning": "This will remove all saves and states stored in the browser.", 8 | "full-screen": "Full screen", 9 | "play": "Play", 10 | "quit": "Quit", 11 | "save-and-quit": "Save and quit", 12 | "select-save": "Select save", 13 | "select-state": "Select state" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/en_US/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Add collection", 3 | "danger-zone": "Danger zone", 4 | "delete-collection": "Delete collection", 5 | "description": "Description", 6 | "edit-collection": "Edit collection", 7 | "name": "Name", 8 | "owner": "Owner", 9 | "private": "Private", 10 | "private-desc": "Private (only visible to me)", 11 | "public": "Public", 12 | "public-desc": "Pubilc (visible to everyone)", 13 | "removing-collection-1": "Removing collection", 14 | "removing-collection-2": "from RomM. Do you confirm?", 15 | "search-collection": "Search collection" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/en_US/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "The page you are looking for does not exist", 3 | "404-title": "Page not found", 4 | "search-for-games": "Search for games across all platforms" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/en_US/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Load more", 3 | "all-loaded": "All games have been loaded" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/en_US/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continue playing", 3 | "recently-added": "Recently added" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/en_US/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Login", 3 | "login-oidc": "Login with {oidc}", 4 | "or": "or", 5 | "password": "Password", 6 | "username": "Username" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/en_US/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Back to gallery", 3 | "back-to-game-details": "Back to game details", 4 | "clear-cache": "Clear EmulatorJS Cache", 5 | "clear-cache-description": "Any saves or states stored on the server will not be affected.", 6 | "clear-cache-title": "Are you sure you want to clear the EmulatorJS cache?", 7 | "clear-cache-warning": "This will remove all saves and states stored in the browser.", 8 | "full-screen": "Full screen", 9 | "play": "Play", 10 | "quit": "Quit", 11 | "save-and-quit": "Save and quit", 12 | "select-save": "Select save", 13 | "select-state": "Select state" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/es_ES/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Añadir colección", 3 | "danger-zone": "Zona de peligro", 4 | "delete-collection": "Eliminar colección", 5 | "description": "Descripción", 6 | "edit-collection": "Editar colección", 7 | "name": "Nombre", 8 | "owner": "Propietario", 9 | "private": "Privada", 10 | "private-desc": "Privada (visible solo para mi)", 11 | "public": "Pública", 12 | "public-desc": "Pública (visible para todos)", 13 | "removing-collection-1": "Eliminando colección", 14 | "removing-collection-2": "de RomM. ¿Confirmar?", 15 | "search-collection": "Buscar colección" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/es_ES/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "La página que buscas no existe", 3 | "404-title": "Página no encontrada", 4 | "search-for-games": "Buscar juegos en todas las plataformas" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/es_ES/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Cargar más", 3 | "all-loaded": "Todos los juegos han sido cargados" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/es_ES/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continuar jugando", 3 | "recently-added": "Añadido recientemente" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/es_ES/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Iniciar sesión", 3 | "login-oidc": "Iniciar sesión con {oidc}", 4 | "or": "o", 5 | "password": "Contraseña", 6 | "username": "Usuario" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/es_ES/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Volver a galería", 3 | "back-to-game-details": "Volver a detalles", 4 | "clear-cache": "Limpiar caché de EmulatorJS", 5 | "clear-cache-description": "No afectará a las partidas guardadas o estados almacenados en el servidor.", 6 | "clear-cache-title": "¿Estás seguro de que quieres limpiar la caché de EmulatorJS?", 7 | "clear-cache-warning": "Esto eliminará todas las partidas y estados almacenados en el navegador.", 8 | "full-screen": "Pantalla completa", 9 | "play": "Jugar", 10 | "quit": "Salir", 11 | "save-and-quit": "Guardar y salir", 12 | "select-save": "Seleccionar guardado", 13 | "select-state": "Seleccionar estado" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/fr_FR/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Ajouter une collection", 3 | "danger-zone": "Zone de danger", 4 | "delete-collection": "Supprimer la collection", 5 | "description": "Description", 6 | "edit-collection": "Modifier la collection", 7 | "name": "Nom", 8 | "owner": "Propriétaire", 9 | "private": "Privé", 10 | "private-desc": "Privé (visible uniquement par moi)", 11 | "public": "Public", 12 | "public-desc": "Public (visible par tous)", 13 | "removing-collection-1": "Confirmer le retrait de", 14 | "removing-collection-2": "la collection de RomM?", 15 | "search-collection": "Recherche dans la collection" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/fr_FR/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "La page que vous recherchez n'existe pas", 3 | "404-title": "Page non trouvée", 4 | "search-for-games": "Rechercher des jeux sur toutes les plateformes" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/fr_FR/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Charger plus", 3 | "all-loaded": "Tous les jeux ont été chargés" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/fr_FR/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continuer à jouer", 3 | "recently-added": "Ajouté récemment" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/fr_FR/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Se connecter", 3 | "login-oidc": "Se connecter avec {oidc}", 4 | "or": "ou", 5 | "password": "Mot de passe", 6 | "username": "Nom d'utilisateur" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/fr_FR/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Retour à la galerie", 3 | "back-to-game-details": "Retour aux détails du jeu", 4 | "clear-cache": "Effacer le cache EmulatorJS", 5 | "clear-cache-description": "Les sauvegardes ou les états stockés sur le serveur ne seront pas affectés.", 6 | "clear-cache-title": "Êtes-vous sûr de vouloir effacer le cache EmulatorJS ?", 7 | "clear-cache-warning": "Cela supprimera toutes les sauvegardes et les états stockés dans le navigateur.", 8 | "full-screen": "Plein écran", 9 | "play": "Jouer", 10 | "quit": "Quitter", 11 | "save-and-quit": "Sauvegarder et quitter", 12 | "select-save": "Sélectionner la sauvegarde", 13 | "select-state": "Sélectionner l'état" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/it_IT/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Aggiungi collezione", 3 | "danger-zone": "Zona pericolosa", 4 | "delete-collection": "Elimina collezione", 5 | "description": "Descrizione", 6 | "edit-collection": "Modifica collezione", 7 | "name": "Nome", 8 | "owner": "Proprietario", 9 | "private": "Privata", 10 | "private-desc": "Privata (visibile solo a me)", 11 | "public": "Pubblica", 12 | "public-desc": "Pubblica (visibile a tutti)", 13 | "removing-collection-1": "Stai eliminando la collezione", 14 | "removing-collection-2": "da RomM. Confermi?", 15 | "search-collection": "Cerca collezione" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/it_IT/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "La pagina che stai cercando non esiste", 3 | "404-title": "Pagina non trovata", 4 | "search-for-games": "Cerca giochi su tutte le piattaforme" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/it_IT/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continua a giocare", 3 | "recently-added": "Aggiunti recentemente" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/it_IT/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Login", 3 | "login-oidc": "Login con {oidc}", 4 | "or": "o", 5 | "password": "Password", 6 | "username": "Nome utente" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/it_IT/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Ritorna alla galleria", 3 | "back-to-game-details": "Ritorna ai dettagli del gioco", 4 | "clear-cache": "Pulisci cache", 5 | "clear-cache-description": "Pulisci la cache del gioco. Questo non rimuoverà i salvataggi o i file di configurazione.", 6 | "clear-cache-title": "Pulisci cache del gioco", 7 | "clear-cache-warning": "Sei sicuro di voler pulire la cache del gioco?", 8 | "full-screen": "Schermo Intero", 9 | "play": "Gioca", 10 | "quit": "Esci", 11 | "reset-session": "Reset Sessione", 12 | "save-and-quit": "Salva e esci", 13 | "select-save": "Seleziona Salvataggio", 14 | "select-state": "Seleziona Stato" 15 | } 16 | -------------------------------------------------------------------------------- /frontend/src/locales/ja_JP/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "コレクションに追加", 3 | "danger-zone": "危険", 4 | "delete-collection": "コレクションを削除", 5 | "description": "説明", 6 | "edit-collection": "コレクションを編集", 7 | "name": "名前", 8 | "owner": "所有者", 9 | "private": "非公開", 10 | "private-desc": "非公開(自分だけ表示)", 11 | "public": "公開", 12 | "public-desc": "公開(全員表示可)", 13 | "removing-collection-1": "RomMからコレクションを削除します", 14 | "removing-collection-2": "よろしいですか?", 15 | "search-collection": "コレクションを検索" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/ja_JP/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "表示しようとしたページは見つかりませんでした", 3 | "404-title": "ページが見つかりませんでした", 4 | "search-for-games": "全てのプラットフォームから検索" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/ja_JP/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "もっと読み込む", 3 | "all-loaded": "すべてのゲームが読み込まれました" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ja_JP/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "プレイを継続", 3 | "recently-added": "最近追加" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ja_JP/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "ログイン", 3 | "login-oidc": "Login with {oidc}", 4 | "or": "or", 5 | "password": "パスワード", 6 | "username": "ユーザ名" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/ja_JP/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "ギャラリーへ戻る", 3 | "back-to-game-details": "ゲーム詳細へ戻る", 4 | "clear-cache": "EmulatorJS キャッシュをクリア", 5 | "clear-cache-description": "サーバーに保存されているセーブデータやステートには影響しません。", 6 | "clear-cache-title": "EmulatorJS キャッシュをクリアしてもよろしいですか?", 7 | "clear-cache-warning": "これにより、ブラウザに保存されているすべてのセーブデータとステートが削除されます。", 8 | "full-screen": "全画面", 9 | "play": "プレイ", 10 | "quit": "終了", 11 | "save-and-quit": "保存して終了", 12 | "select-save": "セーブデータを選択", 13 | "select-state": "ステートを選択" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/ko_KR/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "모음집 추가", 3 | "danger-zone": "위험 구역", 4 | "delete-collection": "모음집 삭제", 5 | "description": "설명", 6 | "edit-collection": "모음집 수정", 7 | "name": "이름", 8 | "owner": "소유자", 9 | "private": "비공개", 10 | "private-desc": "비공개 (나만 볼 수 있음)", 11 | "public": "공개", 12 | "public-desc": "공개 (모든 사람이 볼 수 있음)", 13 | "removing-collection-1": "모음집", 14 | "removing-collection-2": "을(를) RomM에서 삭제합니다. 정말 삭제하시겠습니까?", 15 | "search-collection": "모음집에서 찾기" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/ko_KR/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "찾으려고 하는 페이지가 존재하지 않습니다", 3 | "404-title": "페이지 찾을 수 없음", 4 | "search-for-games": "모든 기종에서 게임 찾기" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/ko_KR/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "더 불러오기", 3 | "all-loaded": "모든 게임이 불러와졌습니다" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ko_KR/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "계속 재생", 3 | "recently-added": "최근에 추가됨" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ko_KR/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "로그인", 3 | "login-oidc": "{oidc}로 로그인", 4 | "or": "또는", 5 | "password": "패스워드", 6 | "username": "아이디" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/ko_KR/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "갤러리로 가기", 3 | "back-to-game-details": "게임 설명으로 가기", 4 | "clear-cache": "EmulatorJS 캐시 지우기", 5 | "clear-cache-description": "서버에 저장된 세이브 및 상태에는 영향을 주지 않습니다.", 6 | "clear-cache-title": "EmulatorJS 캐시를 지우시겠습니까?", 7 | "clear-cache-warning": "이로 인해 브라우저에 저장된 모든 세이브 및 상태가 제거됩니다.", 8 | "full-screen": "전체 화면", 9 | "play": "실행", 10 | "quit": "종료", 11 | "save-and-quit": "저장하고 종료", 12 | "select-save": "세이브 선택", 13 | "select-state": "상태 선택" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/pt_BR/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Adicionar coleção", 3 | "danger-zone": "Zona de perigo", 4 | "delete-collection": "Excluir coleção", 5 | "description": "Descrição", 6 | "edit-collection": "Editar coleção", 7 | "name": "Nome", 8 | "owner": "Proprietário", 9 | "private": "Privado", 10 | "private-desc": "Privado (visível apenas para mim)", 11 | "public": "Público", 12 | "public-desc": "Público (visível para todos)", 13 | "removing-collection-1": "Removendo coleção", 14 | "removing-collection-2": "do RomM. Você confirma?", 15 | "search-collection": "Buscar coleção" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/pt_BR/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "A página que você está procurando não existe", 3 | "404-title": "Página não encontrada", 4 | "search-for-games": "Pesquisar jogos em todas as plataformas" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/pt_BR/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Carregar mais", 3 | "all-loaded": "Todos os jogos foram carregados" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/pt_BR/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continuar assistindo", 3 | "recently-added": "Recentemente adicionados" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/pt_BR/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Entrar", 3 | "login-oidc": "Entrar com {oidc}", 4 | "or": "ou", 5 | "password": "Senha", 6 | "username": "Nome de usuário" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/pt_BR/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Voltar à galeria", 3 | "back-to-game-details": "Voltar aos detalhes do jogo", 4 | "clear-cache": "Limpar cache do EmulatorJS", 5 | "clear-cache-description": "Não afetará nenhum save ou estado armazenado no servidor.", 6 | "clear-cache-title": "Tem certeza de que deseja limpar o cache do EmulatorJS?", 7 | "clear-cache-warning": "Isso removerá todos os saves e estados armazenados no navegador.", 8 | "full-screen": "Tela cheia", 9 | "play": "Jogar", 10 | "quit": "Sair", 11 | "save-and-quit": "Salvar e sair", 12 | "select-save": "Selecionar save", 13 | "select-state": "Selecionar estado" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/ro_RO/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Adaugă colecție", 3 | "danger-zone": "Zonă periculoasă", 4 | "delete-collection": "Șterge colecția", 5 | "description": "Descriere", 6 | "edit-collection": "Editează colecția", 7 | "name": "Nume", 8 | "owner": "Proprietar", 9 | "private": "Privat", 10 | "private-desc": "Privat (vizibil doar pentru mine)", 11 | "public": "Public", 12 | "public-desc": "Public (vizibil pentru toți)", 13 | "removing-collection-1": "Confirmă eliminarea", 14 | "removing-collection-2": "colecției din RomM?", 15 | "search-collection": "Caută în colecție" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/ro_RO/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "Pagina pe care o căutați nu există", 3 | "404-title": "Pagină negăsită", 4 | "search-for-games": "Căutați jocuri pe toate platformele" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/ro_RO/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Continuă să joci", 3 | "recently-added": "Adăugate recent" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ro_RO/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Autentificare", 3 | "login-oidc": "Autentificare cu {oidc}", 4 | "or": "sau", 5 | "password": "Parolă", 6 | "username": "Nume utilizator" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/ro_RO/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Înapoi la galerie", 3 | "back-to-game-details": "Înapoi la detaliile jocului", 4 | "clear-cache": "Șterge cache-ul EmulatorJS", 5 | "clear-cache-description": "Nu va afecta nicio salvare sau stare stocată pe server.", 6 | "clear-cache-title": "Ești sigur că vrei să ștergi cache-ul EmulatorJS?", 7 | "clear-cache-warning": "Acest lucru va elimina toate salvările și stările stocate în browser.", 8 | "full-screen": "Ecran complet", 9 | "play": "Joacă", 10 | "quit": "Ieși", 11 | "save-and-quit": "Salvează și ieși", 12 | "select-save": "Selectează salvare", 13 | "select-state": "Selectează stare" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/ru_RU/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "Добавить коллекцию", 3 | "danger-zone": "Опасная зона", 4 | "delete-collection": "Удалить коллекцию", 5 | "description": "Описание", 6 | "edit-collection": "Редактировать коллекцию", 7 | "name": "Имя", 8 | "owner": "Владелец", 9 | "private": "Приватный", 10 | "private-desc": "Приватный (виден только мне)", 11 | "public": "Публичный", 12 | "public-desc": "Публичный (виден всем)", 13 | "removing-collection-1": "Удаление коллекции", 14 | "removing-collection-2": "из RomM. Вы подтверждаете?", 15 | "search-collection": "Поиск коллекции" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/ru_RU/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "Страница, которую вы ищете, не существует", 3 | "404-title": "Страница не найдена", 4 | "search-for-games": "Искать игры на всех платформах" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/ru_RU/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "Загрузить еще", 3 | "all-loaded": "Все игры загружены" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ru_RU/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "Продолжить просмотр", 3 | "recently-added": "Недавно добавленные" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/ru_RU/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "Войти", 3 | "login-oidc": "Войти с {oidc}", 4 | "or": "или", 5 | "password": "Пароль", 6 | "username": "Имя пользователя" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/ru_RU/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "Вернуться в галерею", 3 | "back-to-game-details": "Вернуться к деталям игры", 4 | "clear-cache": "Очистить кэш EmulatorJS", 5 | "clear-cache-description": "Любые сохранения или состояния, хранящиеся на сервере, не будут затронуты.", 6 | "clear-cache-title": "Вы уверены, что хотите очистить кэш EmulatorJS?", 7 | "clear-cache-warning": "Это удалит все сохранения и состояния, хранящиеся в браузере.", 8 | "full-screen": "Полный экран", 9 | "play": "Играть", 10 | "quit": "Выйти", 11 | "save-and-quit": "Сохранить и выйти", 12 | "select-save": "Выбрать сохранение", 13 | "select-state": "Выбрать состояние" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/locales/zh_CN/collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "add-collection": "添加收藏", 3 | "danger-zone": "危险区", 4 | "delete-collection": "删除收藏", 5 | "description": "描述", 6 | "edit-collection": "编辑收藏", 7 | "name": "名称", 8 | "owner": "创建者", 9 | "private": "私有", 10 | "private-desc": "私有(仅创建者可见)", 11 | "public": "公开", 12 | "public-desc": "公开(所有用户可见)", 13 | "removing-collection-1": "将从 RomM 中移除收藏 [", 14 | "removing-collection-2": "] ,您确定吗?", 15 | "search-collection": "搜索收藏" 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/locales/zh_CN/emptyStates.json: -------------------------------------------------------------------------------- 1 | { 2 | "404-subtitle": "找不到页面", 3 | "404-title": "页面未找到", 4 | "search-for-games": "搜索游戏" 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/locales/zh_CN/gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "load-more": "加载更多", 3 | "all-loaded": "所有游戏已加载" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/zh_CN/home.json: -------------------------------------------------------------------------------- 1 | { 2 | "continue-playing": "继续观看", 3 | "recently-added": "最新添加" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/src/locales/zh_CN/login.json: -------------------------------------------------------------------------------- 1 | { 2 | "login": "登录", 3 | "login-oidc": "使用 {oidc} 登录", 4 | "or": "或", 5 | "password": "密码", 6 | "username": "用户名" 7 | } 8 | -------------------------------------------------------------------------------- /frontend/src/locales/zh_CN/play.json: -------------------------------------------------------------------------------- 1 | { 2 | "back-to-gallery": "返回游戏库", 3 | "back-to-game-details": "返回游戏详情", 4 | "clear-cache": "清除 EmulatorJS 缓存", 5 | "clear-cache-description": "这不会影响服务器上存储的任何保存或状态。", 6 | "clear-cache-title": "您确定要清除 EmulatorJS 缓存吗?", 7 | "clear-cache-warning": "这将删除浏览器中存储的所有保存和状态。", 8 | "full-screen": "全屏", 9 | "play": "游玩", 10 | "quit": "退出", 11 | "save-and-quit": "保存并退出", 12 | "select-save": "选择存档", 13 | "select-state": "选择状态" 14 | } 15 | -------------------------------------------------------------------------------- /frontend/src/plugins/index.ts: -------------------------------------------------------------------------------- 1 | import i18n from "@/locales"; 2 | import type { Events } from "@/types/emitter"; 3 | import mitt from "mitt"; 4 | import type { App } from "vue"; 5 | import vuetify from "./vuetify"; 6 | import pinia from "./pinia"; 7 | import { configureMDEditor } from "./mdeditor"; 8 | 9 | export function registerPlugins(app: App) { 10 | configureMDEditor(); 11 | app.use(vuetify).use(pinia).use(i18n).provide("emitter", mitt()); 12 | } 13 | -------------------------------------------------------------------------------- /frontend/src/plugins/mdeditor.ts: -------------------------------------------------------------------------------- 1 | import { config, XSSPlugin } from "md-editor-v3"; 2 | 3 | export async function configureMDEditor() { 4 | config({ 5 | markdownItPlugins(plugins) { 6 | return [ 7 | ...plugins, 8 | { 9 | type: "xss", 10 | plugin: XSSPlugin, 11 | options: {}, 12 | }, 13 | ]; 14 | }, 15 | }); 16 | } 17 | -------------------------------------------------------------------------------- /frontend/src/plugins/pinia.d.ts: -------------------------------------------------------------------------------- 1 | import "pinia"; 2 | import { Router } from "vue-router"; 3 | 4 | declare module "pinia" { 5 | export interface PiniaCustomProperties { 6 | $router: Router; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /frontend/src/plugins/pinia.ts: -------------------------------------------------------------------------------- 1 | import { createPinia } from "pinia"; 2 | import { markRaw } from "vue"; 3 | import router from "@/plugins/router"; 4 | 5 | const pinia = createPinia(); 6 | pinia.use(({ store }) => { 7 | store.$router = markRaw(router); 8 | }); 9 | export default pinia; 10 | -------------------------------------------------------------------------------- /frontend/src/services/api/identity.ts: -------------------------------------------------------------------------------- 1 | import type { MessageResponse } from "@/__generated__"; 2 | import api from "@/services/api/index"; 3 | 4 | export const identityApi = api; 5 | 6 | async function login( 7 | username: string, 8 | password: string, 9 | ): Promise<{ data: MessageResponse }> { 10 | return api.post( 11 | "/login", 12 | {}, 13 | { 14 | auth: { 15 | username: username, 16 | password: password, 17 | }, 18 | }, 19 | ); 20 | } 21 | 22 | async function logout(): Promise<{ data: MessageResponse }> { 23 | return api.post("/logout"); 24 | } 25 | 26 | export default { 27 | login, 28 | logout, 29 | }; 30 | -------------------------------------------------------------------------------- /frontend/src/services/api/sgdb.ts: -------------------------------------------------------------------------------- 1 | import type { SearchCoverSchema } from "@/__generated__"; 2 | import api from "@/services/api/index"; 3 | 4 | export const romApi = api; 5 | 6 | async function searchCover({ 7 | searchTerm, 8 | }: { 9 | searchTerm: string; 10 | }): Promise<{ data: SearchCoverSchema[] }> { 11 | return api.get("/search/cover", { params: { search_term: searchTerm } }); 12 | } 13 | 14 | export default { 15 | searchCover, 16 | }; 17 | -------------------------------------------------------------------------------- /frontend/src/services/socket.ts: -------------------------------------------------------------------------------- 1 | import { io } from "socket.io-client"; 2 | 3 | export default io({ 4 | path: "/ws/socket.io/", 5 | transports: ["websocket", "polling"], 6 | autoConnect: false, 7 | }); 8 | -------------------------------------------------------------------------------- /frontend/src/stores/auth.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from "pinia"; 2 | 3 | import type { User } from "./users"; 4 | 5 | export default defineStore("auth", { 6 | state: () => ({ 7 | user: null as User | null, 8 | oauth_scopes: [] as string[], 9 | }), 10 | 11 | getters: { 12 | scopes: (state) => { 13 | return state.user?.oauth_scopes ?? []; 14 | }, 15 | }, 16 | 17 | actions: { 18 | setUser(user: User | null) { 19 | this.user = user; 20 | }, 21 | reset() { 22 | this.user = null; 23 | this.oauth_scopes = []; 24 | }, 25 | }, 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/src/stores/download.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from "pinia"; 2 | import { type RomFileSchema } from "@/__generated__"; 3 | 4 | export default defineStore("download", { 5 | state: () => ({ 6 | value: [] as number[], 7 | filesToDownload: [] as RomFileSchema[], 8 | }), 9 | 10 | getters: { 11 | fileIDsToDownload: (state) => state.filesToDownload.map((file) => file.id), 12 | }, 13 | 14 | actions: { 15 | add(id: number) { 16 | this.value.push(id); 17 | }, 18 | remove(id: number) { 19 | this.value.splice(this.value.indexOf(id), 1); 20 | }, 21 | reset() { 22 | this.value = [] as number[]; 23 | this.filesToDownload = [] as RomFileSchema[]; 24 | }, 25 | }, 26 | }); 27 | -------------------------------------------------------------------------------- /frontend/src/stores/notifications.ts: -------------------------------------------------------------------------------- 1 | import type { SnackbarStatus } from "@/types/emitter"; 2 | import { defineStore } from "pinia"; 3 | 4 | export default defineStore("notifications", { 5 | state: () => ({ 6 | notifications: [] as SnackbarStatus[], 7 | }), 8 | 9 | actions: { 10 | add(notification: SnackbarStatus) { 11 | this.notifications.push(notification); 12 | }, 13 | remove(id: number | undefined) { 14 | this.notifications = this.notifications.filter( 15 | (notification) => notification.id !== id, 16 | ); 17 | }, 18 | reset() { 19 | this.notifications = [] as SnackbarStatus[]; 20 | }, 21 | }, 22 | }); 23 | -------------------------------------------------------------------------------- /frontend/src/stores/runningTasks.ts: -------------------------------------------------------------------------------- 1 | import { defineStore } from "pinia"; 2 | 3 | export default defineStore("runningTasks", { 4 | state: () => ({ value: false }), 5 | 6 | actions: { 7 | set(runningTasks: boolean) { 8 | this.value = runningTasks; 9 | }, 10 | reset() { 11 | this.value = false; 12 | }, 13 | }, 14 | }); 15 | -------------------------------------------------------------------------------- /frontend/src/styles/scrollbar.css: -------------------------------------------------------------------------------- 1 | ::-webkit-scrollbar { 2 | width: 4px; 3 | height: 4px; 4 | } 5 | ::-webkit-scrollbar-track { 6 | background: transparent; 7 | } 8 | ::-webkit-scrollbar-thumb { 9 | background-color: rgba(164, 82, 254, 0.35); 10 | border-radius: 1px; 11 | border: transparent; 12 | } 13 | 14 | /* * { 15 | scrollbar-width: thin; 16 | scrollbar-color: #202832 rgba(0, 0, 0, 0); 17 | } */ 18 | -------------------------------------------------------------------------------- /frontend/src/types/index.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | 3 | export function isKeyof( 4 | key: PropertyKey, 5 | obj: T, 6 | ): key is keyof T { 7 | return key in obj; 8 | } 9 | 10 | export type ExtractPiniaStoreType = D extends ( 11 | pinia?: any, 12 | hot?: any, 13 | ) => infer R 14 | ? R 15 | : never; 16 | 17 | export type ValueOf = T[keyof T]; 18 | -------------------------------------------------------------------------------- /frontend/src/types/main.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.vue" { 2 | import { defineComponent } from "vue"; 3 | const Component: ReturnType; 4 | export default Component; 5 | } 6 | -------------------------------------------------------------------------------- /frontend/src/types/rom.d.ts: -------------------------------------------------------------------------------- 1 | export type RomSelectEvent = { 2 | event: MouseEvent; 3 | index: number; 4 | selected: boolean; 5 | }; 6 | -------------------------------------------------------------------------------- /frontend/src/types/user.d.ts: -------------------------------------------------------------------------------- 1 | export type UserItem = User & { 2 | password: string; 3 | avatar?: File; 4 | }; 5 | -------------------------------------------------------------------------------- /frontend/src/views/404.vue: -------------------------------------------------------------------------------- 1 | 6 | 13 | -------------------------------------------------------------------------------- /frontend/src/views/Settings/Administration.vue: -------------------------------------------------------------------------------- 1 | 9 | 13 | -------------------------------------------------------------------------------- /frontend/src/views/Settings/LibraryManagement.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /frontend/src/views/Settings/UserInterface.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | -------------------------------------------------------------------------------- /frontend/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@vue/tsconfig/tsconfig.dom.json", 3 | "include": ["src/**/*.ts", "src/**/*.vue"], 4 | "types": ["node", "lodash", "js-cookie", "vue-router", "vue"], 5 | "compilerOptions": { 6 | "composite": true, 7 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 8 | "lib": ["dom", "ES6"], 9 | "baseUrl": ".", 10 | "noImplicitAny": true, 11 | "paths": { 12 | "@/*": ["./src/*"] 13 | }, 14 | "types": [ 15 | "./src/plugins/pinia.d.ts", 16 | "./src/types/main.d.ts", 17 | "vite/client" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | asyncio_mode = auto 3 | env = 4 | ROMM_BASE_PATH=romm_test 5 | DB_NAME=romm_test 6 | DB_USER=romm_test 7 | DB_PASSWD=passwd 8 | ROMM_DB_DRIVER=mariadb 9 | IGDB_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 10 | IGDB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 11 | ROMM_AUTH_SECRET_KEY=843f6cefc5ba1430d54061301c2893be00c2aef11dae39ffec13a2af1a86e867 12 | ENABLE_RESCAN_ON_FILESYSTEM_CHANGE=true 13 | ENABLE_SCHEDULED_RESCAN=true 14 | ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB=true 15 | RESCAN_ON_FILESYSTEM_CHANGE_DELAY=5 16 | SCHEDULED_RESCAN_CRON=0 3 * * * 17 | SCHEDULED_UPDATE_SWITCH_TITLEDB_CRON=0 4 * * * 18 | UPLOAD_TIMEOUT=20 19 | LOGLEVEL=DEBUG 20 | DEV_MODE=false 21 | OIDC_ENABLED=false 22 | --------------------------------------------------------------------------------