Announcing Ditto

Cover Image for Announcing Ditto
Alex Gleason
Alex Gleason

It's finally here. After a year of work, I'm pleased to announce the first release of Ditto! 🎉

Ditto is a Nostr community server. It has a built-in Nostr relay, a web UI, and it implements Mastodon's REST API.

It has moderation. It has spam filters. It has NIP-05 self-service. It has quote posts, emoji reactions, and zaps. ⚡ The scope of this project is absolutely huge. It aims to take everything that's good about Mastodon and implement it on Nostr, with none of the downsides.

A huge thank you to OpenSats for sponsoring this project!

Soapbox on Nostr

One of the first things I wanted to do is make Soapbox work on Nostr. Soapbox is a polished UI for Mastodon that I started developing in 2019. It went on to become the web frontend for Truth Social in 2022. With Ditto, users of Nostr can use Donald Trump's preferred web interface to chat on Nostr — or, customize the design of the client to match your own vibe!

Example Ditto Home Page
Try it out at ditto.pub!

50+ Mastodon Apps

Since Ditto implements the Mastodon API, it can work with any Mastodon app!

Viewing Nostr through the official Mastodon Android app.

Starting a Server

Ditto is designed to be easy for people to self-host. The goal is for people to build curated communities on many different domains.

Read the docs to set up your own server!

Usernames

Ditto offers self-service of NIP-05 names on the domain.

Users can request a name, and then admins will have the opportunity to approve or deny the request. If approved, the user will be granted the name, and their posts will be promoted throughout the UI.

Set your identity on Ditto
Choose how to be identified on your home Ditto server

Domain Feeds

Ditto can display a feed of posts from any domain name. Check out nostrplebs.com or fiatjaf.com for examples.

Example Ditto Local Feed
Anyone with a NIP-05 on the server's domain shows in the Local Feed

Moderation

Each Ditto server can have a group of moderators and admins who manage the server. They can view reports, delete posts, and approve or reject users. Ditto offers the most robust moderation tools of any Nostr relay I'm aware of.

Ditto trends
Sample admin report queue on Ditto

Spam Filters

Ditto has a policy plugin system that allows people to write custom scripts in TypeScript to reject any event. Check out Ditto Moderation Policies for more information!

Trends

Ditto analyzes the events in your database and generates trends. It tracks trending hashtags, users, and posts to improve discoverability.

Since the data is public, any client can utilize it. For example, Coracle custom feeds have already been implemented using Ditto trends!

Ditto trends
Trending posts and people on ditto.pub

Search

Ditto ships with full-text search enabled in Postgres, helping users quickly find people and posts. Users of Mastodon and Pleroma will be happy to see search functionality that actually works. 😂

Searching "ditto" on Ditto
Searching "ditto" on Ditto

Zaps

Zaps, small Bitcoin transactions sent over the lightning network, have become central to the Nostr ecosystem. Ditto implements zaps on user profiles and posts. In future releases, we plan to add optional zaps to the selfservice NIP-05 username system, allowing Ditto admins to monetize their platforms.

Zap on Ditto
Zap on Ditto

Nostr Relay

Each Ditto server exposes a Nostr relay at /relay.

This is a fully-featured relay, with careful support for NIP-01 and much more, including NIP-50 search filters, deletions, COUNT's, and custom tag indexes.

Media Attachments

Ditto supports various options for uploading media, including:

  • nostr.build
  • IPFS
  • Blossom
  • S3 (or any other S3-compatible service)

Check the docs for more information.

Fully Customizable Themes

Ditto allows admins to feature help define their server's unique identity adding custom themes and logos. Define your entire color scheme through a single hex code, applicable seamlessly across both light and dark themes. Or, manually select each color for maximum personalization!

Custom theme editing on Ditto
Custom theme editing on Ditto

Technical Overview

Ditto is built in Deno with TypeScript. It's basically a REST API with a built-in Nostr relay. This is the same design as Mastodon and Pleroma, replacing ActivityPub with Nostr.

Under the hood it uses Postgres. And it was built for and with Nostrify.

Soapbox + Ditto
Learn more

Signing Events

Users on Nostr control their own private keys, allowing them to sign into any client. Authorization in Ditto is done through NIP-46 remote signing, so users keys never directly touch Ditto.

Even Soapbox implements NIP-46 so it can act as the remote signer. Keys may be stored in the browser, or in a browser extension like Alby for the best security.

NIP-46 signing
Ditto signs events with NIP-46. Learn more.

Flagship Ditto Communities

The most important thing about Ditto is the ability for people to freely build, manage, and monetize their communities on Nostr. This is why the Fediverse has continued to thrive for over a decade despite the limitations of the protocol. We're lauching Ditto with three flagship servers to kickstart community development:

ditto.pub

Ditto.pub is the official flagship server of Ditto, running the stable latest version. It is open to anyone, with light moderation. We welcome curious Nostr and Fediverse users to reserve their free username on Ditto now!

henhouse.social

Henhouse.social is a women-only Ditto community opperated by M. K. Fain, owner of the largest feminist server on the Fediverse. This server will prioritize building community among women, while remaining connected to the larger Nostr community.

gleasonator.dev

Gleasonator.dev is the primary development server for Soapbox and Ditto. Join it to test out all the latest features before they are launched to the public!

Creator Program

The Ditto Creator Incubator empowers emerging creators by providing them with resources, support, and exposure to build and monetize their social community on Nostr. The program offers creators a unique opportunity to focus on their content without the constraints of traditional social media algorithms and censorship. Participants receive personalized onboarding, support for setting up Bitcoin micropayments with lighting, and promotion across multiple channels.

Apply to the Ditto Creator Incubator →

What Next?

This early release includes everything that we think is important to make Ditto what it is. However, we know we still have a lot to improve and exciting ideas for the future! Here's our to do for the forseeable future:

Improvements

  • Bug and UX improvements
  • Performance and stability
  • Improve compatability with Mastodon apps
  • Fix server downtime when relays restart
  • Improve Alby support for multiple accounts
  • View all known issues →

New Features

Mentorship

Supporting the growth of the open source development community is at the heart of our work at Soapbox. I am very proud that this past year has enabled me to provide mentorship to two young software developers, Patrick dos Reis of Brazil and shantaram of India. Their contributions in the past few months have been immeasurable, and I could not be more grateful to have them on the Soapbox team.

Want to get involved? Learn more about mentorships at Soapbox.

Special Thanks

I would like to give a special thanks to everyone who has made this past year possible: fiatjaf, for all your advice and support; the Soapbox community for being my early testers; and the generous people of the Nostr and Bitcoin community for allowing me to do this work. And, finally, a very special thanks to my wonderful, beautiful, kind, smart, and funny wife for all of her love, patience, and work to help my dreams come true. 😘

Last edited .

Like what we do?

Soapbox is open source software, and we rely on generous donations from community members like you. ❤️