coracle/README.md
2022-12-23 14:49:03 -08:00

2.6 KiB

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?