How abduznik/freegosy works
Freegosy is a cross-platform Flutter client for browsing a RomM library, downloading games, and launching them through installed emulators. Users browse or filter games, download ROMs, then launch a game; launching can also trigger save backup/synchronization and play-session tracking. Other major capabilities include offline metadata, emulator and BIOS management, controller configuration, RetroArch core selection, and headless commands. The README documents these behaviors, but the sampled source is mostly platform bootstrap code, so detailed internal call wiring is not verified; uncertain links are omitted.
Main entry points: app.dart Flutter app · game_launch_service.dart Game launcher · romm_service.dart RomM client · game_detail_screen.dart Game details UI
Components 25
App interface
- Flutter app
lib/app.dart - App entry
lib/main.dart - Game library UI
lib/ui/screens/library_screen.dart - Game details UI
lib/ui/screens/game_detail_screen.dart - Settings UI
lib/ui/screens/settings_screen.dart - Download UI
lib/ui/screens/download_screen.dart - App state providers
lib/providers
Library services
- RomM provider
lib/providers/romm_provider.dart - RomM client
lib/core/romm/romm_service.dart - Metadata cache
lib/core/storage/metadata_cache_service.dart - ROM downloader
lib/core/downloader/download_service.dart
Game execution
- Game launcher
lib/core/emulator/game_launch_service.dart - Emulator strategies
lib/core/emulator/strategy_registry.dart - Emulator management
lib/core/emulator/emulator_download_service.dart - BIOS and firmware
lib/core/emulator/firmware_service.dart - RetroArch cores
lib/core/emulator/retroarch_core_list.dart
Saves and sync
- Save synchronization
lib/core/save/save_sync_service.dart - Save backups
lib/core/save/backup_service.dart - Background sync queue
lib/core/save/background_sync_queue.dart - Play session tracking
lib/core/romm/activity_session_tracker.dart
Platform features
- Headless commands
lib/main_cli.dart - Controller input
lib/core/input/gamepad_service.dart - RetroAchievements
lib/core/retroachievements/retroachievements_service.dart
Other components
- Player
- RomM server
Connections 31
- Player → Flutter app: uses
- App entry → Flutter app: starts
- Flutter app → Game library UI: presents
- Flutter app → Game details UI: presents
- Flutter app → Settings UI: presents
- Flutter app → Download UI: presents
- Game library UI → App state providers: reads state
- Game details UI → App state providers: reads state
- Download UI → App state providers: reads state
- App state providers → RomM provider: delegates
- RomM provider → RomM client: requests
- RomM client → RomM server: fetches library
- RomM client → Metadata cache: caches metadata
- Download UI → ROM downloader: requests download
- ROM downloader → RomM server: downloads ROM
- Game details UI → Game launcher: requests launch
- Game launcher → Emulator strategies: selects strategy
- Settings UI → Emulator management: manages emulators
- Settings UI → BIOS and firmware: manages BIOS
- Settings UI → RetroArch cores: configures cores
- Game launcher → Save synchronization: runs save pipeline
- Save synchronization → Save backups: creates backups
- Save synchronization → RomM client: syncs saves
- Save synchronization → Background sync queue: queues offline work
- Game launcher → Play session tracking: records sessions
- Player → Headless commands: runs commands
- Headless commands → RomM client: uses account
- Headless commands → ROM downloader: downloads ROM
- Headless commands → Game launcher: launches game
- Player → Controller input: controls games
- Game details UI → RetroAchievements: shows achievements