Skip to content

QuilibriumNetwork/quorum-desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,515 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Quorum Desktop

The world's first fully private and decentralized group messenger. Powered by Quilibrium and the libp2p stack, Quorum can be used over TCP, QUIC, Websockets, or even LoRa — so it can run across the traditional internet, local networks, or off-grid setups.

Available Platforms:

Repository Ecosystem

Quorum is built as a multi-repository ecosystem where shared functionality is centralized:

Repository Purpose
quorum-desktop Web + Electron desktop app (this repo)
quorum-mobile React Native + Expo mobile app
quorum-shared Shared types, hooks, sync protocol (@quilibrium/quorum-shared)

All clients sync data via the same protocol defined in quorum-shared, ensuring messages, bookmarks, and user settings stay in sync across all devices.

Documentation

For detailed documentation on specific features and components, please refer to the .agents/docs directory. You can find the complete index of available documentation in .agents/INDEX.md.

Key Documentation:

Development Resources

The .agents/ folder contains development resources including:

  • Architecture documentation and component guides
  • Bug reports and solutions
  • Task management (pending & ongoing, completed)
  • Mobile development guidelines and cross-platform considerations

Development Tools

The src/dev/ folder contains development utilities:

  • Dev tools (/dev) - Hub for the current available development tools
  • Documentation Viewer (/dev) - Interactive frontend for browsing docs, tasks, and bug reports from the .agents/ folder
  • Primitives Playground (/playground) - Web-based testing environment for UI primitives and components
  • Mobile Playground - Comprehensive testing environment accessible by running the mobile app (see Mobile Development section)

Accessing Development Tools

After running yarn dev, you can access the development tools at: http://localhost:[port]/dev

Testing with Mock Data

Add ?users=N to any URL to generate mock users/contacts for testing:

# Space members list (1000 mock users)
http://localhost:5173/spaces/{space-id}/{channel-id}?users=1000

# Direct messages list (50 mock contacts)
http://localhost:5173/messages?users=50

localStorage (persistent across sessions):

// Enable mock users (Space members)
localStorage.setItem('debug_mock_users', 'true')
localStorage.setItem('debug_mock_count', '1000')

// Enable mock conversations (DM contacts)
localStorage.setItem('debug_mock_conversations', 'true')
localStorage.setItem('debug_mock_conversation_count', '50')

// Disable
localStorage.removeItem('debug_mock_users')
localStorage.removeItem('debug_mock_conversations')

Setup and Development

Prerequisites

Requires Node.js and quilibrium-js-sdk-channels cloned alongside this repository. Running locally in a browser against prod Quorum API requires CORS to be disabled, consult your extensions or settings to perform this (if you disable CORS in your browser, remember to re-enable it as soon as you have finished testing).

Initial Setup

cd ../quilibrium-js-sdk-channels/
yarn build
yarn link
cd ../quorum-desktop/
yarn link @quilibrium/quilibrium-js-sdk-channels
yarn install

Web Development

To run the web app in development:

yarn dev

To run in Electron desktop app:

yarn dev

# In another terminal
yarn electron:dev

To build for production and preview:

yarn build:preview

Mobile Development

The mobile app lives in a separate repository: quorum-mobile

Both apps share code via the @quilibrium/quorum-shared package. See Quorum Ecosystem Architecture for details on the multi-repo setup.

Translation Workflow

All the existing translations (apart from English) have been created using an LLM.
Communities are welcome to proofread and correct them. We are setting up a dedicated platform to do just that. Proofreading completed for: English, Italian.

To Correct an Existing Language

  1. Correct the file: src/i18n/<locale>/messages.po
  2. Run the command:
    yarn lingui:compile
    This updates the messages.js file in src/i18n/<locale>/messages.js.
  3. Commit the changes and push to the remote repository.

To Add a New Language

  1. Add the language to locales.ts in: src/i18n/locales.ts
  2. Run the command:
    yarn lingui:extract
    This creates the .po file in src/i18n/<new-locale>/messages.po.
  3. Translate the messages in the messages.po file.
    • To translate via LLM, you can use: po-files-translator (even if you choose to use an LLM, it's important to proofread the final text)
  4. Run the command:
    yarn lingui:compile
    This creates the messages.js file in src/i18n/<new-locale>/messages.js.
  5. Commit the changes and push to the remote repository.

Updated: 2026-01-06