├── .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 |
21 |
22 |
23 |
24 |
25 |
26 |
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 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/frontend/src/components/Details/RelatedGames.vue:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/frontend/src/components/Details/Screenshots.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
21 |
22 |
--------------------------------------------------------------------------------
/frontend/src/components/Gallery/AppBar/Search/Base.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/frontend/src/components/Gallery/AppBar/common/GalleryViewBtn.vue:
--------------------------------------------------------------------------------
1 |
10 |
11 |
12 |
19 |
20 |
28 |
29 |
--------------------------------------------------------------------------------
/frontend/src/components/Gallery/AppBar/common/SelectingBtn.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
18 |
19 |
28 |
29 |
--------------------------------------------------------------------------------
/frontend/src/components/Settings/LibraryManagement/AddBtn.vue:
--------------------------------------------------------------------------------
1 |
14 |
15 |
16 |
26 | {{ t("common.add") }}
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/frontend/src/components/Settings/UserInterface/Language.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/frontend/src/components/common/EmptyStates/EmptyCollection.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/frontend/src/components/common/EmptyStates/EmptyFirmware.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/frontend/src/components/common/EmptyStates/EmptyGame.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/frontend/src/components/common/EmptyStates/EmptyPlatform.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/frontend/src/components/common/EmptyStates/EmptySearch.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 | mdi-magnify
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/frontend/src/components/common/Navigation/HomeBtn.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/frontend/src/components/common/Platform/Icon.vue:
--------------------------------------------------------------------------------
1 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/frontend/src/components/common/ViewLoader.vue:
--------------------------------------------------------------------------------
1 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/frontend/src/layouts/Settings.vue:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
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 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/frontend/src/views/Settings/Administration.vue:
--------------------------------------------------------------------------------
1 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/frontend/src/views/Settings/LibraryManagement.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/frontend/src/views/Settings/UserInterface.vue:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
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 |
--------------------------------------------------------------------------------