| Crates.io | retrom-client-web |
| lib.rs | retrom-client-web |
| version | 0.7.38 |
| created_at | 2025-08-30 23:14:58.14546+00 |
| updated_at | 2025-09-20 23:19:54.905523+00 |
| description | The Retrom video game library web client |
| homepage | |
| repository | https://github.com/JMBeresford/retrom |
| max_upload_size | |
| id | 1818017 |
| size | 5,144,148 |
The Retrom Web Client is a React-based web application that serves as the primary user interface for the Retrom game library management system. It's designed to work both as a standalone web client and as the UI layer for the desktop application when wrapped by Tauri.
To run the web client in development mode:
pnpm nx dev retrom-client-web
For development with desktop-specific features enabled:
pnpm nx dev:desktop retrom-client-web
To create a production build for desktop integration:
pnpm nx build:desktop retrom-client-web
The built application will be in the packages/client-web/dist directory.
The web client is built with modern React patterns and follows a component-based architecture. Key aspects include:
The primitive UI components are initially provided by shadcn/ui which is built on top of:
/src/components - UI components/src/routes - Application routes and page components/src/providers - Context providers for state management/src/mutations - Data mutation hooks (React Query)/src/queries - Data fetching hooks (React Query)/src/lib - Shared utilities and libraries/src/utils - Utility functions/src/assets - Static assets like images and fontsThe web client can run in two different modes:
In web mode, the client connects to a pre-defined remote Retrom server instance via HTTP/gRPC. This mode allows users to browse their library and download games but doesn't support native game launching or system integration.
The web client supports web-based emulation using EmulatorJS
In desktop mode (when running inside the Tauri wrapper), additional features are enabled:
The application detects which mode it's running in and conditionally renders appropriate features using the DesktopOnly and WebOnly components from /src/lib/env.tsx.