coracle/README.md

91 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

2022-12-15 18:31:47 +00:00
# What is this?
2022-11-24 19:47:03 +00:00
2023-07-26 16:45:53 +00:00
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](https://coracle.social).
2022-12-15 18:31:47 +00:00
2022-12-24 00:02:01 +00:00
If you like Coracle and want to support its development, you can donate sats via [Geyser](https://geyser.fund/project/coracle).
2022-12-15 18:31:47 +00:00
# Features
2022-11-24 19:47:03 +00:00
2022-11-27 03:34:28 +00:00
- [x] Threads/social
- [x] Profile search using NIP-50
2023-09-27 16:59:22 +00:00
- [x] Login via extension, nsecbunker, and pubkey
2023-02-15 16:27:49 +00:00
- [x] Profile sharing via QR codes
- [x] NIP 05 verification
2023-09-27 16:59:22 +00:00
- [x] NIP 65 relay selection and NIP 32 relay reviews
- [x] NIP 89 app recommendations
- [x] NIP 32 labeling and recommendations
2024-01-31 17:34:32 +00:00
- [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
2023-09-27 16:59:22 +00:00
- [x] Bech32 entity search and scan
- [x] Mention, reply, and reaction notifications
- [x] Direct messages - NIP 04 and NIP 24
2023-02-15 16:27:49 +00:00
- [x] Note composition with mentions and topics
2023-09-27 16:59:22 +00:00
- [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
2023-03-03 16:44:58 +00:00
- [x] Installable as a progressive web app
2024-01-31 17:34:32 +00:00
- [x] Integrated media uploads via NIP 96
2023-09-27 16:59:22 +00:00
- [x] Lightning zaps and reactions
- [x] Feeds customizable by person, relay, and topic using NIP-51
2024-01-31 17:34:32 +00:00
- [x] AUTH (NIP-42) support for closed relays
- [x] Multiplextr support for reducing bandwidth
- [x] Profile and note metadata
2023-04-27 18:35:24 +00:00
- [x] White-labeling support
2023-09-27 16:59:22 +00:00
- [x] NIP 51 person lists
2024-01-31 17:34:32 +00:00
- [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
2023-02-15 16:27:49 +00:00
2023-08-03 18:09:50 +00:00
You can find a more complete changelog [here](./CHANGELOG.md).
2023-03-02 20:37:08 +00:00
# Run Coracle locally:
2023-03-29 15:17:37 +00:00
- Clone the project repository: `git clone https://github.com/coracle-social/coracle.git`
2023-08-03 18:09:50 +00:00
- Navigate to the project directory: `cd coracle`
- Install dependencies: `yarn`
- Customize configuration in `.env` (optional, see below)
2023-08-03 18:09:50 +00:00
- 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](https://imgproxy.net) instance url for protecting user privacy and reducing bandwidth use.
- `VITE_DUFFLEPUD_URL` is a [Dufflepud](https://github.com/coracle-social/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. For user privacy, `VITE_PLATFORM_RELAYS` should also be set when using `VITE_FORCE_GROUP`.
- `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.
2024-03-08 18:41:21 +00:00
- `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](https://www.bugsnag.com/) 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.