Files
nq/AGENTS.md
T
2026-06-08 17:07:50 -07:00

20 lines
2.0 KiB
Markdown

The user logs in via NIP-07, NIP-46, or private key. See https://gitea.coracle.social/coracle/caravel/raw/branch/master/frontend/src/views/Login.tsx for an example login component.
The app has a sidebar with an "inbox", a list of existing quorums, and a "create quorum" button. The bottom shows the user's profile name/nip05 and a logout button. On mobile, an icon opens a quorum list in a drawer, and a plus button opens the quorum creation form.
The inbox shows all events pending signature across all quorums, including events the user has not yet signed. Each event shows x/y signed. Events not yet signed by the user have options for signing and declining, each with an optional message posted to the NIP-17 quorum chat. The inbox also lists quorum invitations with options to join or decline, each with a message.
Create quorum opens a modal for selecting quorum members and threshold, the quorum's outbox relays, and the quorum's kind 0 profile information.
Clicking a quorum opens the quorum detail page, which shows the profile information for the quorum's pubkey, a list of members, a list of recent events (including unsigned/declined) published by the quorum, and a NIP-17 encrypted group chat among members under their own pubkeys. The overflow menu has two options: rotate membership and sign event.
Rotating membership is a special case of signing an event. The option opens a form with the member list (editable, including removing oneself) and the threshold. An optional message is posted to the NIP-17 quorum chat.
The sign event button opens a modal/drawer for choosing an event kind: public note (kind 1), relay selections (kind 10002), or 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.
# Code style
Never re-export imports, always update the call site to point at the new source.