A Nostr client that makes relays a first-class concept
Go to file
2022-12-23 14:49:03 -08:00
public First commit 2022-11-22 17:28:33 -08:00
src Re introduce muffle 2022-12-23 14:49:03 -08:00
.ackrc Improve channel management and chunked retrieval of events 2022-11-29 10:21:51 -08:00
.env.local Add alerts page 2022-12-20 14:56:03 -08:00
.env.production Make dufflepud configurable 2022-12-03 12:56:39 -08:00
.eslintrc.cjs First commit 2022-11-22 17:28:33 -08:00
.fdignore First commit 2022-11-22 17:28:33 -08:00
.gitignore Make dufflepud configurable 2022-12-03 12:56:39 -08:00
CNAME Add CNAME file 2022-11-26 21:47:56 -08:00
index.html Nail down sub/unsub with modal 2022-11-30 09:12:28 -08:00
jsconfig.json First commit 2022-11-22 17:28:33 -08:00
LICENSE Add license 2022-12-19 08:49:31 -08:00
package-lock.json Add link previews 2022-12-03 12:26:13 -08:00
package.json Add link previews 2022-12-03 12:26:13 -08:00
postcss.config.cjs First commit 2022-11-22 17:28:33 -08:00
README.md Re introduce muffle 2022-12-23 14:49:03 -08:00
tailwind.config.cjs Get everything working again 2022-11-30 10:26:58 -08:00
vite.config.js Add sourcemaps 2022-12-05 21:46:40 -08:00

What is this?

Coracle is a web client for the Nostr protocol. While Nostr is useful for many things, Coracle focuses on providing a high-quality user experience. Check it out at coracle.social.

Dufflepud is a companion server which you can self-host. It helps Coracle with things like link previews and image uploads.

Coracle is currently in alpha - expect bugs, slow loading times, and rough edges.

Features

Bugs

  • Use https://nostr.watch/relays.json to populate relays
  • Add alerts for replies to posts the user liked
  • With link/image previews, remove the url from the note body if it's on a separate last line
  • Stack views so scroll position isn't lost on navigation
  • Add notification for slow relays
  • Wait for 60% or so of relays to eose to balance completeness with speed
  • Add a CSP, check for XSS in image urls

Current update

  • Re-implement muffle

    • Don't store muffled events, when muffle changes delete them
  • Delete old events

  • Make sure login/out, no user usage works

  • Add a re-sync/clear cache button

  • Note detail context not showing when navigating between note details (e.g. to parent)

  • Show reply to on feed

  • Write blog post

  • https://vitejs.dev/guide/features.html#web-workers

  • https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers

  • https://web.dev/module-workers/

  • Sync user

  • Based on petnames, sync network to 2 or 3 degrees of separation

    • When a user is added/removed, sync them and add to or remove from network
  • Add cursor object to handle since/until/last sync

  • Separate fetching and loading from the db

    • Each route should have a fetcher and loader.
    • The fetcher should keep track of the range of notes it has already gotten
    • Separate helper functions into loaders and fetchers
  • Main fetch requests:

    • Fetch feed by name, since last sync
    • Fetch person, including feed
    • Fetch note, including context
    • This is based on detail pages. Each request should check local db and fall back to network, all within an await.

Problems to solve

  • How will newcomers get followed?