Skip to content

TimeWarpEngineering/nostria

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4,937 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.

Installation

Nostria is accessible as both web app and desktop app.

Web: https://nostria.app

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

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 install

Start the development server:

npm start

Alternative if you want to run the desktop app:

npm run tauri dev

Native Build

Template created! To get started run: cd nostria npm install npm run tauri android init

For Desktop development, run: npm run tauri dev

For Android development, run: npm run tauri android dev

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

Token for Loop

https://github.com/settings/personal-access-tokens

Specific to the repo. Issues (read/write).

setx GITHUB_TOKEN "ghp_yourTokenHere"

echo %GITHUB_TOKEN%

Loop

# Process all tasks labeled "ready" in the GitHub repository, and create a branch and PR for each task.
ralphy --opencode --model github-copilot/claude-opus-4.6 --github nostria-app/nostria --github-label "ready"


ralphy --opencode --model opencode/glm-4.7-free "task"

ralphy --github owner/repo
ralphy --github owner/repo --github-label "ready"

ralphy --parallel                  # 3 agents default
ralphy --parallel --max-parallel 5 # 5 agents

ralphy --branch-per-task                # branch per task
ralphy --branch-per-task --create-pr    # + create PRs
ralphy --branch-per-task --draft-pr     # + draft PRs
ralphy --base-branch main               # branch from main

ralphy "test the login flow" --browser    # force enable
ralphy "add checkout" --no-browser        # force disable
ralphy "build feature"                    # auto-detect (default)

When enabled, the AI gets browser commands:

agent-browser open <url> - navigate to URL
agent-browser snapshot - get element refs (@e1, @e2)
agent-browser click @e1 - click element
agent-browser type @e1 "text" - type into input
agent-browser screenshot <file> - capture screenshot


ralphy --copilot --model "claude-opus-4.5" --prd PRD.md -- --allow-all-tools --allow-all-urls --stream on

License

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

About

Making the Nostr protocol accessible to everyone, with a focus on user experience and performance for global scale.

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 72.7%
  • SCSS 13.8%
  • HTML 12.7%
  • JavaScript 0.4%
  • Swift 0.3%
  • PowerShell 0.1%