A Nostr client that makes relays a first-class concept
Go to file
Jon Staab 88cd8cee2b Fix some bugs, show loading when logging in with nip46 2024-06-12 10:21:47 -07:00
.husky Fix formatting check 2023-03-08 08:13:53 -06:00
android Add android directory 2024-05-27 10:03:34 -07:00
cypress Add cypress tests 2023-10-12 16:23:32 -07:00
public Update wordmark 2024-03-12 08:19:16 -07:00
src Fix some bugs, show loading when logging in with nip46 2024-06-12 10:21:47 -07:00
.ackrc Move loadPeople to PubkeyLoader 2023-07-11 13:47:28 -07:00
.editorconfig Work on recursive feed editor 2024-05-16 09:50:15 -07:00
.env Bump welshman 2024-06-11 08:31:04 -07:00
.eslintrc.cjs Update deps 2024-05-16 09:50:14 -07:00
.fdignore Add capacitorjs 2023-04-24 20:19:22 -05:00
.gitattributes Re-work feeds based on new spec 2024-05-16 09:50:15 -07:00
.gitignore Add android directory 2024-05-27 10:03:34 -07:00
.nvmrc Add support for kind 30023 2023-06-19 05:48:55 -07:00
.prettierrc Upgrade deps 2023-12-01 11:51:48 -08:00
CHANGELOG.md Add k tag to deletions 2024-06-11 15:22:10 -07:00
CNAME Adjust urls 2023-04-10 09:05:16 -05:00
CONTRIBUTING.md Remove nip28 chat 2023-09-27 09:59:22 -07:00
Dockerfile add a very basic docker image (#299) 2024-03-07 11:22:51 -08:00
LICENSE Switch license back to MIT 2023-03-16 09:09:23 -07:00
README.md Small fixes 2024-03-12 08:19:16 -07:00
capacitor.config.ts Bump changelog, update capacitor 2024-05-24 08:42:34 -07:00
cypress.config.ts Add cypress tests 2023-10-12 16:23:32 -07:00
index.html Move plausible script 2024-05-08 15:15:09 -07:00
package-lock.json Use a different indexeddb wrapper 2024-06-11 14:47:25 -07:00
package.json Use a different indexeddb wrapper 2024-06-11 14:47:25 -07:00
postcss.config.cjs First commit 2022-11-22 17:28:33 -08:00
pwa-assets.config.js Generate dynamic manifest/meta/favicons 2024-03-12 08:19:16 -07:00
tailwind.config.cjs Improve feed form 2024-05-16 09:50:15 -07:00
tsconfig.json Upgrade deps 2023-12-01 11:51:48 -08:00
vite.config.js Fix manifest 2024-03-12 08:19:16 -07:00

README.md

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

  • Threads/social
  • Profile search using NIP-50
  • Login via extension, nsecbunker, and pubkey
  • Profile sharing via QR codes
  • NIP 05 verification
  • NIP 65 relay selection and NIP 32 relay reviews
  • NIP 89 app recommendations
  • NIP 32 labeling and recommendations
  • NIP 99 classifieds
  • NIP 52 calendar events
  • NIP 87 closed groups
  • NIP 72 communities
  • NIP 89 client tag support
  • NIP 32 labeling and collections
  • Private group calendars and listings
  • Cross-posting between communities and main feed
  • Bech32 entity search and scan
  • Mention, reply, and reaction notifications
  • Direct messages - NIP 04 and NIP 24
  • Note composition with mentions and topics
  • Content warnings, mute, and keyword mute
  • Profile pages, follow/unfollow, follow/follower count
  • Thread muting, collapse thread
  • Invoice, quote, mention, link, image, and video rendering
  • Installable as a progressive web app
  • Integrated media uploads via NIP 96
  • Lightning zaps and reactions
  • Feeds customizable by person, relay, and topic using NIP-51
  • AUTH (NIP-42) support for closed relays
  • Multiplextr support for reducing bandwidth
  • Profile and note metadata
  • White-labeling support
  • NIP 51 person lists
  • Exports/imports of user events
  • User profile editing
  • NIP XX encrypted read receipts for notifications
  • Topic and relay feeds
  • Onboarding workflow
  • Multi-account support
  • 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_THEME and VITE_LIGHT_THEME are comma-separate lists of key/value pairs defining theme colors.
  • VITE_DVM_RELAYS is a comma-separated list of relays to use when making requests against DVMs.
  • VITE_SEARCH_RELAYS is a comma-separated list of relays to use when using NIP 50 search.
  • VITE_DEFAULT_RELAYS is a comma-separated list of relays to use as defaults/fallbacks.
  • VITE_DEFAULT_FOLLOWS is a comma-separated list of hex pubkeys to fetch content from when the user isn't following anyone.
  • VITE_ONBOARDING_LISTS is a comma-separated list of kind:30003 person lists to populate onboarding with.
  • VITE_NIP96_URLS is a comma-separated list of default upload providers.
  • VITE_IMGPROXY_URL is an imgproxy instance url for protecting user privacy and reducing bandwidth use.
  • VITE_DUFFLEPUD_URL is a Dufflepud instance url, which helps Coracle with things like link previews and image uploads.
  • VITE_PLATFORM_ZAP_SPLIT is a decimal between 0 and 1 defining the default zap split percent.
  • VITE_PLATFORM_PUBKEY is the pubkey of the platform owner. This gets zapped when using the platform zap split.
  • VITE_FORCE_GROUP is an optional kind:34550 or kind:35834 address. 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_RELAYS is 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_ZAPS can be set to false to disable zaps.
  • VITE_APP_NAME is the app's name.
  • VITE_APP_URL is the app's url. Used to generate open graph meta tags.
  • VITE_APP_LOGO is the path for the app's logo relative to the public directory, starting with a leading slash. Used to generate favicons and manifest.
  • VITE_APP_WORDMARK_DARK and VITE_APP_WORDMARK_LIGHT are paths for the app's wordmark relative to the public directory, starting with a leading slash.
  • VITE_APP_DESCRIPTION is the app's description.
  • VITE_CLIENT_NAME is the client's name. Only change this if you have forked Coracle.
  • VITE_CLIENT_ID is the client's NIP 89 handler id. Only change this if you have forked Coracle.
  • VITE_BUGSNAG_API_KEY is your bugsnag api key.
  • VITE_BUILD_HASH can be set during build to indicate the software version on the about page.
  • VITE_LOG_LEVEL can be set to info, warn, or error. This controls how much shows up in the console.
  • VITE_ENABLE_MARKET can be set to false to disable the marketplace tab.

See .env for default values.