mirror of
https://github.com/aljazceru/awesome-nostr.git
synced 2025-12-08 14:38:49 +00:00
Compare commits
69 Commits
new-look
...
53c11c2a67
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
53c11c2a67 | ||
|
|
24f98d7cf8 | ||
|
|
f5a4e659c1 | ||
|
|
615cc9c2d1 | ||
|
|
948896f673 | ||
|
|
318ecd44ac | ||
|
|
c89e9d9b99 | ||
|
|
ea4ebdec6c | ||
|
|
8b1a21d73a | ||
|
|
809a30158c | ||
|
|
958d9b348f | ||
|
|
ba392ca26e | ||
|
|
a3b8ccd831 | ||
|
|
a30d679cfd | ||
|
|
7a1024e19c | ||
|
|
72feb14ee3 | ||
|
|
8766cc5bdc | ||
|
|
a8035bb0a7 | ||
|
|
f91740dfdb | ||
|
|
796892b521 | ||
|
|
dd36a4dda5 | ||
|
|
c642613772 | ||
|
|
15d9e53d8e | ||
|
|
1719589464 | ||
|
|
1d2fe4b19e | ||
|
|
392932ccb5 | ||
|
|
3950a187e3 | ||
|
|
2f0d2ef1a3 | ||
|
|
e168a80818 | ||
|
|
e59834a182 | ||
|
|
dca6b7becf | ||
|
|
5c1733ba70 | ||
|
|
fb6e03613c | ||
|
|
253e1a4320 | ||
|
|
8776f5a7bd | ||
|
|
b45222bc42 | ||
|
|
d8d0a79c5a | ||
|
|
7e04d2d2f5 | ||
|
|
e1b6a435a8 | ||
|
|
ab1bff329f | ||
|
|
1a297600f1 | ||
|
|
ed60e19053 | ||
|
|
c8e415d784 | ||
|
|
25158a9a02 | ||
|
|
bd310d6d5f | ||
|
|
51843a6680 | ||
|
|
52f05c0a40 | ||
|
|
fe7a947143 | ||
|
|
a167f6fdbf | ||
|
|
65f6351fc5 | ||
|
|
7043931190 | ||
|
|
5472370104 | ||
|
|
b182781723 | ||
|
|
7767c24396 | ||
|
|
d3e71fccb2 | ||
|
|
a113e4481e | ||
|
|
65461d3e84 | ||
|
|
f3ba2e61bf | ||
|
|
b95bebce95 | ||
|
|
2cbca8e257 | ||
|
|
25f2b2bbe2 | ||
|
|
ed384ec291 | ||
|
|
99c701e7a1 | ||
|
|
2785d9d6b6 | ||
|
|
59d51eb6c7 | ||
|
|
287a3d025a | ||
|
|
aeb9daad9b | ||
|
|
a6c693c51e | ||
|
|
1eee7c1f31 |
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
node_modules/
|
||||
.env
|
||||
82
README.md
82
README.md
@@ -9,18 +9,16 @@ nostr.net services [start.nostr.net](https://start.nostr.net) || [relay.nostr.ne
|
||||
- [Amethyst](https://www.amethyst.social/) - Android-only app
|
||||
- [Primal](https://primal.net/downloads) - iOS and Android apps
|
||||
- [YakiHonne](https://yakihonne.com/yakihonne-mobile-app) - iOS and Android app
|
||||
- [Nos](https://nos.social) - iOS-only app
|
||||
|
||||
### Web clients
|
||||
- [snort.social](https://snort.social/)
|
||||
- [iris.to](https://iris.to/)
|
||||
- [primal.net](https://primal.net/)
|
||||
- [coracle.social](https://coracle.social/)
|
||||
- [YakiHonne](https://yakihonne.com)
|
||||
|
||||
### App store
|
||||
- [Zapstore](https://zapstore.dev/)
|
||||
|
||||
### Other
|
||||
- [Zapstore](https://zapstore.dev/) - Web of trust based app store
|
||||
- [Hivetalk](https://honey.hivetalk.org/) - Nostr + Lightning Video Conferencing
|
||||
|
||||
## Protocol
|
||||
|
||||
@@ -29,11 +27,13 @@ nostr.net services [start.nostr.net](https://start.nostr.net) || [relay.nostr.ne
|
||||
- [nostr, a basic tour](https://github.com/rajarshimaitra/rust-nostr/blob/main/VISION.md) - an intro to nostr
|
||||
- [Nostr: Solucionando la censura de una vez por todas](https://estudiobitcoin.com/nostr-solucionando-la-censura-de-una-vez-por-todas/)
|
||||
- [nostr.how](https://nostr.how) - A comprehensive non-technical beginners guide to Nostr. Available in several languages.
|
||||
- [NostrHub](https://nostrhub.io) - Your HUB for all things Nostr. Discover NIPs and publish your own Custom NIPs, Community forum, Nostr app directory, Nostr app GitHub repositories, DVMs, and more.
|
||||
- [nostr](https://github.com/nostr-protocol/nostr) - Overview and FAQ
|
||||
- [tinkering with nostr without any client](https://medium.com/@p2w34/tinkering-with-the-nostr-protocol-will-it-take-twitter-over-74c4bf0fea66)
|
||||
- [UseNostr](https://usenostr.org) - A small guide for anyone who wants to learn more about how nostr works and what it can do.
|
||||
- [persian nostr book](https://github.com/kehiy/persian-nostr-book) - a book written in the Persian language about nostr, containing nips translation.
|
||||
- [NosTracker](https://marcodpt.github.io/nostracker/) [](https://github.com/marcodpt/nostracker) - Information about NIP support for clients, relays, tools and libraries. Like a caniuse but for NIPs.
|
||||
- [Grow Nostr Initiative](https://grownostr.org) - Empowering the future of decentralized social communication through community initiatives, education, and outreach.
|
||||
|
||||
## Relays
|
||||
|
||||
@@ -64,6 +64,7 @@ of the public instances.
|
||||
- [grain](https://github.com/0ceanslim/grain) - A highly configurable, multipurpose relay written in Go, Storing Events in a MongoDB.
|
||||
- [HAVEN](https://github.com/bitvora/haven) - Four relays in one + Blossom Media Server for a modern, sovereign and personal Nostr experience.
|
||||
- [Immortal](https://github.com/dezh-tech/immortal) - A relay designed for scale and high-load.
|
||||
- [khatru](https://github.com/fiatjaf/khatru) . a framework for making custom Nostr relays
|
||||
- [knostr](https://github.com/lpicanco/knostr) - a nostr relay implemented in Kotlin with support for Postgres and metrics(micrometer).
|
||||
- [me.untethr.nostr-relay](https://github.com/atdixon/me.untethr.nostr-relay) - a relay written in Clojure.
|
||||
- [Minds Nostr Relay](https://gitlab.com/minds/infrastructure/nostr-relay) - a relay for [Minds](https://www.minds.com), an open-source social network
|
||||
@@ -92,12 +93,16 @@ of the public instances.
|
||||
- [PyRelay](https://github.com/johnny423/pyrelay) - a python implementation of a Nostr relay, using asyncio.
|
||||
- [QNostr](https://github.com/Aseman-Land/QNostr) - A Nostr protocol implementation for clients as a Qt Module in C++
|
||||
- [Relayer Basic](https://github.com/fiatjaf/relayer/tree/master/examples/basic) - a simple relay based on _relayer_ backed by Postgres
|
||||
- [rely](https://github.com/pippellia-btc/rely) ![stars] - A golang framework for building super custom nostr relays you can rely on.
|
||||
- [rnostr](https://github.com/rnostr/rnostr) - A high-performance and scalable nostr relay written in Rust.
|
||||
- [Servus](https://github.com/ibz/servus) - A self-contained, single executable, CMS/blogging engine reminiscent of Jekyll which also acts as a personal Nostr relay for your blog posts. Written in Rust.
|
||||
- [Shugur](https://github.com/Shugur-Network/relay) - High performance relay written in Go, uses CockroachDB.
|
||||
- [søstr](https://github.com/metasikander/s0str) - a private Nostr relay written in rust, saves all notes from one pubkey and publish them to anyone that requests them
|
||||
- [sovereign-stack](https://www.sovereign-stack.org) - a tool that helps you deploy nostr relays and create self-hosted (bitcoin-only) Value4Value websites.
|
||||
- [strfry](https://github.com/hoytech/strfry) - C++ implementation backed by LMDB with efficient syncing of events using Merkle trees
|
||||
- [SuperConductor](https://github.com/avlo/superconductor) - Java Nostr-Relay Framework & Web Application. Java 20, Spring WebSocketSession 3.2.2, Spring Boot 3.2.4, atop [nostr-java library](https://github.com/tcheeric/nostr-java). Simple. Clean. OO.
|
||||
- [swarm](https://github.com/HiveTalk/swarm) - Nostr Team Relay with additional controls for kinds, blossom media mirroring
|
||||
- [SW2](https://github.com/bitvora/sw2) - A relay with read and write whitelisting for private uses, small communities, knowledge bases, or dropboxes.
|
||||
- [tandem](https://github.com/TheRebelOfBabylon/tandem) - WIP: community focused relay written in Go
|
||||
- [Transpher](https://github.com/nostriphant/transpher) - experimental PHP implementation with file or sqlite storage, configurable limits
|
||||
- [WoT relay](https://github.com/bitvora/wot-relay.git) - relay for every note in your web of trust
|
||||
@@ -114,13 +119,17 @@ Websites with lists of relays and their performance/health:
|
||||
### Long form clients
|
||||
- [untype.app](https://untype.app)
|
||||
- [Habla.news](https://github.com/verbiricha/habla.news) - Habla allows you to read, write, curate and monetize long-form content over Nostr, a censorship-resistant protocol for social media that uses long-form Nostr content.
|
||||
- [Highlighter](https://highlighter.com) - Discover and share curated insights by people you trust. Highlight Books, articles, tweets, anything!
|
||||
- [Highlighter](https://highlighter.com) - Discover and share curated insights by people you trust.
|
||||
- [Breefly](https://breefly.social) - A low-stimulus environment where you can read articles published on nostr.
|
||||
|
||||
### Video/Audio
|
||||
- [Nostr Nests](https://github.com/nostrnests/nests/) - Nostr Nests is an audio space for chatting, brainstorming, debating, jamming, micro-conferences and more. [NostrNests.com](https://nostrnests.com/)
|
||||
- [HiveTalk](https://github.com/hivetalk/hivetalksfu) - Hivetalk is an open source real-time Video and screensharing platform built on mirotalk that integrates Nostr and Lightning.
|
||||
- [hivetalk.org](https://HiveTalk.org/) - live instance
|
||||
- [Corny Chat](https://github.com/vicariousdrama/cornychat) - Corny Chat is an open source audio space built on Jam that integrates Nostr and Lightning.
|
||||
- [cornychat.com](https://cornychat.com/)
|
||||
- [Shosho](https://github.com/r0d8lsh0p/shosho-releases) - Shosho app lets users stream their phone camera and chat with friends and followers on Nostr livestreams. Streams can be viewed on [Shosho.live](https://shosho.live)
|
||||
- [YakBak](https://github.com/fiatjaf/yakbak2/) - YakBak is a modern social platform built on the Nostr protocol that allows users to share and interact with voice messages. [YakBak.app](https://yakbak.app/)
|
||||
|
||||
### Mobile
|
||||
- [0xchat](https://github.com/0xchat-app) - a telegram/wechat-like nostr client for iOS and Android
|
||||
@@ -144,9 +153,12 @@ Websites with lists of relays and their performance/health:
|
||||
- [badger](https://github.com/0ceanslim/badger) - A NIP58 nostr badge client. Create Badges view Profile Badges and more.
|
||||
- [Beagle](https://0xli.github.io/beagle.chat/) - Decentralized real-time Text/Audio/Video chat client for iOS, using nostr relays for users to share information and moments by posts of text, image and video.
|
||||
- [BlazeJump](https://github.com/objectwizard/BlazeJump) - A fast web client boilerplate written in C# / Blazor, that uses an in-browser SQLite database.
|
||||
- [Bookstr](https://bookstr.xyz/)- Discover, track, and share your reading journey on the decentralized Nostr network. No corporations. No ads. No data tracking. Just books.
|
||||
- [Blobbi](https://blobbi.pet/) - Your Virtual Pet on the Nostr Network. Adopt and care for your own unique digital companion that lives forever on the decentralized web.
|
||||
- [Blockcore Notes](https://github.com/block-core/blockcore-notes)  - Progressive Web App that can be installed on mobile and desktop, organize following in circles and have both public and private following lists. Dynamic interface for different uses, such as optimized for photograph viewing
|
||||
- [notes.blockcore.net](https://notes.blockcore.net/)
|
||||
- [Blowater](https://blowater.deno.dev) - A desktop Web client focusing on chat with delightful UX
|
||||
- [+Chorus](https://github.com/andotherstuff/chorus/)![stars] - +chorus is a simple space for communities to gather, share, and support each other.
|
||||
- [connect4](https://github.com/stutxo/connect4xyz) - connect 4 over nostr
|
||||
- [connect4.xyz](https://connect4.xyz/)
|
||||
- [Coracle Chat](https://github.com/coracle-social/legacy-chat) - A standalone port of Coracle's old chat functionality
|
||||
@@ -167,12 +179,13 @@ Websites with lists of relays and their performance/health:
|
||||
- [formstr.app](https://formstr.app/) - live instance
|
||||
- [futr](https://github.com/prolic/futr) - nostr client desktop app written in Haskell
|
||||
- [getwired.app](https://github.com/smolgrrr/Wired) Anonymous-first client with PoW notes
|
||||
- [gitplaza](https://codeberg.org/dluvian/gitplaza) - git stuff client for Desktop
|
||||
- [gitstr](https://github.com/fiatjaf/gitstr) - Send and receive git patches over Nostr, using [NIP-34](https://github.com/nostr-protocol/nips/blob/master/34.md).
|
||||
- [gnost-deflate-client](https://github.com/barkyq/gnost-deflate-client) - CLI nostr client written in go implementing permessage-deflate websocket compression.
|
||||
- [gossip](https://github.com/mikedilger/gossip) - A desktop client in rust presented with egui
|
||||
- [Groups](https://github.com/max21dev/groups) - NIP-29 Group Chat Web Client.
|
||||
- Live Instance: [groups.nip29.com](https://groups.nip29.com)
|
||||
- [Hook Cafe](https://github.com/kuba-04/hook.cafe) - A social app helping people to meet in real life
|
||||
- [Hook Cafe](https://github.com/kuba-04/hook.cafe) - A social app helping people to meet in real life
|
||||
- [hook.cafe](https://hook.cafe) - live instance
|
||||
- [iris](https://github.com/irislib/iris-messenger) - A nostr web client
|
||||
- [iris.to](https://iris.to) - live instance
|
||||
@@ -197,11 +210,14 @@ Websites with lists of relays and their performance/health:
|
||||
- [Memestr](https://memestr.app/) - nostr hub for memes.
|
||||
- [MeShell](https://github.com/BEEBSDONE/MeShell_Nodejs) - Web, iOS, and Android blog type client destined to publish articles and researches for independent journalists.
|
||||
- [MeShell.io](https://meshell.io) - Landing page for more information
|
||||
- [Meetstr](https://github.com/gillohner/meetstr) - Meetstr is a nostr client for discovering, viewing, and managing NIP-52 based calendars for Meetups and community events.
|
||||
- [meetstr.com](https://meetstr.com/) - live instance
|
||||
- [Minds](https://www.minds.com/) - open source social network. Supports reading and creating posts using the nostr protocol
|
||||
- [more-speech](https://github.com/unclebob/more-speech) - desktop client for nostr written in Clojure
|
||||
- [moStard](https://mostard.org) - Nostr web client with Monero tips.
|
||||
- [narr](https://github.com/fiatjaf/narr) - self-hosted Nostr and RSS reader
|
||||
- [nblog](https://github.com/jacany/nblog) - a self-host nostr ghost blog
|
||||
- [ngit-cli](https://github.com/DanConwayDev/ngit-cli) - cli for a nostr based github alternative for FOSS repositories
|
||||
- [ni.py](https://github.com/0n4t3/nipy) - CLI post only client for Nostr, Activity Pub, and the AT Protocol written in Python.
|
||||
- [Noflux](https://github.com/fiatjaf/noflux) - minimalist and opinionated feed reader
|
||||
- [Nootti](https://nootti.com) - Cross-posting iOS & iPad client app for Bluesky, Mastodon and Nostr
|
||||
@@ -211,7 +227,8 @@ Websites with lists of relays and their performance/health:
|
||||
- [noscl](https://github.com/fiatjaf/noscl) - a basic command-line client written in Go
|
||||
- [Nosky](https://github.com/KotlinGeekDev/Nosky) - A native Android client for Nostr. Still in development
|
||||
- [nostr console](https://github.com/vishalxl/nostr_console) - a nostr command line client written in Dart. Binaries available for Windows, Linux, and macOS
|
||||
- [Nostr Nests](https://nostrnests.com/) - Nostr Nests is an audio space for chatting, brainstorming, debating, jamming, micro-conferences and more.
|
||||
- [Nostr Read Only Client](https://github.com/delirehberi/nostr-ro-client/) - simple cloudflare worker to serve a single user's nostr content (kind:1) as web page preview: nostr.emre.xyz
|
||||
- [Hugo2Nostr](https://github.com/delirehberi/hugo2nostr) - Sync your hugo blog with nostr network. The tool have scripts to sync contents.
|
||||
- [Nostr Playground](https://github.com/sepehr-safari/nostr-playground)  - A simple and user-friendly playground for Nostr.
|
||||
- [playground.nostr.com](https://playground.nostr.com/) - Live instance.
|
||||
- [Nostr Web](https://github.com/franzos/nostr-ts) - React web client for static hosting
|
||||
@@ -227,6 +244,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [NostrEmitter](https://github.com/cmdruid/nostr-emitter) - Simple E2E encrypted client and EventEmitter object
|
||||
- [Nostribe.com](https://github.com/sepehr-safari/nostribe-web-client)  - Nostr client web app built with Next.js 13 and TypeScript.
|
||||
- [Nostribe.com](https://nostribe.com/) - Live instance.
|
||||
- [AllSocial.me](https://allsocial.me/) - Linktree-like application for social media links based on nostr.
|
||||
- [Nostrid](https://github.com/lapulpeta/Nostrid) - Multi-platform client currently offering binaries for Android, Windows, MacOS and Linux.
|
||||
- [Nostrid.Web](https://web.nostrid.app/) - Web version running completely on the browser. It can be installed locally as PWA.
|
||||
- [Nostrmo](https://github.com/haorendashu/nostrmo) - A flutter nostr client for Android, IOS, MacOS, Windows, Web and Linux.
|
||||
@@ -241,14 +259,20 @@ Websites with lists of relays and their performance/health:
|
||||
- [nostui](https://github.com/akiomik/nostui) - A TUI client for Nostr
|
||||
- [Nostur](https://nostur.com) - Nostr client app for iOS and MacOS. ([Apple Store link](https://apps.apple.com/us/app/nostur/id1672780508))
|
||||
- [notestack.com](https://notestack.com) - Blogging site for nostr, supports markdown
|
||||
- [npub.world](https://npub.world/) - A nostr profile search engine
|
||||
- [Nuxstr](https://github.com/sebastix/nuxstr) - Starter template for building a Nostr client with the Nuxt Vue framework and Nostr Dev Kit (NDK).
|
||||
- [nuxstr.nostrver.se](https://nuxstr.nostrver.se) - demo
|
||||
- [n_cord](https://github.com/0n4t3/n_cord) - A Discord inspired chat style client standard Nostr notes, built in static HTML & JavaScript.
|
||||
- [0n4t3.github.io/n_cord/](https://0n4t3.github.io/n_cord/) - live instance
|
||||
- [Olas](https://github.com/pablof7z/olas) - An instagram-like client
|
||||
- [Oracolo](https://github.com/dtonon/oracolo) - Oracolo is a minimalist blog, powered by Nostr, that consists of a single html file.
|
||||
- [OstrichGram](https://ostrichgram.com) - OstrichGram is a Telegram-style desktop app for Linux and Windows featuring group chats and DMs.
|
||||
- [Pareto](https://pareto.space/read) - The Pareto client is a part of an open-source publishing ecosystem for uncensorable citizen journalism, specialized in writing and reading of long-form Nostr articles.
|
||||
- [Paz](https://pazstr.codeberg.page) - Paz is a desktop semantic Nostr client that transforms events into linked data (RDF) and makes queries on the events graph.
|
||||
- [Pinstr](https://github.com/sepehr-safari/pinstr)  - Pinstr is a decentralized and open-source social network for curating and sharing your interests with the world.
|
||||
- [Pinstr.app](https://pinstr.app) - live instance
|
||||
- [Plektos](https://github.com/derekross/plektos) - Plektos is a decentralized meetup, events, and calendar platform built on Nostr. [Plektos.app](https://plektos.app/)
|
||||
- [Pokey](https://github.com/KoalaSat/Pokey) - Nostr "Pull Notifications" on Android
|
||||
- [Pollerama](https://pollerama.fun/) - A polls implementation on nostr, with features like Proof of Work Filtering, Followset filtering, and more.
|
||||
-[Github Repo](https://github.com/abhay-raizada/nostr-polls)
|
||||
- [Pollstr](https://github.com/mroxso/pollstr) - A nostr web client with a focus on polls.
|
||||
@@ -256,7 +280,9 @@ Websites with lists of relays and their performance/health:
|
||||
- [Postr For Nostr](https://github.com/joel-st/postr-for-nostr) - Post to Nostr directly from within WordPress using NIP-07
|
||||
- [Pretty Good Apps](https://github.com/wds4/pretty-good) - A desktop Nostr client for Linux, macOS, and windows with a focus on decentralized reputation and web of trust. First application: crowdsourced decentralized list curation.
|
||||
- [Primal](https://primal.net) - Lightning-fast web client for Nostr. Features extensive analytics, vanity profiles, and more.
|
||||
- [P2P band](https://p2p.band/) - P2P Bitcoin exchanges decentralized aggregator
|
||||
- [Rabbit](https://github.com/syusui-s/rabbit) - A nostr client like TweetDeck
|
||||
- [Samiz](https://github.com/KoalaSat/Samiz) - BLE mesh for nostr notes when the internet is down
|
||||
- [Satellite](https://github.com/lovvtide/satellite-web) - Nostr web client with Reddit-style threads
|
||||
- [satellite.earth](https://satellite.earth) - live instance
|
||||
- [scalastr](https://github.com/benthecarman/scalastr) - A barebones nostr client written in scala
|
||||
@@ -273,6 +299,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [Swarmstr](https://swarmstr.com) - live instance
|
||||
- [Tamga](https://github.com/erdaltoprak/tamga) - An offline first nostr contact & profile manager for iOS!
|
||||
- [Tides](https://github.com/arbadacarbayk/tides) - Chrome Extension Messenger with a hotlink for Noderunners Radio Stream
|
||||
- [Treasures](https://treasures.to/) - Discover HiddenTreasures. Join the decentralized geocaching adventure powered by Nostr. Hide geocaches, find them, and connect with explorers worldwide.
|
||||
- [uBlog](https://github.com/nodetec/ublog)  - A minimalist blog on nostr that allows anyone to easily create their own personal micro-blog.
|
||||
- [u-blog.vercel.app](https://u-blog.vercel.app)
|
||||
- [Votestr](https://votestr.com/) - Poll web app with nostr authentication and blind signature unlinkability
|
||||
@@ -287,15 +314,27 @@ Websites with lists of relays and their performance/health:
|
||||
- [Yana](https://github.com/frnandu/yana) - Yana is a nostr client focused on performance in slower devices and modularity of features.
|
||||
- [yana.do](https://yana.do)
|
||||
- [zapddit](https://zapddit.com)  - Reddit-style client for nostr where you can follow topics (similar to subreddits), mute certain topics (like #bitcoin), upzap and downzap notes using your hard-earned sats.
|
||||
- [Zaplytics](https://github.com/derekross/zaplytics) - Analytics for your Nostr Zaps, helping creators dive into their Zap earnings. [Zaplytics.app](https://zaplytics.app/)
|
||||
- [Zappix](https://github.com/derekross/zappix) - A nostr image sharing application for browsing, sharing, and zapping visual content. [Zappix.app](https://zappix.app/)
|
||||
- [zephyr](https://github.com/coracle-social/zephyr) - A meditative nostr feed reader
|
||||
- [pocket-wallet](https://github.com/RetricSu/pocket-wallet) - PocketWallet is a nostr-based wallet on CKB blockchain supportting Nip07 and Nip46.
|
||||
- [cassette](https://cassette.cafe) - Portable WASM relays with standardized interface/bindings.
|
||||
|
||||
|
||||
### Nostr Marketplace clients (NIP-15 & NIP-99)
|
||||
### Nostr Marketplace clients ([NIP-15](https://github.com/nostr-protocol/nips/blob/master/15.md) & [NIP-99](https://github.com/nostr-protocol/nips/blob/master/99.md))
|
||||
|
||||
- [LNBits Nostrmarket](https://github.com/lnbits/nostrmarket) - Nostrmarket extension for LNBits allows you to sell items directly from your LNBits instance
|
||||
- [Plebeian Market](https://github.com/PlebeianTech/plebeian-market) - The Bitcoin-native self-sovereign marketplace built on top of NIP-15 includes fixed-price items and auctions
|
||||
- [Shopstr](https://github.com/shopstr-eng/shopstr) - The Lightning and Cashu-native self-sovereign marketplace built on top of NIP-99 includes fixed-price items
|
||||
|
||||
### Web Bookmarking ([NIP-B0](https://github.com/nostr-protocol/nips/blob/master/B0.md))
|
||||
- [Community Curated Nostr Stuff (CCNS)](https://github.com/Sebastix/CCNS)![stars] - CCNS is a Nostr-focused community platform centered around link aggregation and discussion topics.
|
||||
- [KUCHIYOSE](https://github.com/nikolat/kuchiyose)![stars] - Nostr events of web bookmark.
|
||||
- [Lantern]([https://pinstr.co/](https://gitworkshop.dev/fiatjaf.com/lantern)) - Collaboratively annotate, highlight, and bookmark web pages and PDF documents on Nostr.
|
||||
- [MKPinja](https://github.com/sepehr-safari/mkpinja)![stars] - A decentralized bookmarking service built on the Nostr protocol, inspired by Pinboard.in. MKPinja implements NIP-B0 for web bookmarking, giving users complete ownership and control over their bookmark data.
|
||||
- [Pinja](https://github.com/sepehr-safari/pinja)![stars] - Pinja is a modern social bookmarking platform built on the Nostr protocol, designed to help users collect, organize, and explore valuable content from across the web.
|
||||
- [Pinstr](https://pinstr.co/) - Pinstr is a bookmark manager that uses Nostr to store and sync your bookmarks.
|
||||
- [Yumyume](https://gitlab.com/digitalethicsagency/nostr/yumyume) - yumyume is an free open-source, decentralized social bookmarking client powered by the Nostr protocol. Inspired by del.icio.us, yumyume ensures your bookmarks remain accessible without the risk of being shut down by corporate interests.
|
||||
|
||||
### Client reviews and/or comparisons
|
||||
|
||||
- Feature [comparison list of Nostr clients](https://github.com/vishalxl/Nostr-Clients-Features-List)
|
||||
@@ -318,6 +357,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [NNostr.Client](https://github.com/Kukks/NNostr) - a C# Nostr library for use by clients
|
||||
- [noscrypt](https://github.com/vnuge/noscrypt) - A C89 library for nostr specific cryptography operations.
|
||||
- [nostr_rust](https://github.com/0xtlt/nostr_rust) - Functional Rust implementation of the nostr protocol
|
||||
- [Nostrbook](https://nostrbook.dev/) - A Comprehensive Registry of Nostr Documentation. Structured, detailed knowledge about Nostr for both humans and AI.
|
||||
- [nostr-bot](https://github.com/slaninas/nostr-bot) - a Rust library for writing bots
|
||||
- [nostr-connect](https://github.com/nostr-connect/connect) - Nostr Connect SDK for TypeScript is a library that allows you to easily integrate Nostr Connect into your web application
|
||||
- [nostr-deno](https://github.com/KiPSOFT/nostr-deno) - a client library for Deno javascript runtime.
|
||||
@@ -356,6 +396,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [rust-nostr](https://github.com/rust-nostr/nostr) - Rust implementation of the nostr protocol, high level nostr client library, bindings (Python, C#, Kotlin, Swift, JS and so on) and more!
|
||||
- [rx-nostr](https://github.com/penpenpng/rx-nostr) - Supports high quality and flexible communication with multiple Nostr relays.
|
||||
- [schorr_snap](https://github.com/neeboo/schnorr_snap) - A snap plugin for Metamask Flask, supports nostr
|
||||
- [Stacks](https://getstacks.dev/) - Stacks is a decentralized platform for sharing AI templates on the Nostr network. Find the perfect starter for your next project, or share your own templates with the community.
|
||||
- [sonos](https://github.com/bvcxza/sonos)- C++ library and command line tool for Nostr
|
||||
|
||||
## Bridges and Gateways
|
||||
@@ -397,6 +438,8 @@ Websites with lists of relays and their performance/health:
|
||||
- [keystr-rs](https://github.com/keystr/keystr-rs) - An application for managing Nostr keys. Written in Rust, with simple UI (Iced).
|
||||
- [knob](https://github.com/plantimals/knob) - command line tool to post text files to nostr
|
||||
- [LikZap](https://github.com/silencesoft/likzap) - A nostr bot to zap a note when you like it.
|
||||
- [liquiditystr](https://github.com/smallworlnd/liquiditystr) - A browser client for the Nostr P2P Lightning liquidity marketplace
|
||||
- [liquiditystr.space](https://liquiditystr.space/) - live instance
|
||||
- [lnpass](https://lnpass.github.io) - A key manager for Lightning and nostr.
|
||||
- [metadata_updater](https://github.com/UTXOnly/metadata_updater) - Scans all known online nostr relays for stale kind 0 metadata notes, rebroadcasts latest verified note
|
||||
- [NAKE](https://tsukemonogit.github.io/nake-website/) - a browser extension to easily convert between Nostr hex IDs and NIP-19 entities.
|
||||
@@ -426,7 +469,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [nostr-bulk-dms](https://github.com/leesalminen/nostr-bulk-dm) - A tool that allows you to send DMs over nostr to many recipients in bulk.
|
||||
- [nostr-cln-events](http://git.jb55.com/nostr-cln-events) - A CLN plugin to push clightning node events to nostr
|
||||
- [nostr-commander](https://github.com/8go/nostr-commander-rs) - simple but convenient CLI-based Nostr app for following users, sending DMs, etc.
|
||||
- [nostr-components](https://github.com/saiy2k/nostr-components) - Nostr Components makes it easy to embed Nostr profiles, posts, and follow buttons in any website
|
||||
- [nostr-components](https://github.com/saiy2k/nostr-components) - Nostr Components makes it easy to embed Nostr profiles, posts, follow buttons, Live chat box, comment section, DM buttons in any website
|
||||
- [nostr-crdt](https://github.com/YousefED/nostr-crdt)  - Use Nostr for collaborative, decentralized, local-first applications with nostr-CRDT Yjs provider.
|
||||
- [nostr-delete](https://github.com/blakejakopovic/nostr_delete) - generate delete events requesting relays drop and delete content you've published. Blasts out delete requests to many relays.
|
||||
- [nostr-delete web app](https://nostr-delete.vercel.app/)
|
||||
@@ -461,9 +504,8 @@ Websites with lists of relays and their performance/health:
|
||||
- [nostrify](https://github.com/joelklabo/nostrify) - A Core Lightning plugin that sends events (forwards, connect, disconnect, etc.) to nostr.
|
||||
- [nostril](https://github.com/jb55/nostril) - C cli tool for creating nostr events
|
||||
- [nostrillery](https://github.com/Cameri/nostrillery) - a tool for running performance tests against Nostr relays
|
||||
- [nostrit-push](https://nostrit.com/push) - Blaster tool that will take a signed nostr event and push it to many (most?) open relays.
|
||||
- [nostrit](https://nostrit.com/) - A tool to publish time-delayed nostr events based on triggers.
|
||||
- [nostro](https://github.com/r3drun3/nostro) - nostr osint (open source intelligence) tool
|
||||
- [Nostrobots](https://github.com/ocknamo/n8n-nodes-nostrobots) - a set of community nodes for using n8n workflow automation with Nostr
|
||||
- [NostrP2P](https://github.com/ryogrid/nostrp2p) - Pure peer-to-peer distributed microblog system on NAT transparent overlay network implemented in Golang based on idea of Nostr
|
||||
- [NostrReply](https://github.com/gourcetools/nostreply) - Bot that replies to specified text on nostr global feed using NIP50
|
||||
- [NostrSwap](https://www.nostrswap.com/) - NostrSwap is a fully decentralized exchange built on Nostr Protocol.
|
||||
@@ -474,6 +516,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [Obsidian Nostr Writer](https://github.com/jamesmagoo/nostr-writer#readme) - A free Obsidian plugin that allows writers to seamlessly publish to Nostr
|
||||
- [osint-user-discovery](https://github.com/Inforensics/osint-user-discovery) - OSINT Discovery is a set of Python scripts designed to search for users or URLs across different social media platforms(nostr, mastodon) and caching services.
|
||||
- [powrelay.xyz](https://powrelay.xyz) - A proof of work-based nostr explorer.
|
||||
- [publsp](https://github.com/smallworlnd/publsp) A CLI tool for any Lightning Network node or Lightning Service Provider (LSP) to advertise liquidity offers over Nostr.
|
||||
- [Replies](https://replies.nostrapps.org) - Nostr micro-app for viewing replies and reactions to events
|
||||
- [rss.nostr.band](https://rss.nostr.band) - Create custom RSS feeds with posts matching your keywords and consume using your favorite RSS reader.
|
||||
- [safebox](https://github.com/trbouma/safebox) - private portable safebox on nostr
|
||||
@@ -511,7 +554,7 @@ Websites with lists of relays and their performance/health:
|
||||
- [nostrcheck.me](https://nostrcheck.me/) - A free NIP-05 ID (nostr address) registration service, lightning redirection and media uploads.
|
||||
- [Nostrich House](https://nostrich.house) - Paid NIP-05 service with nostr bot interface. Buy your nostr address with DM to nostrich@nostrich.house for 1 sat/hour, anonymous, immediate.
|
||||
- [nostrich.love](https://uselessshit.co/nostr/nip-05/) - A Nostr Address registration service.
|
||||
- [nostrplebs](https://nostrplebs.com) - A NIP-05 ID registration service.
|
||||
- [nostrplebs](https://nostrplebs.com) - The oldest and original Nostr address registration and identity management service.
|
||||
- [nostrprotocol.net](https://github.com/KiPSOFT/nostr-nip05-service) - A free NIP-05 identifier service.
|
||||
- [pleroma2nip05](https://code.taurix.net/guy/pleroma2nip05) - A Python based service to link pleroma ID's to nostr keys.
|
||||
- [siamstr.com](https://siamstr.com) - A free NIP-05 ID registration service, lightning redirection.
|
||||
@@ -530,8 +573,9 @@ Websites with lists of relays and their performance/health:
|
||||
## Vanity pubkey mining
|
||||
|
||||
|
||||
- [glasnostr](https://github.com/eyelight/glasnostr)  - CLI tool to mine a vanity prefix for your nostr npub
|
||||
- [go-pubmine](https://github.com/tenkoh/go-pubmine)  - Multithreading nostr keypair generator which gives pretty (vanity) public keys. Both CLI and web apps are available.
|
||||
- [glasnostr](https://github.com/eyelight/glasnostr) - CLI tool to mine a vanity prefix for your nostr npub
|
||||
- [go-pubmine](https://github.com/tenkoh/go-pubmine) - Multithreading nostr keypair generator which gives pretty (vanity) public keys. Both CLI and web apps are available.
|
||||
- [vanity-key](https://github.com/nostr-net/vanity-key/) - use your face biometrics to generate a deterministic private key
|
||||
- [key-generator](https://github.com/TP-Lab/key-generator)  - A simple tool to generate nostr keypair.
|
||||
- [noclvag](https://codeberg.org/alex0jsan/noclvag) - OpenCL cli tool to mine vanity keys on gpu
|
||||
- [nostr-pubminer](https://github.com/lacaulac/nostr-pubminer) - A simple tool to mine nostr vanity pubkeys
|
||||
@@ -563,8 +607,7 @@ Allow you to sign Nostr events on web-apps without having to give them your keys
|
||||
- [nodestr](https://github.com/lightning-digital-entertainment/nodestr) - A nip07 provider and polyfill for NodeJS
|
||||
- [nos2x-fox](https://diegogurpegui.com/nos2x-fox/) - A Firefox add-on that lets you manager your Nostr keys in one place, and then sign events in websites without exposing your private key
|
||||
- [nos2x](https://github.com/fiatjaf/nos2x) - Nostr Signer Extension
|
||||
- [nostash](https://github.com/tyiu/nostash) - Nostash is a Safari browser extension for signing events on 3rd party sites without sharing your private keys with them
|
||||
- [nostore](https://github.com/ursuscamp/nostore) - Nostr Signer Extension for iOS/macOS Safari ([Nostore on Mac App Store](https://apps.apple.com/us/app/nostore/id1666553677))
|
||||
- [Nostash](https://github.com/tyiu/nostash) - Nostash is an iOS/iPadOS/macOS Safari browser extension for signing events on 3rd party sites without sharing your private keys with them ([Nostash on App Store](https://apps.apple.com/app/nostash/id6744309333))
|
||||
- [nostr-keyx](https://github.com/susumuota/nostr-keyx) - A NIP-07 browser extension that uses the OS's keychain or YubiKey to protect your private keys.
|
||||
- [nostr](https://github.com/jinglescode/nostr-password-manager) - A free, open source, and decentralized password manager, powered by NOSTR
|
||||
- [nostrame](https://github.com/Anderson-Juhasc/nostrame) - Nostr Signer and Account Management Extension
|
||||
@@ -629,6 +672,7 @@ Endpoints (services or apps that expose a LN wallet via NWC)
|
||||
- [NostrDVM](https://github.com/believethehype/nostrdvm) - NostrDVM: Nostr NIP90 Data Vending Machine Framework in python
|
||||
- [tasktiger.io](https://tasktiger.io/) - another DVM provider
|
||||
- [vendata.io](https://vendata.io/) - data processing AI marketplace with nostr data vending machines
|
||||
- [vertexlab.io](https://vertexlab.io/) - Web of Trust as a Service via DVMs
|
||||
|
||||
## NIP-96 File Storage Servers
|
||||
- [mockingyou.com](https://mockingyou.com)
|
||||
@@ -680,6 +724,7 @@ Outside of nostr itself, you find the community on:
|
||||
- [SuperConductor](https://github.com/avlo/superconductor/?tab=readme-ov-file#creating-relay-event-handlers) - Creating Java Nostr-Relay Framework & Web Application event-handlers
|
||||
- [Set up a Lightning node and Nostr client](https://rizful.com/get_on_nostr_today) - Run a full lightning node in the cloud and connect it via NWC to the Yakihonne client
|
||||
- [Send a Hello World with Nostr](https://hellonostr.dev/) - “Hello Nostr” begginers guide using HTML, CSS, and JavaScript
|
||||
- [Workflow Automation for Nostr](https://rodbishop.npub.pro/post/4f0baffd/) - Using n8n and Nostrobots
|
||||
|
||||
## Recommended reading/watching
|
||||
- [Nostr, an introduction](https://wiki.wellorder.net/post/nostr-intro/) - written by scsibug
|
||||
@@ -743,6 +788,7 @@ Outside of nostr itself, you find the community on:
|
||||
- [Listr](https://github.com/sepehr-safari/listr)  - A Nostr Web Client for Making Lists.
|
||||
- [nodestr](https://github.com/Dolu89/nodestr-relay) - a Node.js implementation
|
||||
- [nostr-pass](https://github.com/plantimals/nostr-pass) - experimenting with nostr priv/pub key pairs for replacing passwords
|
||||
- [nostore](https://github.com/ursuscamp/nostore) - Nostr Signer Extension for iOS/macOS Safari
|
||||
- [nostrpy](https://github.com/monty888/nostrpy) - relay, client, and other tooling in python (No longer being developed.)
|
||||
- [Nozzle](https://github.com/dluvian/Nozzle) - A lightweight Android client
|
||||
- [Plebstr](https://plebstr.com) - Nostr client Reimagined, the most beautiful Twitter-like nostr client for iOS & Android.
|
||||
|
||||
15
index.html
15
index.html
@@ -43,9 +43,10 @@
|
||||
<input type="text" id="search" placeholder="Search resources...">
|
||||
<i class="fas fa-search"></i>
|
||||
</div>
|
||||
<div class="theme-controls">
|
||||
<select id="colorThemeSelect" class="theme-select" aria-label="Select color theme">
|
||||
<option value="default">Default Theme</option>
|
||||
<div class="theme-controls">
|
||||
<!-- Color theme select dropdown commented out as requested
|
||||
<select id="colorThemeSelect" class="theme-select" aria-label="Select color theme">
|
||||
<option value="cyberpunk">Default</option>
|
||||
<option value="purple">Purple Dream</option>
|
||||
<option value="nature">Nature's Touch</option>
|
||||
<option value="sunset">Sunset Vibes</option>
|
||||
@@ -53,11 +54,17 @@
|
||||
<option value="autumn">Autumn Warmth</option>
|
||||
<option value="midnight">Midnight Rose</option>
|
||||
<option value="rosenoir">Rose Noir</option>
|
||||
<option value="nord">Nord</option>
|
||||
<option value="pastel">Pastel Pop</option>
|
||||
<option value="oceanic">Oceanic Breeze</option>
|
||||
<option value="dracula">Dracula</option>
|
||||
</select>
|
||||
-->
|
||||
<button id="darkModeToggle" class="theme-toggle" aria-label="Toggle dark mode">
|
||||
<i class="fas fa-moon"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
280
script.js
280
script.js
@@ -16,16 +16,16 @@ const colorThemes = {
|
||||
primary: '#4a314d',
|
||||
background: '#ffffff',
|
||||
text: '#1a090d',
|
||||
cardBackground: '#a8ba9a',
|
||||
cardBackground: '#f8f9fa',
|
||||
sidebarBackground: '#6b6570',
|
||||
hoverColor: '#ace894'
|
||||
},
|
||||
dark: {
|
||||
background: '#1a090d',
|
||||
text: '#ace894',
|
||||
cardBackground: '#4a314d',
|
||||
sidebarBackground: '#6b6570',
|
||||
linkColor: '#a8ba9a'
|
||||
background: '#1a1a1a',
|
||||
text: '#e8e8e8',
|
||||
cardBackground: '#2d2d2d',
|
||||
sidebarBackground: '#333333',
|
||||
linkColor: '#88cc88'
|
||||
}
|
||||
},
|
||||
purple: {
|
||||
@@ -33,16 +33,16 @@ const colorThemes = {
|
||||
primary: '#9c528b',
|
||||
background: '#ffffff',
|
||||
text: '#2f0147',
|
||||
cardBackground: '#e2c2c6',
|
||||
cardBackground: '#f7f3f7',
|
||||
sidebarBackground: '#b9929f',
|
||||
hoverColor: '#610f7f'
|
||||
hoverColor: '#c470a4'
|
||||
},
|
||||
dark: {
|
||||
background: '#2f0147',
|
||||
text: '#e2c2c6',
|
||||
cardBackground: '#9c528b',
|
||||
sidebarBackground: '#610f7f',
|
||||
linkColor: '#b9929f'
|
||||
background: '#1a0d1a',
|
||||
text: '#e6d6e6',
|
||||
cardBackground: '#301a30',
|
||||
sidebarBackground: '#4a2d4a',
|
||||
linkColor: '#cc88cc'
|
||||
}
|
||||
},
|
||||
nature: {
|
||||
@@ -50,16 +50,16 @@ const colorThemes = {
|
||||
primary: '#2c5530',
|
||||
background: '#ffffff',
|
||||
text: '#1a2f1c',
|
||||
cardBackground: '#a7c4aa',
|
||||
cardBackground: '#f8faf8',
|
||||
sidebarBackground: '#718355',
|
||||
hoverColor: '#90a955'
|
||||
},
|
||||
dark: {
|
||||
background: '#1a2f1c',
|
||||
text: '#90a955',
|
||||
cardBackground: '#2c5530',
|
||||
sidebarBackground: '#718355',
|
||||
linkColor: '#a7c4aa'
|
||||
background: '#0f1a0f',
|
||||
text: '#d4e6d4',
|
||||
cardBackground: '#1a331a',
|
||||
sidebarBackground: '#264d26',
|
||||
linkColor: '#99dd99'
|
||||
}
|
||||
},
|
||||
sunset: {
|
||||
@@ -67,50 +67,50 @@ const colorThemes = {
|
||||
primary: '#cf5c36',
|
||||
background: '#ffffff',
|
||||
text: '#1f1f1f',
|
||||
cardBackground: '#eec584',
|
||||
cardBackground: '#fdf8f3',
|
||||
sidebarBackground: '#c8963e',
|
||||
hoverColor: '#f3a953'
|
||||
},
|
||||
dark: {
|
||||
background: '#1f1f1f',
|
||||
text: '#eec584',
|
||||
cardBackground: '#cf5c36',
|
||||
sidebarBackground: '#c8963e',
|
||||
linkColor: '#f3a953'
|
||||
background: '#1a0f0a',
|
||||
text: '#ffd4a3',
|
||||
cardBackground: '#2d1a0d',
|
||||
sidebarBackground: '#4d2d1a',
|
||||
linkColor: '#ffaa55'
|
||||
}
|
||||
},
|
||||
grape: {
|
||||
light: {
|
||||
primary: '#642ca9',
|
||||
background: '#ffffff',
|
||||
text: '#642ca9',
|
||||
cardBackground: '#ffb8de',
|
||||
sidebarBackground: '#ffdde1',
|
||||
hoverColor: '#ff36ab'
|
||||
text: '#2d1a47',
|
||||
cardBackground: '#faf7fd',
|
||||
sidebarBackground: '#9775cc',
|
||||
hoverColor: '#8855cc'
|
||||
},
|
||||
dark: {
|
||||
background: '#642ca9',
|
||||
text: '#ffdde1',
|
||||
cardBackground: '#ff36ab',
|
||||
sidebarBackground: '#ff74d4',
|
||||
linkColor: '#ffb8de'
|
||||
background: '#0d0a1a',
|
||||
text: '#e6d4ff',
|
||||
cardBackground: '#1a0d33',
|
||||
sidebarBackground: '#33204d',
|
||||
linkColor: '#bb88ff'
|
||||
}
|
||||
},
|
||||
autumn: {
|
||||
light: {
|
||||
primary: '#d95d39',
|
||||
background: '#ffffff',
|
||||
text: '#0e1428',
|
||||
cardBackground: '#f0a202',
|
||||
sidebarBackground: '#7b9e89',
|
||||
text: '#2d1a0f',
|
||||
cardBackground: '#fdf7f0',
|
||||
sidebarBackground: '#cc8866',
|
||||
hoverColor: '#f18805'
|
||||
},
|
||||
dark: {
|
||||
background: '#0e1428',
|
||||
text: '#f0a202',
|
||||
cardBackground: '#d95d39',
|
||||
sidebarBackground: '#7b9e89',
|
||||
linkColor: '#f18805'
|
||||
background: '#1a0f0a',
|
||||
text: '#ffcc99',
|
||||
cardBackground: '#331a0d',
|
||||
sidebarBackground: '#4d2d1a',
|
||||
linkColor: '#ffaa77'
|
||||
}
|
||||
},
|
||||
midnight: {
|
||||
@@ -118,35 +118,155 @@ const colorThemes = {
|
||||
primary: '#b91372',
|
||||
background: '#ffffff',
|
||||
text: '#31081f',
|
||||
cardBackground: '#fa198b',
|
||||
sidebarBackground: '#6b0f1a',
|
||||
hoverColor: '#fa198b'
|
||||
cardBackground: '#fdf3f7',
|
||||
sidebarBackground: '#d988aa',
|
||||
hoverColor: '#e6558c'
|
||||
},
|
||||
dark: {
|
||||
background: '#0e0004',
|
||||
text: '#fa198b',
|
||||
cardBackground: '#b91372',
|
||||
sidebarBackground: '#31081f',
|
||||
linkColor: '#fa198b'
|
||||
background: '#0a0005',
|
||||
text: '#ff99cc',
|
||||
cardBackground: '#260d1a',
|
||||
sidebarBackground: '#4d1a33',
|
||||
linkColor: '#ff77bb'
|
||||
}
|
||||
},
|
||||
rosenoir: {
|
||||
slate: {
|
||||
light: {
|
||||
primary: '#792359',
|
||||
primary: '#475569',
|
||||
background: '#ffffff',
|
||||
text: '#2f2d2e',
|
||||
cardBackground: '#fd3e81',
|
||||
sidebarBackground: '#41292c',
|
||||
hoverColor: '#d72483'
|
||||
text: '#1e293b',
|
||||
cardBackground: '#f8fafc',
|
||||
sidebarBackground: '#94a3b8',
|
||||
hoverColor: '#64748b'
|
||||
},
|
||||
dark: {
|
||||
background: '#2f2d2e',
|
||||
text: '#fd3e81',
|
||||
cardBackground: '#792359',
|
||||
sidebarBackground: '#41292c',
|
||||
linkColor: '#d72483'
|
||||
background: '#0f172a',
|
||||
text: '#cbd5e1',
|
||||
cardBackground: '#1e293b',
|
||||
sidebarBackground: '#334155',
|
||||
linkColor: '#94a3b8'
|
||||
}
|
||||
},
|
||||
forest: {
|
||||
light: {
|
||||
primary: '#16a085',
|
||||
background: '#ffffff',
|
||||
text: '#2c3e50',
|
||||
cardBackground: '#f0fdf4',
|
||||
sidebarBackground: '#52d4a6',
|
||||
hoverColor: '#1abc9c'
|
||||
},
|
||||
dark: {
|
||||
background: '#0a1a12',
|
||||
text: '#a7f3d0',
|
||||
cardBackground: '#064e3b',
|
||||
sidebarBackground: '#047857',
|
||||
linkColor: '#6ee7b7'
|
||||
}
|
||||
},
|
||||
ocean: {
|
||||
light: {
|
||||
primary: '#2563eb',
|
||||
background: '#ffffff',
|
||||
text: '#1e40af',
|
||||
cardBackground: '#eff6ff',
|
||||
sidebarBackground: '#60a5fa',
|
||||
hoverColor: '#3b82f6'
|
||||
},
|
||||
dark: {
|
||||
background: '#0c1429',
|
||||
text: '#bfdbfe',
|
||||
cardBackground: '#1e3a8a',
|
||||
sidebarBackground: '#1d4ed8',
|
||||
linkColor: '#93c5fd'
|
||||
}
|
||||
},
|
||||
cherry: {
|
||||
light: {
|
||||
primary: '#dc2626',
|
||||
background: '#ffffff',
|
||||
text: '#991b1b',
|
||||
cardBackground: '#fef2f2',
|
||||
sidebarBackground: '#f87171',
|
||||
hoverColor: '#ef4444'
|
||||
},
|
||||
dark: {
|
||||
background: '#1a0606',
|
||||
text: '#fecaca',
|
||||
cardBackground: '#7f1d1d',
|
||||
sidebarBackground: '#991b1b',
|
||||
linkColor: '#fb7185'
|
||||
}
|
||||
},
|
||||
cyberpunk: {
|
||||
light: {
|
||||
primary: '#8b5cf6',
|
||||
background: '#fafafa',
|
||||
text: '#171717',
|
||||
cardBackground: '#f5f5f5',
|
||||
sidebarBackground: '#a78bfa',
|
||||
hoverColor: '#7c3aed'
|
||||
},
|
||||
dark: {
|
||||
background: '#0a0a0a',
|
||||
text: '#00ffff',
|
||||
cardBackground: '#1a0a1a',
|
||||
sidebarBackground: '#2a1a2a',
|
||||
linkColor: '#ff0099'
|
||||
}
|
||||
},
|
||||
nord: {
|
||||
light: {
|
||||
primary: '#5e81ac',
|
||||
background: '#eceff4',
|
||||
text: '#2e3440',
|
||||
cardBackground: '#e5e9f0',
|
||||
sidebarBackground: '#81a1c1',
|
||||
hoverColor: '#88c0d0'
|
||||
},
|
||||
dark: {
|
||||
background: '#2e3440',
|
||||
text: '#d8dee9',
|
||||
cardBackground: '#3b4252',
|
||||
sidebarBackground: '#434c5e',
|
||||
linkColor: '#88c0d0'
|
||||
}
|
||||
},
|
||||
warm: {
|
||||
light: {
|
||||
primary: '#f59e0b',
|
||||
background: '#ffffff',
|
||||
text: '#92400e',
|
||||
cardBackground: '#fffbeb',
|
||||
sidebarBackground: '#fbbf24',
|
||||
hoverColor: '#f97316'
|
||||
},
|
||||
dark: {
|
||||
background: '#1c1917',
|
||||
text: '#fed7aa',
|
||||
cardBackground: '#451a03',
|
||||
sidebarBackground: '#78350f',
|
||||
linkColor: '#fb923c'
|
||||
}
|
||||
},
|
||||
dracula: {
|
||||
light: {
|
||||
primary: '#bd93f9',
|
||||
background: '#ffffff',
|
||||
text: '#282a36',
|
||||
cardBackground: '#f8f8f2',
|
||||
sidebarBackground: '#cfc9e3',
|
||||
hoverColor: '#ff79c6'
|
||||
},
|
||||
dark: {
|
||||
background: '#282a36',
|
||||
text: '#f8f8f2',
|
||||
cardBackground: '#44475a',
|
||||
sidebarBackground: '#6272a4',
|
||||
linkColor: '#bd93f9'
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
// Initialize all UI controls
|
||||
@@ -175,18 +295,13 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
applyColorTheme(currentColorTheme);
|
||||
});
|
||||
|
||||
// Color theme initialization
|
||||
const colorThemeSelect = document.getElementById('colorThemeSelect');
|
||||
const savedColorTheme = localStorage.getItem('colorTheme') || 'default';
|
||||
colorThemeSelect.value = savedColorTheme;
|
||||
applyColorTheme(savedColorTheme);
|
||||
|
||||
// Color theme change event listener
|
||||
colorThemeSelect.addEventListener('change', (e) => {
|
||||
const selectedTheme = e.target.value;
|
||||
localStorage.setItem('colorTheme', selectedTheme);
|
||||
applyColorTheme(selectedTheme);
|
||||
});
|
||||
// Color theme initialization - color theme select is commented out in HTML
|
||||
const savedColorTheme = localStorage.getItem('colorTheme');
|
||||
const defaultTheme = 'default';
|
||||
|
||||
// Validate saved theme exists and apply it
|
||||
const initialTheme = colorThemes[savedColorTheme] ? savedColorTheme : defaultTheme;
|
||||
applyColorTheme(initialTheme);
|
||||
|
||||
// Test if marked is loaded
|
||||
if (typeof marked === 'undefined') {
|
||||
@@ -657,7 +772,7 @@ function createResourceCard(resource) {
|
||||
|
||||
// Try multiple favicon sources
|
||||
const faviconSources = [
|
||||
`https://www.google.com/s2/favicons?domain=${domain}&sz=64`,
|
||||
`https://www.google.com/s2/favicons?domain=https://${domain}&sz=64`,
|
||||
`https://${domain}/favicon.ico`,
|
||||
`https://${domain}/favicon.png`,
|
||||
`https://${domain}/apple-touch-icon.png`,
|
||||
@@ -970,16 +1085,33 @@ function displaySection(sectionName, sections) {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
|
||||
function applyColorTheme(themeName) {
|
||||
// Check if theme exists, otherwise fallback to default
|
||||
const themeExists = colorThemes[themeName];
|
||||
if (!themeExists) {
|
||||
console.warn(`Theme "${themeName}" not found, falling back to default theme`);
|
||||
themeName = 'default';
|
||||
}
|
||||
|
||||
const isDark = document.body.dataset.theme === 'dark';
|
||||
const theme = colorThemes[themeName][isDark ? 'dark' : 'light'];
|
||||
|
||||
if (!theme) {
|
||||
console.error(`Could not find ${isDark ? 'dark' : 'light'} mode for theme "${themeName}"`);
|
||||
return;
|
||||
}
|
||||
|
||||
// Apply theme colors to CSS variables
|
||||
const root = document.documentElement;
|
||||
Object.entries(theme).forEach(([key, value]) => {
|
||||
const cssVar = `--${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;
|
||||
root.style.setProperty(cssVar, value);
|
||||
});
|
||||
|
||||
// Store the successfully applied theme
|
||||
localStorage.setItem('colorTheme', themeName);
|
||||
}
|
||||
45
styles.css
45
styles.css
@@ -1,23 +1,28 @@
|
||||
:root {
|
||||
--primary-color: #4a314d;
|
||||
--background-color: #ffffff;
|
||||
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap");
|
||||
|
||||
--primary-color: #3a0ca3;;
|
||||
--background-color: #c8e7ff;
|
||||
--text-color: #1a090d;
|
||||
--card-background: #a8ba9a;
|
||||
--sidebar-background: #6b6570;
|
||||
--hover-color: #ace894;
|
||||
--text-primary: var(--text-color);
|
||||
--link-color: var(--primary-color);
|
||||
--link-color: #f72585;
|
||||
--star-color: #4a314d;
|
||||
|
||||
}
|
||||
|
||||
/* Dark theme variables */
|
||||
[data-theme="dark"] {
|
||||
--background-color: #1a090d;
|
||||
--text-color: #ace894;
|
||||
--card-background: #4a314d;
|
||||
--sidebar-background: #6b6570;
|
||||
--primary-color: #3a0ca3;
|
||||
--background-color: #10002b;
|
||||
--text-color: #4cc9f0;
|
||||
--card-background: #3a0ca3;
|
||||
--sidebar-background: #000;
|
||||
--hover-color: #ace894;
|
||||
--text-primary: var(--text-color);
|
||||
--link-color: #a8ba9a;
|
||||
--link-color: #f72585;
|
||||
--star-color: #4a314d;
|
||||
}
|
||||
|
||||
* {
|
||||
@@ -27,7 +32,8 @@
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
||||
letter-spacing: 0.02em;
|
||||
background-color: var(--background-color);
|
||||
color: var(--text-color);
|
||||
line-height: 1.6;
|
||||
@@ -179,15 +185,18 @@ body {
|
||||
}
|
||||
|
||||
/* Resource Cards */
|
||||
.resource-card {
|
||||
.resource-card{
|
||||
background: var(--card-background);
|
||||
border-radius: 12px;
|
||||
padding: 16px;
|
||||
margin-bottom: 16px;
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
width: 100%;
|
||||
height: auto;
|
||||
overflow: visible;
|
||||
border-radius: 16px;
|
||||
padding: 24px 20px;
|
||||
margin-bottom: 20px;
|
||||
box-shadow: 0 4px 14px rgba(0,0,0,.08);
|
||||
transition: transform .25s cubic-bezier(.4,.2,.2,1),
|
||||
box-shadow .25s cubic-bezier(.4,.2,.2,1);
|
||||
}
|
||||
.resource-card:hover{
|
||||
transform: translateY(-4px);
|
||||
box-shadow: 0 10px 20px rgba(0,0,0,.12);
|
||||
}
|
||||
|
||||
.resource-header {
|
||||
|
||||
Reference in New Issue
Block a user