coracle
coracle copied to clipboard
A Nostr client that makes relays a first-class concept
What is this?
Coracle is a web client for the Nostr protocol focused on pushing the boundaries of what's unique about nostr, including relay selection and management, web-of-trust based moderation and content recommendations, and privacy protection. Check it out at coracle.social.
If you like Coracle and want to support its development, you can donate sats via Geyser.
Features
- [x] Threads/social
- [x] Profile search using NIP-50
- [x] Login via extension, nsecbunker, and pubkey
- [x] Profile sharing via QR codes
- [x] NIP 05 verification
- [x] NIP 65 relay selection and NIP 32 relay reviews
- [x] NIP 89 app recommendations
- [x] NIP 32 labeling and recommendations
- [x] NIP 99 classifieds
- [x] NIP 52 calendar events
- [x] NIP 87 closed groups
- [x] NIP 72 communities
- [x] NIP 89 client tag support
- [x] NIP 32 labeling and collections
- [x] Private group calendars and listings
- [x] Cross-posting between communities and main feed
- [x] Bech32 entity search and scan
- [x] Mention, reply, and reaction notifications
- [x] Direct messages - NIP 04 and NIP 24
- [x] Note composition with mentions and topics
- [x] Content warnings, mute, and keyword mute
- [x] Profile pages, follow/unfollow, follow/follower count
- [x] Thread muting, collapse thread
- [x] Invoice, quote, mention, link, image, and video rendering
- [x] Installable as a progressive web app
- [x] Integrated media uploads via NIP 96
- [x] Lightning zaps and reactions
- [x] Feeds customizable by person, relay, and topic using NIP-51
- [x] AUTH (NIP-42) support for closed relays
- [x] Multiplextr support for reducing bandwidth
- [x] Profile and note metadata
- [x] White-labeling support
- [x] NIP 51 person lists
- [x] Exports/imports of user events
- [x] User profile editing
- [x] NIP XX encrypted read receipts for notifications
- [x] Topic and relay feeds
- [x] Onboarding workflow
- [x] Multi-account support
- [x] Notifications view
You can find a more complete changelog here.
Run Coracle locally:
- Clone the project repository:
git clone https://github.com/coracle-social/coracle.git - Navigate to the project directory:
cd coracle - Install dependencies:
yarn - Customize configuration in
.env(optional, see below) - Start the development server:
yarn dev
Customization
Coracle is intended to be fully white-labeled by groups of various kinds. The following environment variables can be set in .env.local to customize Coracle's appearance and behavior:
VITE_DARK_THEMEandVITE_LIGHT_THEMEare comma-separate lists of key/value pairs defining theme colors.VITE_DVM_RELAYSis a comma-separated list of relays to use when making requests against DVMs.VITE_SEARCH_RELAYSis a comma-separated list of relays to use when using NIP 50 search.VITE_DEFAULT_RELAYSis a comma-separated list of relays to use as defaults/fallbacks.VITE_DEFAULT_FOLLOWSis a comma-separated list of hex pubkeys to fetch content from when the user isn't following anyone.VITE_ONBOARDING_LISTSis a comma-separated list ofkind:30003person lists to populate onboarding with.VITE_NIP96_URLSis a comma-separated list of default upload providers.VITE_IMGPROXY_URLis an imgproxy instance url for protecting user privacy and reducing bandwidth use.VITE_DUFFLEPUD_URLis a Dufflepud instance url, which helps Coracle with things like link previews and image uploads.VITE_PLATFORM_ZAP_SPLITis a decimal between 0 and 1 defining the default zap split percent.VITE_PLATFORM_PUBKEYis the pubkey of the platform owner. This gets zapped when using the platform zap split.VITE_FORCE_GROUPis an optionalkind:34550orkind:35834address. If provided, the home page of Coracle will be the home page for the group, and most views will be filtered down to the group's scope.VITE_PLATFORM_RELAYSis an optional comma-separated list of relay urls to use for feeds. If provided, most UI components related to relay selection will be hidden from the user.VITE_ENABLE_ZAPScan be set tofalseto disable zaps.VITE_APP_NAMEis the app's name.VITE_APP_URLis the app's url. Used to generate open graph meta tags.VITE_APP_LOGOis the path for the app's logo relative to thepublicdirectory, starting with a leading slash. Used to generate favicons and manifest.VITE_APP_WORDMARK_DARKandVITE_APP_WORDMARK_LIGHTare paths for the app's wordmark relative to thepublicdirectory, starting with a leading slash.VITE_APP_DESCRIPTIONis the app's description.VITE_CLIENT_NAMEis the client's name. Only change this if you have forked Coracle.VITE_CLIENT_IDis the client's NIP 89 handler id. Only change this if you have forked Coracle.VITE_BUGSNAG_API_KEYis your bugsnag api key.VITE_BUILD_HASHcan be set during build to indicate the software version on the about page.VITE_LOG_LEVELcan be set toinfo,warn, orerror. This controls how much shows up in the console.VITE_ENABLE_MARKETcan be set tofalseto disable the marketplace tab.
See .env for default values.