Update install instructions

This commit is contained in:
Jonathan Staab 2023-03-03 09:26:56 -06:00
parent 1e0b032d03
commit 6b2954c48c
5 changed files with 55 additions and 41 deletions

View File

@ -41,4 +41,5 @@ You can find a more complete changelog [here](./ROADMAP.md).
- Clone the project repository: `git clone https://github.com/staab/coracle.git`
- Navitage to the project directory: `cd coracle`
- Install dependencies: `npm install`
- Add an env file from the template: `cp env.template env.local`
- Start the development server: `npm run dev`

View File

@ -1,19 +1,48 @@
# Current
- [ ] Search by nip05 alias
- nevent1qqsdt4ux9c0zvd6hzpwnzznjsmd7a337mpxdspu9wd4fq8drvqejdmqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsffemjp
- [ ] Fix feeds
- [ ] Hash pubkey so we can track usage by unique user
- [ ] Try adding boxes/separation on feeds based on user feedback
- [ ] Strip zero width spaces from compose
- [ ] Fix iOS/safari/firefox
- [ ] Make the note relays button modal make sense, one relay with no explanation is not good
- [ ] Add dynamic title tag
- [ ] Show more link on long notes (rather than just an ellipsis)
- [ ] Show popover on delayed hover rather than click (on mobile, keep it click)
- [ ] QR code component that sizes input to qr code width to make it tidy
# Image uploads
- Default will charge via lightning and have a tos, others can self-host and skip that.
- [ ] Add LN invoices
- [ ] Build UI
- Put sql stuff in a library, use it in dufflepud and image service
- [ ] Post announcement on SN, TG
- [ ] Contact other client authors, self-hostable, or just use my instance
- https://github.com/ElementsProject/lightning-charge
- https://github.com/nostr-protocol/nips/pull/250
- https://github.com/brandonsavage/Upload
- https://github.com/seaweedfs/seaweedfs
- https://github.com/cubefs/cubefs
# Coracle website
- [ ] Simple intro to coracle
- [ ] Add nip05 to coracle
- [ ] After ~10 sessions prompt them to verify and update their nip05
- [ ] Maybe only if they don't have a nip05 yet
# Others
- Tool for finding relays with light usage so people can spread out
- Graph view? Query db with COUNT? Hardware specs on relay info endpoint?
- "adoptarelay.com"
- Add suggested relays based on follows or topics
- Recommendations
- Indexer/multiplexer
- relay.coracle.social
- Improve overall design
- Stripped down easy version of coracle
- Extract library?
- Parameterize color scheme
- Deploy to special domains with relays built in
# Custom views
@ -23,14 +52,13 @@
# More
- [ ] https://media.nostr.band/
- [ ] Make the note relays button modal make sense, one relay with no explanation is not good
- [ ] Linkify invoices
- [ ] Linkify bech32 entities w/ NIP 21 https://github.com/nostr-protocol/nips/blob/master/21.md
- [ ] Person zaps
- [ ] Add dynamic title tag
- [ ] Collapsible thread view
- [ ] Split inbox into replies + everything else
- [ ] Show more link on long notes
- [ ] Show popover on delayed hover rather than click (on mobile, keep it click)
- [ ] Split notifications into replies + everything else, or add filters
- [ ] Light mode
- [ ] Mute threads http://localhost:5173/nevent1qqsyz8x6r0cu7l6vwlcjhf8qhxyjtdykvuervkc3t3mfggse4qtwt0gpyfmhxue69uhkummnw3ezumrfvfjhyarpwdc8y6tddaexg6t4d5hxxmmdnhxvea
- [ ] Add webtorrent support
@ -47,24 +75,14 @@
- Find the best implementation https://github.com/nostr-protocol/nips/search?q=poll&type=issues
- Comment on all three nip drafts which one I implemented
- [ ] Micro app DSL
- [ ] Sort feeds by created date on profile page?
- [ ] Implement https://media.nostr.band/
- [ ] Groups - may need a new NIP, or maybe use topics
- [ ] Support https://github.com/nostr-protocol/nips/pull/211 as a bech32 entity
- [ ] Add new DM button to dms list
- [ ] Add suggested relays based on follows or topics
- [ ] Add "new DM" button to dms list
- [ ] Support relay auth
- [ ] Following indicator on person info
- [ ] Share button for notes, shows qr code and nevent
- [ ] If a user has no write relays (or is not logged in), open a modal
- [ ] open web+nostr links like snort
- [ ] Channels
- [ ] Separate chat and DMs
- [ ] Don't waste space caching rooms, load those lazily
- [ ] Damus has chats divided into DMs and requests
- [ ] Ability to leave/mute DM conversation
- [ ] Add petnames for channels
- [ ] Add notifications for chat messages
- [ ] Ability to leave/mute DM conversation
- [ ] Add notifications for chat messages
- [ ] Add encrypted settings storage using nostr events
- [ ] Save DM/chat read status in encrypted note
- [ ] Relay recommendations based on follows/followers
@ -74,10 +92,9 @@
- https://github.com/nbd-wtf/nostr-tools/blob/master/nip26.ts
- [ ] Add keyword mutes
- [ ] Attachments (a tag w/content type and url)
- [ ] Sign in as user with one click to view things from their pubkey's perspective - do this with multiple accounts
- [ ] Sign in as user with one click to view things from their pubkey's perspective
- nevent1qqsyyxtrhpsqeqaqgucd6uzpyh8eq2hkfgr0yzr7ku7tgyl5cn9jw5qpz3mhxue69uhhyetvv9ujumn0wd68ytnzvuq3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7l564wx
- [ ] Search by nip05 alias
- nevent1qqsdt4ux9c0zvd6hzpwnzznjsmd7a337mpxdspu9wd4fq8drvqejdmqpz3mhxue69uhhyetvv9ujuerpd46hxtnfduqs6amnwvaz7tmwdaejumr0dsffemjp
- [ ] Multiple accounts
- [ ] Show options on note detail for retrieving replies
- Replies from user's network
- All replies from author's + user's read relays, including spam
@ -87,7 +104,7 @@
- [ ] Release to android
- https://svelte-native.technology/docs
- https://ionic.io/blog/capacitor-everything-youve-ever-wanted-to-know
- Or just wrap it
- Or just wrap it in an apk
- [ ] When publishing fails, enqueue and retry
- Track which relays the events should be published to, and which ones have succeeded
- Maybe notify and ask user which events to re-publish.

2
env.template Normal file
View File

@ -0,0 +1,2 @@
VITE_DUFFLEPUD_URL=https://dufflepud.onrender.com
VITE_SHOW_DEBUG_ROUTE=false

14
package-lock.json generated
View File

@ -22,7 +22,7 @@
"js-lnurl": "^0.5.1",
"localforage": "^1.10.0",
"localforage-memoryStorageDriver": "^0.9.2",
"nostr-tools": "^1.4.1",
"nostr-tools": "^1.7.4",
"npm-run-all": "^4.1.5",
"qr-scanner": "^1.4.2",
"qrcode": "^1.5.1",
@ -6076,9 +6076,9 @@
}
},
"node_modules/nostr-tools": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.4.1.tgz",
"integrity": "sha512-pFAbVNtRMfW5ducUmk0f20IZv4a6pXYchBQKuA6D3x6sg83KoWipuiAie/gfOgrkoCsBLV14DmpWsVmo3N7WXQ==",
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz",
"integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==",
"dependencies": {
"@noble/hashes": "1.0.0",
"@noble/secp256k1": "^1.7.1",
@ -13095,9 +13095,9 @@
"dev": true
},
"nostr-tools": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.4.1.tgz",
"integrity": "sha512-pFAbVNtRMfW5ducUmk0f20IZv4a6pXYchBQKuA6D3x6sg83KoWipuiAie/gfOgrkoCsBLV14DmpWsVmo3N7WXQ==",
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-1.7.4.tgz",
"integrity": "sha512-YowDJ+S3UW9KCYPDZfZXXMITrJSMjiCmFOK5HohyKkg+w6EipFUTkFRBPRA2BTLXO/qw8gukKXfL0B7Dv3jtcQ==",
"requires": {
"@noble/hashes": "1.0.0",
"@noble/secp256k1": "^1.7.1",

View File

@ -1,15 +1,13 @@
<script lang="ts">
import type {ProfilePointer} from 'nostr-tools/nip19'
import QrScanner from 'qr-scanner'
import {onDestroy} from 'svelte'
import {navigate} from 'svelte-routing'
import {waitFor} from 'hurdak/lib/hurdak'
import {pluck, find} from 'ramda'
import {find} from 'ramda'
import {nip05, nip19} from 'nostr-tools'
import Input from 'src/partials/Input.svelte'
import Anchor from 'src/partials/Anchor.svelte'
import Spinner from 'src/partials/Spinner.svelte'
import {getUserReadRelays} from 'src/agent/relays'
import {toast} from "src/app/ui"
let mode = 'input', video, ready, value, scanner
@ -31,12 +29,8 @@
return
}
let profile = await nip05.queryProfile(input) as ProfilePointer
let profile = await nip05.queryProfile(input)
if (profile) {
if (profile.relays.length === 0) {
profile.relays = pluck('url', getUserReadRelays())
}
navigate("/" + nip19.nprofileEncode(profile))
return
}