├── packages ├── wallet │ ├── README.md │ ├── typedoc.json │ ├── src │ │ └── custom.d.ts │ ├── tsconfig.json │ └── package.json ├── app │ ├── bunfig.toml │ ├── config │ │ └── README.md │ ├── src │ │ ├── External │ │ │ ├── index.ts │ │ │ └── NostrServices.ts │ │ ├── assets │ │ │ ├── img │ │ │ │ ├── cashu.png │ │ │ │ ├── lnd-logo.png │ │ │ │ └── nostrich.webp │ │ │ └── fonts │ │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2 │ │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2 │ │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2 │ │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2 │ │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2 │ │ │ │ ├── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2 │ │ │ │ └── UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2 │ │ ├── setupTests.ts │ │ ├── Pages │ │ │ ├── ZapPool │ │ │ │ ├── ZapPool.css │ │ │ │ └── ZapPool.tsx │ │ │ ├── settings │ │ │ │ ├── handle │ │ │ │ │ ├── index.tsx │ │ │ │ │ ├── Manage.tsx │ │ │ │ │ └── routes.tsx │ │ │ │ ├── wallet │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── routes.tsx │ │ │ │ ├── tools │ │ │ │ │ └── index.tsx │ │ │ │ ├── SnortNostrAddressService.tsx │ │ │ │ ├── Keys.css │ │ │ │ ├── saveRelays.tsx │ │ │ │ └── index.tsx │ │ │ ├── Root │ │ │ │ ├── ConversationsTab.tsx │ │ │ │ ├── BlindSpots.tsx │ │ │ │ ├── Media.tsx │ │ │ │ ├── FollowedByFriendsTab.tsx │ │ │ │ ├── DefaultTab.tsx │ │ │ │ ├── TagsTab.tsx │ │ │ │ ├── NotesTab.tsx │ │ │ │ ├── RootRoutes.tsx │ │ │ │ └── RelayFeedPage.tsx │ │ │ ├── Profile │ │ │ │ ├── ProfileTabType.tsx │ │ │ │ └── MusicStatus.tsx │ │ │ ├── Messages │ │ │ │ ├── UnreadCount.tsx │ │ │ │ └── ChatParticipant.tsx │ │ │ ├── subscribe │ │ │ │ └── index.css │ │ │ ├── About.tsx │ │ │ ├── Layout │ │ │ │ └── HasNotificationsMarker.tsx │ │ │ ├── FreeNostrAddressPage.tsx │ │ │ ├── Deck │ │ │ │ └── Articles.tsx │ │ │ ├── TopicsPage.tsx │ │ │ ├── HelpPage.tsx │ │ │ ├── NostrAddressPage.tsx │ │ │ └── Notifications │ │ │ │ ├── getNotificationContext.tsx │ │ │ │ └── notificationContext.tsx │ │ ├── Components │ │ │ ├── ZapModal │ │ │ │ ├── ZapType.tsx │ │ │ │ ├── SuccessAction.tsx │ │ │ │ └── ZapModalInvoice.tsx │ │ │ ├── Event │ │ │ │ ├── Note │ │ │ │ │ ├── types.tsx │ │ │ │ │ ├── NoteFooter │ │ │ │ │ │ ├── ZapperQueue.tsx │ │ │ │ │ │ ├── AsyncFooterIcon.tsx │ │ │ │ │ │ └── PowIcon.tsx │ │ │ │ │ └── TranslationInfo.tsx │ │ │ │ ├── Thread │ │ │ │ │ ├── util.ts │ │ │ │ │ └── ThreadRoute.tsx │ │ │ │ ├── Reveal.tsx │ │ │ │ ├── FileUpload.tsx │ │ │ │ ├── HiddenNote.tsx │ │ │ │ └── Create │ │ │ │ │ └── util.ts │ │ │ ├── RightWidgets │ │ │ │ ├── index.tsx │ │ │ │ └── base.tsx │ │ │ ├── Embed │ │ │ │ ├── NostrNestsEmbed.tsx │ │ │ │ ├── ZapstrEmbed.css │ │ │ │ ├── SoundCloudEmded.tsx │ │ │ │ ├── Hashtag.tsx │ │ │ │ ├── WavlakeEmbed.tsx │ │ │ │ ├── TwitchEmbed.tsx │ │ │ │ ├── SpotifyEmbed.tsx │ │ │ │ ├── YoutubeEmbed.tsx │ │ │ │ ├── MagnetLink.tsx │ │ │ │ ├── AppleMusicEmbed.tsx │ │ │ │ ├── MixCloudEmbed.tsx │ │ │ │ ├── GenericPlayer.tsx │ │ │ │ ├── UrlStatusCheck.tsx │ │ │ │ └── Mention.tsx │ │ │ ├── json.tsx │ │ │ ├── PageSpinner.tsx │ │ │ ├── Relay │ │ │ │ ├── software.tsx │ │ │ │ ├── name.tsx │ │ │ │ ├── status-label.tsx │ │ │ │ ├── paid.tsx │ │ │ │ ├── RelaysMetadata.tsx │ │ │ │ ├── uptime-label.tsx │ │ │ │ └── permissions.tsx │ │ │ ├── Text │ │ │ │ ├── DisableMedia.tsx │ │ │ │ ├── HighlightedText.tsx │ │ │ │ └── const.ts │ │ │ ├── IntlProvider │ │ │ │ ├── langStore.tsx │ │ │ │ ├── useLocale.tsx │ │ │ │ └── IntlProviderUtils.tsx │ │ │ ├── zap-amount.tsx │ │ │ ├── User │ │ │ │ ├── FollowsYou.tsx │ │ │ │ ├── Username.tsx │ │ │ │ ├── Following.tsx │ │ │ │ ├── AvatarGroup.tsx │ │ │ │ ├── ProfileLink.tsx │ │ │ │ ├── MuteButton.tsx │ │ │ │ ├── DisplayName.tsx │ │ │ │ ├── ProfileCardWrapper.tsx │ │ │ │ ├── NoteToSelf.tsx │ │ │ │ ├── UserWebsiteLink.tsx │ │ │ │ └── FollowButton.tsx │ │ │ ├── ScrollToTop.tsx │ │ │ ├── Textarea │ │ │ │ └── Textarea.css │ │ │ ├── WarningNotice │ │ │ │ └── WarningNotice.tsx │ │ │ ├── Button │ │ │ │ ├── CloseButton.tsx │ │ │ │ ├── NavLink.tsx │ │ │ │ ├── BackButton.tsx │ │ │ │ ├── LogoutButton.tsx │ │ │ │ ├── IconButton.tsx │ │ │ │ └── AsyncIcon.tsx │ │ │ ├── Icons │ │ │ │ ├── Icon.tsx │ │ │ │ └── Spinner.tsx │ │ │ ├── Review.tsx │ │ │ ├── Progress │ │ │ │ └── Progress.tsx │ │ │ ├── ErrorOrOffline.tsx │ │ │ ├── Offline.tsx │ │ │ ├── Tasks │ │ │ │ ├── DonateTask.tsx │ │ │ │ ├── Nip5Task.tsx │ │ │ │ ├── FollowMorePeople.tsx │ │ │ │ ├── RenewSubscription.tsx │ │ │ │ └── PendingChangesTask.tsx │ │ │ ├── Feed │ │ │ │ └── LoadMore.tsx │ │ │ └── LiveStream │ │ │ │ └── nests-participants.tsx │ │ ├── bench.html │ │ ├── Hooks │ │ │ ├── useRelays.tsx │ │ │ ├── useImgProxy.ts │ │ │ ├── useTimelineWindow.tsx │ │ │ ├── useLogin.tsx │ │ │ ├── useWindowSize.ts │ │ │ ├── useLoading.tsx │ │ │ ├── useHorizontalScroll.tsx │ │ │ ├── useEventPublisher.tsx │ │ │ ├── useTextTransformCache.tsx │ │ │ ├── useContentDiscovery.ts │ │ │ ├── useTraceTimeline.tsx │ │ │ ├── usePageDimensions.tsx │ │ │ ├── useLiveStreams.ts │ │ │ ├── useTimelineChunks.ts │ │ │ ├── useProfileLink.ts │ │ │ ├── useCopy.ts │ │ │ ├── useDiscoverMediaServers.ts │ │ │ ├── useBlossomServers.ts │ │ │ ├── useCommunityLeaders.tsx │ │ │ ├── useTheme.tsx │ │ │ ├── useKeyboardShortcut.ts │ │ │ ├── useLoginRelays.tsx │ │ │ └── usePreferences.ts │ │ ├── Feed │ │ │ ├── RelayState.ts │ │ │ ├── RelaysFeed.tsx │ │ │ ├── WorkerRelayView.ts │ │ │ ├── ZapsFeed.ts │ │ │ ├── FollowersFeed.ts │ │ │ ├── HashtagsFeed.ts │ │ │ ├── FollowsFeed.ts │ │ │ └── StatusFeed.ts │ │ ├── Utils │ │ │ ├── Number.ts │ │ │ ├── emoji-search.ts │ │ │ ├── Login │ │ │ │ └── index.ts │ │ │ ├── getEventMedia.ts │ │ │ └── Thread │ │ │ │ └── index.ts │ │ ├── Cache │ │ │ ├── CommunityLeadersStore.tsx │ │ │ ├── ChatCache.ts │ │ │ ├── ProfileWorkerCache.ts │ │ │ ├── RefreshFeedCache.ts │ │ │ ├── UserFollowsWorker.ts │ │ │ └── RelaysWorkerCache.ts │ │ └── system.ts │ ├── public │ │ ├── iris │ │ │ ├── favicon.png │ │ │ ├── robots.txt │ │ │ ├── img │ │ │ │ ├── icon128.png │ │ │ │ ├── irisconnects.png │ │ │ │ ├── maskable_icon.png │ │ │ │ ├── apple-touch-icon.png │ │ │ │ ├── maskable_icon_x192.png │ │ │ │ ├── android-chrome-192x192.png │ │ │ │ └── android-chrome-512x512.png │ │ │ ├── .well-known │ │ │ │ └── assetlinks.json │ │ │ ├── _headers │ │ │ └── manifest.json │ │ ├── nostr │ │ │ ├── nostr.jpg │ │ │ ├── favicon.png │ │ │ ├── img │ │ │ │ └── apple-touch-icon.png │ │ │ └── _headers │ │ ├── phoenix │ │ │ ├── favicon.png │ │ │ ├── logo_256.png │ │ │ ├── img │ │ │ │ └── apple-touch-icon.png │ │ │ ├── robots.txt │ │ │ ├── .well-known │ │ │ │ ├── apple-app-site-association │ │ │ │ └── assetlinks.json │ │ │ ├── _headers │ │ │ └── manifest.json │ │ └── snort │ │ │ ├── favicon.png │ │ │ ├── nostrich_256.png │ │ │ ├── nostrich_512.png │ │ │ ├── nostrich_orig.jpeg │ │ │ ├── img │ │ │ └── apple-touch-icon.png │ │ │ ├── robots.txt │ │ │ ├── .well-known │ │ │ ├── apple-app-site-association │ │ │ └── assetlinks.json │ │ │ ├── _headers │ │ │ └── manifest.json │ ├── babel.config.json │ ├── README.md │ ├── bun-env.d.ts │ ├── .gitignore │ ├── tsconfig.json │ └── CLAUDE.md ├── system-wasm │ ├── .gitignore │ ├── typedoc.json │ ├── pkg │ │ ├── system_wasm_bg.wasm │ │ ├── README.md │ │ └── package.json │ ├── README.md │ ├── package.json │ ├── system-query.iml │ └── Cargo.toml ├── worker-relay │ ├── src │ │ ├── index.ts │ │ ├── sqlite │ │ │ └── fixers.ts │ │ ├── custom.d.ts │ │ ├── debug.ts │ │ └── queue.ts │ ├── typedoc.json │ ├── tsconfig.json │ ├── package.json │ └── example │ │ └── basic.ts ├── bot │ ├── typedoc.json │ ├── tsconfig.json │ ├── package.json │ ├── example │ │ └── simple.ts │ └── README.md ├── shared │ ├── typedoc.json │ ├── src │ │ ├── custom.d.ts │ │ ├── const.ts │ │ ├── cache-store.ts │ │ ├── work-queue.ts │ │ ├── external-store.ts │ │ └── index.ts │ ├── tsconfig.json │ └── package.json ├── system-svelte │ ├── src │ │ ├── index.ts │ │ └── request-builder.ts │ ├── typedoc.json │ ├── README.md │ ├── tsconfig.json │ └── package.json ├── system │ ├── .npmignore │ ├── typedoc.json │ ├── src │ │ ├── nips.ts │ │ ├── sync │ │ │ └── index.ts │ │ ├── encryption │ │ │ └── index.ts │ │ ├── filter-cache-layer.ts │ │ ├── request-trim.ts │ │ ├── pow-worker.ts │ │ ├── cache-relay.ts │ │ ├── outbox │ │ │ └── index.ts │ │ ├── impl │ │ │ ├── nip25.ts │ │ │ ├── nip18.ts │ │ │ └── nip44.ts │ │ ├── connection-stats.ts │ │ ├── request-matcher.ts │ │ ├── cache │ │ │ ├── user-relays.ts │ │ │ ├── user-follows-lists.ts │ │ │ └── user-metadata.ts │ │ ├── profile-cache.ts │ │ └── query-optimizer │ │ │ └── request-splitter.ts │ ├── tests │ │ ├── setupTests.ts │ │ ├── negentropy.test.ts │ │ ├── node.ts │ │ ├── request-matcher.test.ts │ │ └── request-builder.test.ts │ ├── tsconfig.json │ └── examples │ │ └── simple.ts └── system-react │ ├── typedoc.json │ ├── src │ ├── context.tsx │ ├── useSystemState.tsx │ ├── index.ts │ ├── useEventFeed.ts │ └── useUserProfile.ts │ ├── tsconfig.json │ └── package.json ├── .dockerignore ├── src-tauri ├── build.rs ├── icons │ ├── 128x128.png │ └── 128x128@2x.png ├── .gitignore ├── gen │ └── schemas │ │ └── capabilities.json ├── capabilities │ └── migrated.json ├── src │ └── main.rs └── Cargo.toml ├── .vscode ├── extensions.json └── settings.json ├── .gitignore ├── Dockerfile.prebuilt ├── functions └── tsconfig.json ├── crowdin.yml ├── zapstore.yaml ├── nap.yaml ├── maintainers.yaml ├── Dockerfile ├── .github ├── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md └── workflows │ └── nsite.yml ├── docker └── nginx.conf ├── LICENSE └── package.json /packages/wallet/README.md: -------------------------------------------------------------------------------- 1 | # wallet 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/node_modules 2 | **/.idea 3 | **/target -------------------------------------------------------------------------------- /packages/app/bunfig.toml: -------------------------------------------------------------------------------- 1 | [serve.static] 2 | env = "BUN_PUBLIC_*" -------------------------------------------------------------------------------- /packages/system-wasm/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | target/ 3 | *.txt -------------------------------------------------------------------------------- /packages/worker-relay/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./interface"; 2 | -------------------------------------------------------------------------------- /src-tauri/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | tauri_build::build() 3 | } 4 | -------------------------------------------------------------------------------- /packages/bot/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/shared/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/system-svelte/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./request-builder"; 2 | -------------------------------------------------------------------------------- /packages/system/.npmignore: -------------------------------------------------------------------------------- 1 | tests/ 2 | src/ 3 | *.tgz 4 | worker.ts 5 | yarn* -------------------------------------------------------------------------------- /packages/system/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/wallet/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/wallet/src/custom.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /packages/system-react/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/system-svelte/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/worker-relay/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["src/index.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/system-wasm/typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "entryPoints": ["pkg/system_wasm.d.ts"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/app/config/README.md: -------------------------------------------------------------------------------- 1 | Choose config with NODE_CONFIG_ENV: `NODE_CONFIG_ENV=iris bun start` 2 | -------------------------------------------------------------------------------- /packages/system-svelte/README.md: -------------------------------------------------------------------------------- 1 | ## @snort/system-svelte 2 | 3 | Svelte hooks for @snort/system 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/src-tauri/icons/128x128.png -------------------------------------------------------------------------------- /packages/app/src/External/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./NostrBand"; 2 | export * from "./NostrServices"; 3 | -------------------------------------------------------------------------------- /packages/system/src/nips.ts: -------------------------------------------------------------------------------- 1 | export enum Nips { 2 | Search = 50, 3 | GetMatchingEventIds = 114, 4 | } 5 | -------------------------------------------------------------------------------- /src-tauri/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | -------------------------------------------------------------------------------- /src-tauri/icons/128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/src-tauri/icons/128x128@2x.png -------------------------------------------------------------------------------- /packages/app/public/iris/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/favicon.png -------------------------------------------------------------------------------- /packages/app/public/iris/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /packages/app/public/nostr/nostr.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/nostr/nostr.jpg -------------------------------------------------------------------------------- /packages/app/public/nostr/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/nostr/favicon.png -------------------------------------------------------------------------------- /packages/app/public/phoenix/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/phoenix/favicon.png -------------------------------------------------------------------------------- /packages/app/public/snort/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/snort/favicon.png -------------------------------------------------------------------------------- /packages/app/src/assets/img/cashu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/img/cashu.png -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "arcanis.vscode-zipfs", 4 | "biomejs.biome" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /packages/app/public/iris/img/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/icon128.png -------------------------------------------------------------------------------- /packages/app/public/phoenix/logo_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/phoenix/logo_256.png -------------------------------------------------------------------------------- /packages/app/src/assets/img/lnd-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/img/lnd-logo.png -------------------------------------------------------------------------------- /packages/app/src/assets/img/nostrich.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/img/nostrich.webp -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .idea 3 | .pnp.* 4 | dist/ 5 | *.tgz 6 | *.log 7 | .DS_Store 8 | .pnp* 9 | docs/ 10 | .wrangler/ -------------------------------------------------------------------------------- /packages/app/public/snort/nostrich_256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/snort/nostrich_256.png -------------------------------------------------------------------------------- /packages/app/public/snort/nostrich_512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/snort/nostrich_512.png -------------------------------------------------------------------------------- /packages/app/public/snort/nostrich_orig.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/snort/nostrich_orig.jpeg -------------------------------------------------------------------------------- /packages/system-wasm/pkg/system_wasm_bg.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/system-wasm/pkg/system_wasm_bg.wasm -------------------------------------------------------------------------------- /packages/app/public/iris/img/irisconnects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/irisconnects.png -------------------------------------------------------------------------------- /packages/app/public/iris/img/maskable_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/maskable_icon.png -------------------------------------------------------------------------------- /packages/app/public/iris/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/app/public/iris/img/maskable_icon_x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/maskable_icon_x192.png -------------------------------------------------------------------------------- /packages/app/public/nostr/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/nostr/img/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/app/public/snort/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/snort/img/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/app/src/setupTests.ts: -------------------------------------------------------------------------------- 1 | import { TextDecoder, TextEncoder } from "util"; 2 | 3 | Object.assign(global, { TextDecoder, TextEncoder }); 4 | -------------------------------------------------------------------------------- /packages/app/public/phoenix/img/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/phoenix/img/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/app/src/Pages/ZapPool/ZapPool.css: -------------------------------------------------------------------------------- 1 | .zap-pool input[type="range"] { 2 | width: 200px; 3 | } 4 | 5 | .zap-pool h4 { 6 | margin: 0; 7 | } 8 | -------------------------------------------------------------------------------- /packages/app/public/iris/img/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/android-chrome-192x192.png -------------------------------------------------------------------------------- /packages/app/public/iris/img/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/public/iris/img/android-chrome-512x512.png -------------------------------------------------------------------------------- /packages/app/src/Components/ZapModal/ZapType.tsx: -------------------------------------------------------------------------------- 1 | export enum ZapType { 2 | PublicZap = 1, 3 | AnonZap = 2, 4 | PrivateZap = 3, 5 | NonZap = 4, 6 | } 7 | -------------------------------------------------------------------------------- /packages/worker-relay/src/sqlite/fixers.ts: -------------------------------------------------------------------------------- 1 | import type { SqliteRelay } from "./sqlite-relay"; 2 | 3 | export async function runFixers(relay: SqliteRelay) {} 4 | -------------------------------------------------------------------------------- /packages/app/public/snort/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | Sitemap: https://api.snort.social/api/v1/sitemap/index.xml -------------------------------------------------------------------------------- /packages/app/src/Pages/settings/handle/index.tsx: -------------------------------------------------------------------------------- 1 | export { default as ListHandles } from "./ListHandles"; 2 | export { default as ManageHandleIndex } from "./Manage"; 3 | -------------------------------------------------------------------------------- /Dockerfile.prebuilt: -------------------------------------------------------------------------------- 1 | FROM nginxinc/nginx-unprivileged:mainline-alpine 2 | COPY packages/app/build /usr/share/nginx/html 3 | COPY docker/nginx.conf /etc/nginx/conf.d/default.conf -------------------------------------------------------------------------------- /packages/app/public/phoenix/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | Sitemap: https://api.snort.social/api/v1/sitemap/index.xml -------------------------------------------------------------------------------- /packages/system/src/sync/index.ts: -------------------------------------------------------------------------------- 1 | export * from "./safe-sync"; 2 | export * from "./range-sync"; 3 | export * from "./json-in-event-sync"; 4 | export * from "./diff-sync"; 5 | -------------------------------------------------------------------------------- /packages/app/src/Components/Event/Note/types.tsx: -------------------------------------------------------------------------------- 1 | export interface NoteTranslation { 2 | text: string; 3 | fromLanguage: string; 4 | confidence: number; 5 | skipped?: boolean; 6 | } 7 | -------------------------------------------------------------------------------- /src-tauri/gen/schemas/capabilities.json: -------------------------------------------------------------------------------- 1 | {"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["core:default"]}} -------------------------------------------------------------------------------- /functions/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "lib": ["esnext"], 6 | "types": ["@cloudflare/workers-types"] 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2 -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa0ZL7W0Q5n-wU.woff2 -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1pL7W0Q5n-wU.woff2 -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa25L7W0Q5n-wU.woff2 -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2JL7W0Q5n-wU.woff2 -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2ZL7W0Q5n-wU.woff2 -------------------------------------------------------------------------------- /packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v0l/snort/HEAD/packages/app/src/assets/fonts/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa2pL7W0Q5n-wU.woff2 -------------------------------------------------------------------------------- /packages/system-wasm/README.md: -------------------------------------------------------------------------------- 1 | # system-wasm 2 | 3 | ## Building 4 | 5 | ### Ubuntu/Debian 6 | 7 | ```bash 8 | sudo apt install clang 9 | cargo install wasm-pack 10 | bun run build 11 | ``` 12 | -------------------------------------------------------------------------------- /crowdin.yml: -------------------------------------------------------------------------------- 1 | project_id: 568149 2 | preserve_hierarchy: true 3 | files: 4 | - source: packages/app/src/translations/en.json 5 | translation: packages/app/src/translations/%locale_with_underscore%.json 6 | -------------------------------------------------------------------------------- /packages/system-wasm/pkg/README.md: -------------------------------------------------------------------------------- 1 | # system-wasm 2 | 3 | ## Building 4 | 5 | ### Ubuntu/Debian 6 | 7 | ```bash 8 | sudo apt install clang 9 | cargo install wasm-pack 10 | bun run build 11 | ``` 12 | -------------------------------------------------------------------------------- /packages/system-react/src/context.tsx: -------------------------------------------------------------------------------- 1 | import { createContext } from "react"; 2 | import type { SystemInterface } from "@snort/system"; 3 | 4 | export const SnortContext = createContext(undefined!); 5 | -------------------------------------------------------------------------------- /packages/worker-relay/src/custom.d.ts: -------------------------------------------------------------------------------- 1 | declare module "*.wasm" { 2 | const value: string; 3 | export default value; 4 | } 5 | declare module "*.wasm?url" { 6 | const value: string; 7 | export default value; 8 | } 9 | -------------------------------------------------------------------------------- /packages/app/src/Pages/Root/ConversationsTab.tsx: -------------------------------------------------------------------------------- 1 | import TimelineFollows from "@/Components/Feed/TimelineFollows"; 2 | 3 | export const ConversationsTab = () => { 4 | return ; 5 | }; 6 | -------------------------------------------------------------------------------- /zapstore.yaml: -------------------------------------------------------------------------------- 1 | snort: 2 | android: 3 | repository: https://github.com/v0l/snort 4 | name: Snort 5 | artifacts: 6 | - snort-arm64-v8a-v%v.apk 7 | - snort-armeabi-v7a-v%v.apk 8 | - snort-x86_64-v%v.apk 9 | -------------------------------------------------------------------------------- /packages/app/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | [ 4 | "formatjs", 5 | { 6 | "idInterpolationPattern": "[sha512:contenthash:base64:6]", 7 | "ast": true 8 | } 9 | ] 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /packages/app/src/Components/Event/Note/NoteFooter/ZapperQueue.tsx: -------------------------------------------------------------------------------- 1 | import { processWorkQueue, type WorkQueueItem } from "@snort/shared"; 2 | 3 | export const ZapperQueue: Array = []; 4 | 5 | processWorkQueue(ZapperQueue); 6 | -------------------------------------------------------------------------------- /packages/app/src/bench.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Snort Benchmarks 6 | 7 | 8 | Check console 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/app/src/Components/RightWidgets/index.tsx: -------------------------------------------------------------------------------- 1 | export enum RightColumnWidget { 2 | TaskList, 3 | TrendingNotes, 4 | TrendingPeople, 5 | TrendingHashtags, 6 | LatestArticls, 7 | LiveStreams, 8 | InviteFriends, 9 | } 10 | -------------------------------------------------------------------------------- /packages/app/src/Pages/Profile/ProfileTabType.tsx: -------------------------------------------------------------------------------- 1 | export enum ProfileTabType { 2 | NOTES = 0, 3 | REACTIONS = 1, 4 | FOLLOWERS = 2, 5 | FOLLOWS = 3, 6 | ZAPS = 4, 7 | MUTED = 5, 8 | RELAYS = 7, 9 | BOOKMARKS = 8, 10 | } 11 | -------------------------------------------------------------------------------- /packages/system/tests/setupTests.ts: -------------------------------------------------------------------------------- 1 | import { TextEncoder, TextDecoder } from "util"; 2 | import { Crypto } from "@peculiar/webcrypto"; 3 | 4 | Object.assign(global, { TextDecoder, TextEncoder }); 5 | Object.assign(globalThis.window.crypto, new Crypto()); 6 | -------------------------------------------------------------------------------- /src-tauri/capabilities/migrated.json: -------------------------------------------------------------------------------- 1 | { 2 | "identifier": "migrated", 3 | "description": "permissions that were migrated from v1", 4 | "local": true, 5 | "windows": [ 6 | "main" 7 | ], 8 | "permissions": [ 9 | "core:default" 10 | ] 11 | } -------------------------------------------------------------------------------- /packages/app/src/Components/Embed/NostrNestsEmbed.tsx: -------------------------------------------------------------------------------- 1 | const NostrNestsEmbed = ({ link }: { link: string }) => ( 2 | 3 | ); 4 | 5 | export default NostrNestsEmbed; 6 | -------------------------------------------------------------------------------- /packages/system/tests/negentropy.test.ts: -------------------------------------------------------------------------------- 1 | import { NegentropyStorageVector, VectorStorageItem } from "../src/negentropy/vector-storage"; 2 | import { describe, test } from "bun:test"; 3 | 4 | describe("negentropy", () => { 5 | test("should decodeBound", () => {}); 6 | }); 7 | -------------------------------------------------------------------------------- /packages/app/src/Components/json.tsx: -------------------------------------------------------------------------------- 1 | export default function JsonBlock({ obj }: { obj: object }) { 2 | return ( 3 |
4 | {JSON.stringify(obj, undefined, 2)} 5 |
6 | ); 7 | } 8 | -------------------------------------------------------------------------------- /packages/app/src/Hooks/useRelays.tsx: -------------------------------------------------------------------------------- 1 | import useLogin from "./useLogin"; 2 | 3 | export default function useRelays() { 4 | const relays = useLogin(s => s.state.relays); 5 | return relays ? Object.fromEntries(relays.map(a => [a.url, a.settings])) : CONFIG.defaultRelays; 6 | } 7 | -------------------------------------------------------------------------------- /packages/app/src/Pages/settings/wallet/index.tsx: -------------------------------------------------------------------------------- 1 | export { default as WalletSettings } from "../WalletSettings"; 2 | export { default as AlbyOAuth } from "./Alby"; 3 | export { default as ConnectLNDHub } from "./LNDHub"; 4 | export { default as ConnectNostrWallet } from "./NWC"; 5 | -------------------------------------------------------------------------------- /packages/worker-relay/src/debug.ts: -------------------------------------------------------------------------------- 1 | let debug = false; 2 | export function debugLog(scope: string, msg: string, ...args: Array) { 3 | if (!debug) return; 4 | console.log(scope, msg, ...args); 5 | } 6 | 7 | export function setLogging(v: boolean) { 8 | debug = v; 9 | } 10 | -------------------------------------------------------------------------------- /packages/app/src/Feed/RelayState.ts: -------------------------------------------------------------------------------- 1 | import { SnortContext } from "@snort/system-react"; 2 | import { use } from "react"; 3 | 4 | export default function useRelayState(addr: string) { 5 | const system = use(SnortContext); 6 | const c = system.pool.getConnection(addr); 7 | return c; 8 | } 9 | -------------------------------------------------------------------------------- /nap.yaml: -------------------------------------------------------------------------------- 1 | id: "social.snort.app" 2 | name: "Snort" 3 | description: "" 4 | icon: "https://snort.social/nostrich_256.png" 5 | images: 6 | - "https://snort.social/nostrich_512.png" 7 | repository: "https://github.com/v0l/snort" 8 | license: "MIT" 9 | tags: 10 | - "social" 11 | - "twitter" 12 | -------------------------------------------------------------------------------- /packages/app/src/Components/PageSpinner.tsx: -------------------------------------------------------------------------------- 1 | import Spinner from "@/Components/Icons/Spinner"; 2 | 3 | export default function PageSpinner() { 4 | return ( 5 |
6 | 7 |
8 | ); 9 | } 10 | -------------------------------------------------------------------------------- /packages/system/src/encryption/index.ts: -------------------------------------------------------------------------------- 1 | export enum MessageEncryptorVersion { 2 | Nip4 = 0, 3 | Nip44 = 1, 4 | } 5 | 6 | export interface MessageEncryptor { 7 | encryptData(plaintext: string): Promise | string; 8 | decryptData(ciphertext: string): Promise | string; 9 | } 10 | -------------------------------------------------------------------------------- /packages/app/public/phoenix/.well-known/apple-app-site-association: -------------------------------------------------------------------------------- 1 | { 2 | "applinks": { 3 | "details": [ 4 | { 5 | "appIDs": [ 6 | "snort.social.app" 7 | ] 8 | } 9 | ] 10 | }, 11 | "webcredentials": { 12 | "apps": [ 13 | "snort.social.app" 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/app/public/snort/.well-known/apple-app-site-association: -------------------------------------------------------------------------------- 1 | { 2 | "applinks": { 3 | "details": [ 4 | { 5 | "appIDs": [ 6 | "snort.social.app" 7 | ] 8 | } 9 | ] 10 | }, 11 | "webcredentials": { 12 | "apps": [ 13 | "snort.social.app" 14 | ] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /maintainers.yaml: -------------------------------------------------------------------------------- 1 | maintainers: 2 | - npub1g53mukxnjkcmr94fhryzkqutdz2ukq4ks0gvy5af25rgmwsl4ngq43drvk 3 | - npub1v0lxxxxutpvrelsksy8cdhgfux9l6a42hsj2qzquu2zk7vc9qnkszrqj49 4 | relays: 5 | - wss://relay.snort.social/ 6 | - wss://pyramid.fiatjaf.com/ 7 | - wss://nos.lol/ 8 | - ws://skzzn6cimfdv5e2phjc4yr5v7ikbxtn5f7dkwn5c7v47tduzlbosqmqd.onion/ 9 | -------------------------------------------------------------------------------- /packages/app/src/Components/Embed/ZapstrEmbed.css: -------------------------------------------------------------------------------- 1 | .zapstr { 2 | } 3 | 4 | .zapstr > img { 5 | margin: 0 10px 0 0; 6 | } 7 | 8 | .zapstr audio { 9 | margin: 0; 10 | height: 2em; 11 | } 12 | 13 | .zapstr .pfp .avatar { 14 | width: 35px; 15 | height: 35px; 16 | } 17 | 18 | .zapstr .pfp .subheader { 19 | text-transform: capitalize; 20 | } 21 | -------------------------------------------------------------------------------- /packages/app/src/Pages/settings/tools/index.tsx: -------------------------------------------------------------------------------- 1 | import { Outlet } from "react-router-dom"; 2 | 3 | export { FollowsRelayHealth } from "./follows-relay-health"; 4 | export { PruneFollowList } from "./prune-follows"; 5 | export { default as SyncAccountTool } from "./sync-account"; 6 | 7 | export function ToolsPage() { 8 | return ; 9 | } 10 | -------------------------------------------------------------------------------- /packages/app/src/Pages/ZapPool/ZapPool.tsx: -------------------------------------------------------------------------------- 1 | import "./ZapPool.css"; 2 | 3 | import { ZapPoolPageInner } from "@/Pages/ZapPool/ZapPoolPageInner"; 4 | import { ZapPoolController } from "@/Utils/ZapPoolController"; 5 | 6 | export default function ZapPoolPage() { 7 | if (!ZapPoolController) { 8 | return null; 9 | } 10 | return ; 11 | } 12 | -------------------------------------------------------------------------------- /packages/system-wasm/pkg/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@snort/system-wasm", 3 | "type": "module", 4 | "version": "0.1.0", 5 | "files": [ 6 | "system_wasm_bg.wasm", 7 | "system_wasm.js", 8 | "system_wasm.d.ts" 9 | ], 10 | "main": "system_wasm.js", 11 | "types": "system_wasm.d.ts", 12 | "sideEffects": [ 13 | "./snippets/*" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /packages/app/src/Components/Embed/SoundCloudEmded.tsx: -------------------------------------------------------------------------------- 1 | const SoundCloudEmbed = ({ link }: { link: string }) => { 2 | return ( 3 |