A Cross-Platform open source Retro gaming frontend designed for handheld and controllers. Focused on building a simple user experience and intuitive UI as a curated community driven experience.
Warning
This app is actively in development, it doesn't have most of its major features implemented yet. It will have an opinionated design and will be used as an experiment in discovering a good UX.
- ROMM - download, sync and update roms and platforms.
- Emulator JS - play your games with emulator js right within the app. Uses RetroArch cores.
- Emulators - (WIP) Download and install emulators and automatically configure them
- Free Curated Games - Download free curreted games and homebrew roms without ever leaving the app
- Cross Platform - Can run on multiple platforms. Built with web technologies and bun backend.
- Steam Deck Support - Extensively tested with the steam deck. It can use flatpak installed browsers.
- Lightweight - It uses the existing system browser to launch the front end, so no need to include a whole web browser.
- On Windows it first uses webview2 then your browser
- On linux it uses WebKitGTK or a browser even from flatpak
- Not tested on Mac yet
- Great for Controllers - The UI is inspired by the switch and works great with joysticks and dpads.
- Automatic Downloads - Downloads roms from ROMM automatically
- Automatic Emulator Discovery - Using the configs of the excellent ES-DE to discover installed emulators and launch games.
- Easy fallback configuration with built in file browser.
- Responsive Layout - Optimized mainly for the steam deck with responsive layout support and dynamic switching of inputs.
- I want to build an open and free platform where you can play and discover new hidden gems from the past.
- I plan to add a free store where you can download all your needed emulators, the goal is to not have to leave the UI for anything.
- I really want to add matrix chat support in the app for engaging with your favorite community. Having access to so many nodejs libraries would make it quite straight forward.
- I'm sick of closed source and private store fronts, and want a way to share community currated free experiences. I'm also sick of the profit driven nature of games and promotions.
-
Install dependencies:
bun install
-
Run in development mode:
# Use 'bun run dev:hmr' for hot reload bun run dev -
Build for production:
bun run build:prod
Builds will go in
/builds/<platform>. -
Additional Commands:
bun run mappings:generateconverts the es-de configs into local sqlite configs with mappings to rom systemsbun run drizzle:generategenerates sqlite migrations based on the app schemabun run openapi-tsgenerated the openapi client calls from romm's APIbun run package:windowsbuilds an package to be distributed on windowsbun run package:linuxbuilds an AppImage to be distributed on linux
- Bun for the backend
- React for the frontend
- tailwindcss for styling
- daisyUI for base theme
- Vite for building the frontend
- Tanstack router and query for navigation and data
- elysia for the APIs
- webview for launching existing system webviews instead of full browser if possible.
- emulatorjs for playing lots of roms inside the app without having to deal with external emulators





