No description
Find a file
Simeon Radivoev e4df8fb9fb
feat: implemented storage management
fix: Enabled fallback secrets
feat: Made header stats actually work
feat: Made steam deck keyboard auto open for some inputs
fix: Made keybaord also work with shortcuts (no tooltips yet)
2026-02-24 00:30:16 +02:00
.forgejo/workflows build: separated github and forgejo build workflows 2026-02-08 22:06:08 +02:00
.github build: fixed artifact name 2026-02-08 22:23:44 +02:00
.vscode feat: implemented storage management 2026-02-24 00:30:16 +02:00
drizzle feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
scripts feat: Moved to stream zip downloading. 2026-02-21 18:28:07 +02:00
src feat: implemented storage management 2026-02-24 00:30:16 +02:00
vendors feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
.gitattributes feat: massive front-end overhaul and initial github release 2026-02-08 21:18:10 +02:00
.gitignore feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
bun.lock feat: implemented storage management 2026-02-24 00:30:16 +02:00
bun.lockb build: updated bun 2026-01-23 05:58:49 +02:00
bunfig.toml feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
drizzle.config.ts feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
gameflow-deck.code-workspace feat: Moved to stream zip downloading. 2026-02-21 18:28:07 +02:00
package.json feat: implemented storage management 2026-02-24 00:30:16 +02:00
README.md feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
tailwind.config.js feat: massive front-end overhaul and initial github release 2026-02-08 21:18:10 +02:00
tsconfig.json feat: Implemented launching and downloading of roms 2026-02-19 16:10:29 +02:00
vite-env-override.d.ts feat: massive front-end overhaul and initial github release 2026-02-08 21:18:10 +02:00
vite.config.ts feat: implemented storage management 2026-02-24 00:30:16 +02:00

Gameflow Deck

A Cross-Platform Retro gaming frontend designed for handheld and controllers. Focused on building a simple user experience and intuitive UI.

Warning

This app is actively in development, it doesn't have most of its critical features implemented yet. It will have an opinionated design and will be used as an experiment in discovering a good UX.

Features

  • Cross Platform: Can run on multiple platforms. Built with web technologies and bun backend.
  • Romm Support: Has integration with romm.
  • 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
  • Steam Deck Support: Extensively tested with the steam deck. It can use flatpak installed browsers.
  • Great for Controllers: The UI is inspired by the switch and works great with joysticks and dpads.
  • Automatic Download Downloads roms from ROMM automatically
  • Automatic Emulator Discovery Using the configs of the excellent ES-DE to discover installed emulators and launch games.

Screenshots

Development

  1. Install dependencies:

    bun install
    
  2. Run in development mode:

    # Use 'bun run dev:hmr' for hot reload
    bun run dev
    
  3. Build for production:

    bun run package:auto-prod
    

    Builds will go in /builds/<platform>.

  4. Additional Commands:

    • bun run mappings:generate converts the es-de configs into local sqlite configs with mappings to rom systems
    • bun run drizzle:generate generates sqlite migrations based on the app schema
    • bun run openapi-ts generated the openapi client calls from romm's API
    • bun run package builds an executable
    • bun run package:auto-prod builds and executable for production

Tech Stack

  • 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.