Anmore is an admin-controlled Nostr platform with enhanced moderation capabilities, simplified authentication using NIP-05, and automatic hashtag generation. Built on the Coracle codebase, Anmore provides a curated social experience with admin-managed content filtering.
Check it out at anmore.me.
- Threads/social
- Profile search using NIP-50
- Login via extension, nsecbunker, and pubkey
- Profile sharing via QR codes
- NIP 05 verification
- NIP 65 relay selection and NIP 32 relay reviews
- NIP 89 app recommendations
- NIP 32 labeling and recommendations
- NIP 99 classifieds
- NIP 52 calendar events
- NIP 87 closed groups
- NIP 72 communities
- NIP 89 client tag support
- NIP 89 handler integration
- NIP 32 labeling and collections
- NIP 17 DMs
- Private group calendars and listings
- Cross-posting between communities and main feed
- Bech32 entity search and scan
- Mention, reply, and reaction notifications
- Direct messages - NIP 04 and NIP 24
- Note composition with mentions and topics
- Content warnings, mute, and keyword mute
- Profile pages, follow/unfollow, follow/follower count
- Thread muting, collapse thread
- Invoice, quote, mention, link, image, and video rendering
- Installable as a progressive web app
- Integrated media uploads via NIP 96
- Lightning zaps and reactions
- Feeds customizable by person, relay, and topic using NIP-51
- AUTH (NIP-42) support for closed relays
- Multiplextr support for reducing bandwidth
- Profile and note metadata
- White-labeling support
- NIP 51 person lists
- Exports/imports of user events
- User profile editing
- NIP XX encrypted read receipts for notifications
- Topic and relay feeds
- Onboarding workflow
- Multi-account support
- Notifications view
- Web of trust scores for less spam and better group/feed suggestions
- Customizable and shareable feeds and lists
- Customizable invite links
- Reporting via tagr-bot
- Nostr Wallet Connect support
- Date/time localization
You can find a more complete changelog here.
- Clone the project repository:
git clone https://github.com/anmore/anmore.git - Navigate to the project directory:
cd anmore - Install dependencies:
pnpm i - Install sharp (required for build):
pnpm i sharp --include=optional - Copy
.env.exampleto.env.localand customize configuration (optional, see below) - Start the development server:
pnpm run dev
- Run all tests:
pnpm run test - Run unit tests:
pnpm run test:unit - Run e2e tests:
pnpm run test:e2e
Make sure you have the android build tools in your path and run:
pnpm run build:android --keystorepath <path> --keystorepass <password> --keystorealias <alias> --keystorealiaspass <password>
Source maps are uploaded using the sentry cli to a self-hosted glitchtip instance. See the sourcemaps script in package.json for details. More information here: https://gitlab.com/glitchtip/glitchtip-backend/-/issues/322
Anmore is fully customizable via environment variables. The following environment variables can be set in .env.local to customize Anmore's appearance and behavior:
VITE_ADMIN_PUBKEYSis a comma-separated list of hex pubkeys for admin users who can manage hashtag whitelists.VITE_DEFAULT_HASHTAGis the default hashtag automatically added to all new posts (default: "anmore").VITE_NIP05_DOMAINis the NIP-05 domain for simplified login (default: "anmore.me").
VITE_DARK_THEMEandVITE_LIGHT_THEMEare comma-separate lists of key/value pairs defining theme colors.VITE_DVM_RELAYSis a comma-separated list of relays to use when making requests against DVMs.VITE_SEARCH_RELAYSis a comma-separated list of relays to use when using NIP 50 search.VITE_DEFAULT_RELAYSis a comma-separated list of relays to use as defaults/fallbacks.VITE_DEFAULT_FOLLOWSis a comma-separated list of hex pubkeys to fetch content from when the user isn't following anyone.VITE_ONBOARDING_LISTSis a comma-separated list ofkind:30003person lists to populate onboarding with.VITE_NIP96_URLSis a comma-separated list of default upload providers.VITE_DUFFLEPUD_URLis a Dufflepud instance url, which helps Coracle with things like link previews and image uploads.VITE_PLATFORM_ZAP_SPLITis a decimal between 0 and 1 defining the default zap split percent.VITE_PLATFORM_PUBKEYis the pubkey of the platform owner. This gets zapped when using the platform zap split.VITE_ENABLE_ZAPScan be set tofalseto disable zaps.VITE_APP_NAMEis the app's name.VITE_APP_URLis the app's url. Used to generate open graph meta tags.VITE_APP_LOGOis the path for the app's logo relative to thepublicdirectory, starting with a leading slash. Used to generate favicons and manifest.VITE_APP_WORDMARK_DARKandVITE_APP_WORDMARK_LIGHTare paths for the app's wordmark relative to thepublicdirectory, starting with a leading slash.VITE_APP_DESCRIPTIONis the app's description.VITE_CLIENT_NAMEis the client's name. Only change this if you have forked Coracle.VITE_CLIENT_IDis the client's NIP 89 handler id. Only change this if you have forked Coracle.VITE_GLITCHTIP_API_KEYis your glitchtip DSN.GLITCHTIP_API_KEYis your glitchtip auth token for uploading source maps.VITE_BUILD_HASHcan be set during build to indicate the software version on the about page.VITE_LOG_LEVELcan be set toinfo,warn, orerror. This controls how much shows up in the console.VITE_ENABLE_MARKETcan be set tofalseto disable the marketplace tab.
Anmore is configured for automatic deployment to GitHub Pages. The deployment workflow (.github/workflows/deploy.yml) will:
- Build the application on push to
mainormasterbranch - Deploy to GitHub Pages automatically
To enable GitHub Pages:
- Go to your repository Settings → Pages
- Set Source to "GitHub Actions"
- The workflow will deploy automatically on push
The CNAME file is configured for anmore.me - update it if using a different domain.