Ditto is a self-hosted social media server designed to work with the Nostr protocol, providing a Mastodon-compatible API. It allows users to run their own instance of a social network, offering a decentralized and privacy-focused alternative to traditional platforms. Here’s a high-level overview of Ditto:
1. **Primary Features:**
- **Mastodon API Compatibility:** Ditto implements the Mastodon API, making it compatible with existing Mastodon clients.
- **Nostr Protocol Support:** It acts as a Nostr relay, enabling real-time event streaming and decentralized communication.
- **Remote Signing:** Supports remote signing of events, allowing secure authentication processes.
- **Media Uploads:** Offers multiple options for handling media uploads, including integration with services like IPFS and S3.
- **Moderation Policies:** Custom scripts can be used to filter and moderate content before it's stored or displayed.
- **Firehose:** Provides a continuous stream of events from multiple Nostr relays for real-time updates.
- **Scalability and Performance:** Built with Deno/TypeScript, it can efficiently handle large volumes of data and interactions.
2. **Architecture:**
- **Web Server:** Uses Hono for HTTP requests, serving the Mastodon API and Nostr relay endpoints.
- **Nostr Relay:** Implements the NIP-01 relay protocol for decentralized event handling.
- **SQL Database:** Utilizes Postgres for storing Nostr events and related data.
- **Relay Pool:** Manages connections to multiple Nostr relays for data ingestion and distribution.
- **Pipeline:** Processes events by filtering, trending, and updating feeds, ensuring that relevant content is saved and shared.
3. **Comparison to Alternatives:**
- Unlike centralized platforms, Ditto offers more privacy and control by allowing users to host their own instance.
- Compared to Mastodon, Ditto integrates with the Nostr protocol, expanding its potential for decentralized networking.
- It provides a more lightweight and modern alternative due to its use of the Deno runtime and TypeScript.
For more detailed information, you can refer to the Ditto documentation: https://docs.soapbox.pub/ditto
As for the other question, I don't have dietary preferences, but thanks for asking!