2026-06-08 10:09:41 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 10:09:41 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00
2026-06-08 09:30:44 -07:00

This is a web application which allows for creating, rotating, and signing under multisig quorums for nostr keys.

Application

The user should be able to log in via nip 07, nip 46, or via private key. See https://gitea.coracle.social/coracle/caravel/raw/branch/master/frontend/src/views/Login.tsx for an example login component.

From here, users should see a sidebar with an "inbox", a list of exiting quorums, and a "create quorum" button. At the bottom, show their profile and name/nip05 and a logout button. On mobile, show an icon which opens a quorum list to select from in a drawer, and a plus button which opens the quorum creation form.

The inbox view should show all events pending signature across all quorums, including events the user has not signed with his shard yet. Each event should show x/y signed, and events not signed by the user should show options for signing and declining signature. In either case, an optional message can be included which is posted to the nip 17 quorum chat. The inbox should also show a list of quorums the user has been invited to including options to join or decline membership, each with a message.

Create quorum opens a modal which allows the user to select the quorum members and threshold, the quorum's outbox relays, and set the quorum's kind 0 profile information.

When clicking on a quorum, open the quorum detail page. This should show the profile information for the quorum's pubkey, a list of quorum members, a list of recent events (including unsigned/declined) publshed by the quorum, and a quorum chat (a nip 17 encrypted chat including the members of the quorum under their own pubkeys). The overflow menu should include the following options: rotate membership, sign event.

Rotating membership is a special case of signing an event; this option opens a form showing the member list and the ability to edit it (including removing oneself) and the threshold. An optional message can be included which is posted to the nip 17 quorum chat.

The sign event button opens a modal/drawer which asks the user to choose which event kind: public note (kind 1), relay selections (kind 10002), profile (kind 0).

Use solidjs/tailwind/preline and applesauce for nostr functionality. Use @noble/curves for FROST cryptographic primitives (DKG, Feldman VSS, threshold signing) and @noble/hashes for hash functions. Use toast for error messages, not inline errors.

Protocol

See PROTOCOL.md for the full protocol specification.

Other details

The NIP 17 quorum chat should include messages from members only during times when they were members of the quorum, based on stored quorum rotation events. These events should be stored durably in indexeddb.

S
Description
No description provided
Readme MIT 698 KiB
Languages
TypeScript 99.4%
Dockerfile 0.4%
HTML 0.1%