Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,832 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)

Headless DM harness

src/dev/tests/harness/ runs the real desktop client in Node - both sides of a conversation, no browser, no devices. It exists for the DM transport investigation: reproducing decrypt failures, measuring send-vs-arrive loss, and testing session recovery unattended.

yarn harness dm-basic      # two bots exchange DMs both ways
yarn harness dm-reorder    # reproduces the upstream decrypt failure in ~35s
yarn harness dm-loss       # send-vs-arrive accounting per direction

A sibling harness drives the mobile client the same way (quorum-mobile/dev/harness/, yarn harness:dm).

Scenarios talk to the production relay and register real accounts, so use throwaway or dedicated test accounts only. The harness README covers setup, the full scenario list, and what the bench deliberately does not cover.

For the investigation these support, start at .agents/docs/transport-reliability-index.md.

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, plus two sibling repositories cloned next to this one:

your-git-folder/
├── quorum-desktop/              ← this repo
├── quorum-shared/               ← github.com/QuilibriumNetwork/quorum-shared
└── quilibrium-js-sdk-channels/

@quilibrium/quorum-shared is linked locally, not installed from a registry. package.json declares it as "link:../quorum-shared", so yarn install symlinks the sibling folder directly into node_modules. The folder must be named exactly quorum-shared and sit next to quorum-desktop, otherwise the install fails. There is no published package to fall back on.

When running locally in a browser, calls to the prod Quorum API are routed through the Vite dev server proxy (see web/vite.config.tsserver.proxy), so the browser only ever talks same-origin and no CORS workaround is needed. You do not need to disable browser CORS or install a CORS-unblocking extension. The proxy is dev-only; production and Electron builds call the API directly and are unaffected.

Initial Setup

# 1. SDK: build it and register a global yarn link
cd ../quilibrium-js-sdk-channels/
yarn build
yarn link

# 2. Shared package: install deps and build dist/
#    dist/ is gitignored, so a fresh clone ships no build output
cd ../quorum-shared/
yarn install
yarn build

# 3. This repo
cd ../quorum-desktop/
yarn link @quilibrium/quilibrium-js-sdk-channels
yarn install

Note the asymmetry: the SDK uses yarn link (a global link registered by the SDK repo), while quorum-shared needs no link command at all, since the link:../quorum-shared entry in package.json makes yarn install create the symlink for you.

Working on quorum-shared

The app imports the built output (dist/index.mjs), not the TypeScript source. Editing quorum-shared/src has no effect on this app until you rebuild:

cd ../quorum-shared/
yarn build   # one-off rebuild
yarn dev     # or watch mode: rebuilds on every save

Vite picks up the new dist on the next reload. If the app still serves stale shared code, run yarn dev:clean here to drop Vite's cache.

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-07-28

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages