Skip to content

44Billion/nostria

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5,734 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nostria

Nostria Logo

Your Social Network, built for human connection.

Humans are social beings. We thrive when we connect, share, and build relationships. Social media has the power to bring us closer together - but too often, that natural drive is taken advantage of. Nostria exists to change that dynamic.

Nostria is a platform built on the decentralized Nostr protocol, created to serve people - not exploit them. Our purpose is simple: to be a tool for good. We empower individuals to form new connections and strengthen existing ones, offering features that enrich lives rather than distract from them.

We reject the model where users are treated as the product. Growth will come not from manipulation, but from people genuinely enjoying Nostria because it enhances their lives and relationships.

Joining Nostria is quick, welcoming, and easy - because social media should invite everyone in without barriers. Our design is simple, intuitive, and built to make meaningful interaction effortless.

On Nostria, users own their data, control their profiles, and resist censorship. No one can be silenced here - freedom and transparency are at the core of the experience.

Nostria is Your Social Network - a place where lasting engagement comes from meaning, utility, and community.

Nostria app

Installation

Nostria is accessible as both web app and desktop app.

Web: https://nostria.app

Desktop: https://github.com/nostria-app/nostria/releases

Updates

When there is a new release available, you'll see the update notification (button) in the app. This only works for certain installation packages.

Linux: AppImage will update in-place. .deb package installs will show an update notification, but you must download and install the new .deb manually.

Mac: App should update.

Windows: Only the .exe will show updates, the .msi will not show updates.

Android: Updates must be manually downloaded and installed if installing the APK directly. If installing through Google Play, updates will come through the Play Store. Zapstore users must also open Zapstore to get the update.

iOS: Updates will come through App Store (when available).

Linux

AppImage with in-app updates:

wget -O Nostria.AppImage https://github.com/nostria-app/nostria/releases/download/v3.1.43/Nostria_3.1.43_amd64.AppImage
chmod +x Nostria.AppImage
./Nostria.AppImage

AppImage is portable. It does not install a desktop icon or app launcher by default, so keep the file somewhere stable such as ~/Applications/ and launch that same file again later. If you want a menu entry/icon, use an AppImage integration tool such as AppImageLauncher or create a desktop launcher manually.

.deb package with manual package updates:

wget https://github.com/nostria-app/nostria/releases/download/v3.1.43/Nostria_3.1.43_amd64.deb
sudo apt install ./Nostria_3.1.4_amd64.deb

Uninstall

sudo apt remove Nostria

Documentation

Documentation of source code is available here: Nostria DeepWiki

Additional documents here: docs

Architecture

The client is built on Angular and Angular Material. It is utilizing Tauri to package the app for desktop users.

Nostria is a client for the Nostr protocol, which is a decentralized social network protocol. It allows users to communicate and share information without relying on a central server. The client is designed to be user-friendly and provide a seamless experience for users.

Nostria implements the usage of the Nostr protocol to ensure maximum decentralization and global scalability, without compromising on user experience. The client is designed to be fast, responsive, and easy to use, with a focus on providing a great user experience.

NIPs

Opininated Nostr Client

Nostria has opinions, and decisions is being made regarding parts of the Nostr protocol. There are parts that are not implemented and ignored, simply because we disagree.

Here is a list of opinions and decisions made in Nostria:

  • NIP-65: Relay List Metadata - We are ignoring the READ/WRITE flags for relays and all relays are both read and writes.

  • NIP-96: HTTP File Storage Integration - This is a "duplicate" specification to Blossom, that has more features, but is additionally more complex. It allows metadata to be stored with the blob, but Nostria will not support this protocol. File storage server list (kind:10096) is therefore ignored.

  • NIP-58: Badges: Badges should be self-contained on the user's relays. That means both the badge definition and the badge claim should be on the user's relays. This is to ensure that the user has full set of data for their own needs. Maybe Nostria will perform lookup on issuer relays to get updated badge definitions, but this is not a requirement. The user should be able to use the badge without relying on the issuer relay. That means that Nostria will publish both the badge definition and the badge claim to the user's relays.

  • NIP-B0: Web Bookmarking. We are not implementing this NIP, as this is something better left to the web browser.

Scaling Nostr

Nostria is designed to help Nostr scale. It is implementing the protocol in a way that focuses on decentralization and scalability.

Read more about the journey to scale Nostr globally:

Scaling Nostr
Discover Relays

Recommended IDE Setup

VS Code + Tauri + rust-analyzer + Angular Language Service.

Run from Code

Clone the repository. Install dependencies:

npm ci --legacy-peer-deps

--legacy-peer-deps is currently required because the existing lockfile includes a peer dependency conflict around @nostrability/schemata and the repository's TypeScript version.

Start the development server:

npm start

Alternative if you want to run the desktop app:

npm run tauri:dev

Native Build

Build a local desktop installer from the bundled Angular app:

npm ci --legacy-peer-deps
npm run tauri:build

Manual Linux build

Install a current stable Rust toolchain first. The checked-in src-tauri/Cargo.lock uses lockfile format 4, so older Cargo releases such as cargo 1.59.0 will fail to parse it.

Recommended setup with rustup:

curl https://sh.rustup.rs -sSf | sh
rustup update stable
rustup default stable
cargo --version

Use a recent stable toolchain here. cargo 1.59.0 is too old for this project.

On Ubuntu/Debian, install the native dependencies required by Tauri before building:

sudo apt-get update
sudo apt-get install -y \
  build-essential \
  libappindicator3-dev \
  libgtk-3-dev \
  librsvg2-dev \
  libssl-dev \
  libwebkit2gtk-4.1-dev \
  patchelf

Then build the Linux bundles:

npm ci --legacy-peer-deps
npm run tauri:build:linux

This produces AppImage and .deb installers under src-tauri/target/release/bundle/.

Platform-specific installer commands:

npm run tauri:build:linux
npm run tauri:build:windows
npm run tauri:build:macos

Generated installers are written to src-tauri/target/**/release/bundle/.

Mobile Build

bubblewrap init --manifest https://nostria.app/manifest.webmanifest --drectory=src-android

bubblewrap build

ZapStore

# Make sure the signing method is added to the .env file

go install github.com/zapstore/zsp@latest

./zsp publish

# Preview using a local web browser.
# Verify the events before publishing.

Classifications

  • Accounts - List of accounts that the user has access to.
  • Account - This is accounts of the user within the app.
  • Users - This is Nostr users. "User" and "Users" refer to Nostr users, not the current user of the app.

Developer Notes

SVG to ICO: https://redketchup.io/icon-converter

Sizes: 16, 32, 48, 180, 192, 512

Extract PNG from ICO: https://cloudconvert.com/ico-to-png

App Store Connect

iPad 13" screenshots: 2048 × 2732px Make browser config 1024x1366 with 2x pixel density.

Chrome MCP

https://vscode.dev/redirect/mcp/install?name=io.github.ChromeDevTools%2Fchrome-devtools-mcp&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22chrome-devtools-mcp%22%5D%2C%22env%22%3A%7B%7D%7D

ADB Logs

& "C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe" logcat | Select-String 'AndroidRuntime|RustStdoutStderr|nostria|media-session'
& "C:\Users\user\AppData\Local\Android\Sdk\platform-tools\adb.exe" logcat | Select-String 'app.nostria|MediaSessionPlugin|ExoPlayer|playback_state|RustStdoutStderr'

Run in Emulator in packaged mode

npm run tauri:android:run:packaged:emulator

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

Nostria: Your Social Network. Built for human connections. See your friends again. Nostria is social without the noise.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 72.5%
  • SCSS 13.3%
  • HTML 12.5%
  • JavaScript 0.5%
  • Kotlin 0.4%
  • Swift 0.4%
  • Other 0.4%