GUI

The XMDB graphical interface is a web application that connects to a running XMDB server. It provides a SQL query editor, a media gallery for visualising image data, and a database object browser.

Also see the GUI user manual in a form of a PDF document, which contains screenshots with detailed explanations of it’s features: GUI User Manual


Technologies

The GUI is built with the following stack:

  • React 19

  • TypeScript 5.8

  • Vite 6

  • Zustand 5

  • React Router 7

  • Monaco Editor

  • react-resizable-panels

  • Lucide React

  • ESLint

Requirements

  • Node.js >= 18 (LTS recommended)

  • npm (bundled with Node.js)

  • A running XMDB server instance to connect to (see Using the Server)

Running the GUI

All commands are run from the gui/ directory.

Install dependencies (first time only):

npm install

Start the development server:

npm run dev

The application is served at http://localhost:5173 by default.

Other commands

Build for production:

npm run build

Run the linter:

npm run lint

Preview the production build locally:

npm run preview

Project structure

gui/src/
  App.tsx              -- Root router and route definitions
  layouts/             -- Page shells (MainLayout with sidebar, toolbar, tab bar)
  components/          -- Feature components (QueryEditor, Sidebar, GalleryView, ObjectView, etc.)
  data/
    global-states.ts   -- Zustand stores (connection, multi-tab query state)
    objects.ts         -- Types matching the /get-db-objects API response
    query-response.ts  -- Types matching the /run-query API response
    util.ts            -- Helpers (file picking, hex conversion, image encoding)
  styles/              -- CSS stylesheets
  assets/              -- Icons and static assets