Back to all projects

Freely

A decentralized social app built on the Nostr protocol

A social posting platform where there's no central server holding your data — posts, likes, and replies are signed with your own keys and broadcast across a network of relays.

Repository

Freely explores what a social network looks like without a central authority controlling the data. It's built on Nostr, a protocol where identity is a cryptographic keypair and content lives on independent relays instead of one company's servers.

  • Traditional social platforms fully control user identity, data, and moderation.
  • Users have no ownership over their posts or their social graph.
  • There was no simple client to learn and experiment with the Nostr protocol hands-on.

The client signs events locally with the user's private key, then publishes them to a network of relays that other Nostr clients can subscribe to.

Data Flow

User logs in with a private key (no server-side account)

User creates a post, reply, or like in the client

Client signs the event with the user's private key

Signed event is broadcast to configured relays

Other clients subscribe to relays and fetch new events

Feed updates with content pulled directly from relays

Key Architectural Decisions

  • ✓Implemented posting, replying, and liking as signed Nostr events (kinds 0, 1, 5, and 7).
  • ✓Built an identity system based purely on public/private key pairs — no email or password.
  • ✓Connected the client to multiple Nostr relays so content isn't tied to a single point of failure.
  • ✓Designed threaded replies using event tag references, matching how the protocol models conversations.
Node.jsExpress.jsMongoDBNostr ProtocolCryptography
  • Decentralized protocols shift a lot of responsibility — like key management — onto the client and the user.
  • Designing around an event-based model (rather than REST resources) required rethinking how state is fetched and displayed.
  • Working with a real open protocol is a great way to understand distributed systems beyond typical CRUD apps.