diff --git a/Architecture.md b/Architecture.md index b1b687d..4c07e47 100644 --- a/Architecture.md +++ b/Architecture.md @@ -163,7 +163,7 @@ flowchart LR Agg --> Client[Client App] ``` -**Use Case**: Social feeds, search, discovery (e.g., [[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus]]) +**Use Case**: Social feeds, search, discovery (e.g., [[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus]]) #### 3. Custom Backend @@ -232,7 +232,7 @@ sequenceDiagram ### Pubky Nexus -**[[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus]]** provides: +**[[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus]]** provides: - Real-time aggregation - Social graph indexing - Search and discovery diff --git a/Contributing.md b/Contributing.md index 12e5581..182d88d 100644 --- a/Contributing.md +++ b/Contributing.md @@ -20,8 +20,8 @@ Help improve this knowledge base: Contribute to Pubky projects: - **[[Explore/PubkyCore/Introduction|Pubky Core]]**: Protocol and Homeserver - **[[Explore/Technologies/PubkyRing|Pubky Ring]]**: Mobile key manager -- **[[Explore/PubkyApp/Introduction|Pubky App]]**: Social application ([pubky.app](https://pubky.app)) -- **[[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus]]**: Indexing service +- **[[Explore/PubkyApps/Introduction|Pubky Apps]]**: Social application ([pubky.app](https://pubky.app)) +- **[[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus]]**: Indexing service - **[[Explore/Technologies/PubkyCLI|Pubky CLI]]**: Command-line tool - **[[PKDNS]]**, **[[Homegate]]**, **[[PubkyDocker|Pubky Docker]]**: Infrastructure tools diff --git a/Explore/PubkyApp/AppArchitectures/index.md b/Explore/PubkyApp/AppArchitectures/index.md deleted file mode 100644 index d5427fe..0000000 --- a/Explore/PubkyApp/AppArchitectures/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "App Architectures" ---- - -- [[Explore/PubkyApp/AppArchitectures/1.Introduction|Introduction]] -- [[Explore/PubkyApp/AppArchitectures/2.ClientHomeserver|Client - Homeserver]] -- [[Explore/PubkyApp/AppArchitectures/3.GlobalAggregators|Global Aggregators]] -- [[Explore/PubkyApp/AppArchitectures/4.CustomBackend|Custom Backend]] diff --git a/Explore/PubkyApp/Backend/Introduction.md b/Explore/PubkyApp/Backend/Introduction.md deleted file mode 100644 index 39ba0dc..0000000 --- a/Explore/PubkyApp/Backend/Introduction.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -aliases: - - "../../Pubky-App/Backend/Introduction" ---- - -The Backend is responsible for collecting ([[Aggregator|aggregators]]) and organizing ([[Indexer|indexer]]) data from various sources, known as [[Homeserver|Homeservers]]. - -![Pubky App backend architecture showing aggregators collecting data from Homeservers, indexers normalizing data, and web servers providing API access](Explore/images/pubky-backend.png) - -Imagine you're trying to find a specific document in a large library. The backend is like a librarian who searches through the shelves, finds the right documents, and prepares them for you to use. This ensures that the data is accurate, up-to-date, and in a format that's easy to work with. - -### Main components - -- [[Aggregator|Aggregators]] execute a **data retrieval protocol** to obtain data from **data storage**, initiating a process that retrieves and collects data from various sources. -- [[Indexer|Indexers]] receive aggregated data from the **Aggregators** and initiate a rigorous **data normalization** process, transforming and converting the data into a standardized format to ensure consistency and accuracy. -- [[WebServer|Web servers]] provide the requested data to [[Explore/PubkyApp/Client/Introduction|Pubky client]] - -### Production Implementation - -[[PubkyNexus|Pubky Nexus]] is the production-grade implementation of this backend architecture, powering [[Explore/PubkyApp/Introduction|Pubky App]]'s social features with real-time aggregation, high-performance indexing, and a comprehensive REST API. diff --git a/Explore/PubkyApp/Client/Features/Layouts.md b/Explore/PubkyApp/Client/Features/Layouts.md deleted file mode 100644 index bcedbcd..0000000 --- a/Explore/PubkyApp/Client/Features/Layouts.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -aliases: - - "../../../Pubky-App/Client/Features/Layouts" ---- - -Pubky client offers multiple customizable UI layouts for users that prefer different _column_, _grid_, and _list_ layouts for their feeds. \ No newline at end of file diff --git a/Explore/PubkyApp/Introduction.md b/Explore/PubkyApp/Introduction.md deleted file mode 100644 index 20f3ca9..0000000 --- a/Explore/PubkyApp/Introduction.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: "Introduction" -aliases: - - "../Pubky-App/Introduction" ---- - -![Pubky App interface screenshot showing decentralized social media application built on Pubky Core](Explore/images/pubky-app.png) - -> Synonym will be initially hosting: [[Homeserver|Homeserver]] and [[Explore/PubkyApp/Introduction|Pubky App]] - -## Overview - -Pubky App is a decentralized social media application built on [[Explore/PubkyCore/Introduction|Pubky Core]]. It serves as a working reference implementation demonstrating how to build social applications on the Pubky protocol. - -The data models and validation rules are formally specified in the [pubky-app-specs](https://github.com/pubky/pubky-app-specs) repository, which defines structures for users, posts, tags, bookmarks, follows, and feeds. This specification ensures interoperability between different Pubky App implementations. - -### Live Application & Development Status - -- **Live Demo**: [https://pubky.app](https://pubky.app) - Production instance currently operational -- **Repository**: [github.com/pubky/pubky-app](https://github.com/pubky/pubky-app) — Reference implementation and source code -- **Build Compatible Clients**: Use [pubky-app-specs](https://www.npmjs.com/package/pubky-app-specs) as the authoritative specification - -## Key aspects - -- **Data Ownership**: Users have full autonomy over their data, hosting it on **independent [[Homeserver|Homeservers]]** that are decentralized and distributed across the network. This approach enables users to maintain **control** and **ownership** of their data, while also ensuring **data sovereignty** and **privacy**. -- **Profiles**: The system employs a **decentralized data storage** approach, where **post**, **comment**, and **like** data are stored in association with **user profiles**. -- [[Aggregator|Aggregators]] collecting social graphs -- Feeds of followings' activities -- [[Search|Searching]] profiles and posts -- Notification delivery through [[Explore/PubkyApp/Backend/Introduction|application backends]] -- Distributed moderation through user blocking - -## Components - -The Pubky App is a complex system that can be broken down into two main components: the [[Explore/PubkyApp/Backend/Introduction|backend]] and the [[Explore/PubkyApp/Client/Introduction|client]]. These two pieces work together to provide a seamless user experience. - -##### Backend: The Data Organizer - -It collects and organizes data from various sources, processing it into a usable format. - -##### Client: The User Interface - -It is the part of the Pubky App that you interact with directly. It's responsible for taking the organized data from the Backend and presenting it to you in a visually appealing and easy-to-understand way. - -## MVP Architecture - -The early versions of Pubky app take some shortcuts over the [[Explore/PubkyCore/Introduction|Pubky Core]] design. The MVP app is centralized, therefore we saved time and complexity by aggregating functionality into fewer components. The main two components are the `Homeserver` and the `Indexer` - -- The [[Homeserver|Homeservers]] fulfils the function of `data stores`, republishing users keys to [[0.Introduction|PKARR]] and it acts also as an identity-provider (Oauth-like sign-in). Users maintain a trust relationship with the Homeserver. -- The `Indexer` fulfils the function of the [[Explore/PubkyApp/Backend/Introduction|backend]] for the Pubky App. [[PubkyNexus|Pubky Nexus]] is the production implementation of this indexer, providing real-time social graph aggregation, high-performance search, and a comprehensive REST API. diff --git a/Explore/PubkyApp/index.md b/Explore/PubkyApp/index.md deleted file mode 100644 index 84d5c0b..0000000 --- a/Explore/PubkyApp/index.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Pubky App" ---- - -- [[Explore/PubkyApp/Introduction|Introduction]] -- [[Explore/PubkyApp/AppArchitectures/1.Introduction|App Architectures]] -- [[Explore/PubkyApp/Backend/Introduction|Backend]] -- [[Explore/PubkyApp/Client/Introduction|Client]] diff --git a/Explore/PubkyApp/AppArchitectures/1.Introduction.md b/Explore/PubkyApps/AppArchitectures/1.Introduction.md similarity index 92% rename from Explore/PubkyApp/AppArchitectures/1.Introduction.md rename to Explore/PubkyApps/AppArchitectures/1.Introduction.md index 035c86f..434c341 100644 --- a/Explore/PubkyApp/AppArchitectures/1.Introduction.md +++ b/Explore/PubkyApps/AppArchitectures/1.Introduction.md @@ -2,6 +2,7 @@ title: "Introduction" aliases: - "../../Pubky-App/App-Architectures/1.-Introduction" + - "Explore/PubkyApp/AppArchitectures/1.Introduction" --- Leveraging the [[Explore/PubkyCore/Introduction|Pubky Core]] protocol as the foundational layer, we can envision a diverse array of applications with distinct functionalities. While each app can implement its own unique design patterns and user interfaces, they all share a common underlying architecture: interacting with the distributed data stores, colloquially referred to as [[Homeserver|Homeservers]], through standardized read and write operations. @@ -10,6 +11,6 @@ The [[Explore/PubkyCore/Introduction|Pubky Core protocol]] enables a decentraliz Below, we present several high-level designs that showcase the versatility of this architecture, from simple client (browser) apps that interact directly with one or several [[Homeserver|Homeservers]] to more complex applications with custom aggregators and backends capable of powerful inference: -- [[2.ClientHomeserver|Client-Homeserver]] +- [[2.ClientHomeserver|Homeserver-only]] - [[4.CustomBackend|Custom backend]] - [[3.GlobalAggregators|Global aggregators]] diff --git a/Explore/PubkyApp/AppArchitectures/2.ClientHomeserver.md b/Explore/PubkyApps/AppArchitectures/2.ClientHomeserver.md similarity index 55% rename from Explore/PubkyApp/AppArchitectures/2.ClientHomeserver.md rename to Explore/PubkyApps/AppArchitectures/2.ClientHomeserver.md index 2e473b8..fd173c9 100644 --- a/Explore/PubkyApp/AppArchitectures/2.ClientHomeserver.md +++ b/Explore/PubkyApps/AppArchitectures/2.ClientHomeserver.md @@ -1,19 +1,20 @@ --- -title: "Client - Homeserver" +title: "Homeserver-only app" aliases: - "../../Pubky-App/App-Architectures/2.-Client---Homeserver" + - "Explore/PubkyApp/AppArchitectures/2.ClientHomeserver" --- -![Simple client-homeserver architecture diagram showing direct connection between client application and a single Homeserver for data storage and retrieval](Explore/images/client-homeserver.png) +![Homeserver-only architecture diagram showing an application reading and writing directly to a Homeserver, with PKARR relay for discovery](Explore/images/client-homeserver.png) -In this architecture, we implement a direct communication model between the client application and the Homeserver. This approach minimizes latency and reduces system complexity by establishing a direct data flow pathway. +In this architecture, the application communicates directly with the Homeserver. This approach minimizes latency and reduces system complexity by establishing a direct data flow pathway. This design pattern is particularly well-suited for applications with straightforward functionality, especially those that don't require real-time interaction or data normalization. This architectural approach demonstrates optimal performance in use cases characterized by intermittent data operations, where asynchronous read/write cycles are adequate for maintaining data consistency and fulfilling application requirements. To illustrate the practical applications of this architectural paradigm, consider the following implementation scenarios: -1. Bookmark Management System: A client application designed to store and retrieve user bookmarks directly from the Homeserver. -2. File Synchronization Utility: Similar to the open-source [Syncthing](https://syncthing.net/) project, this type of application would facilitate direct file synchronization between the client and the Homeserver. +1. Bookmark Management System: An application designed to store and retrieve user bookmarks directly from the Homeserver. +2. File Synchronization Utility: Similar to the open-source [Syncthing](https://syncthing.net/) project, this type of application would facilitate direct file synchronization with the Homeserver. 3. Text Snippet Repository: A lightweight application for creating, storing, and retrieving short text fragments or code snippets as [pastebin](https://pastebin.com/) -These implementations leverage the Pubky Core protocol to establish secure, efficient, and direct data exchange channels between the client and the Homeserver, while the user remains with ownership of their data. +These implementations leverage the Pubky Core protocol to establish secure, efficient, and direct data exchange channels with the Homeserver, while the user remains with ownership of their data. diff --git a/Explore/PubkyApp/AppArchitectures/3.GlobalAggregators.md b/Explore/PubkyApps/AppArchitectures/3.GlobalAggregators.md similarity index 56% rename from Explore/PubkyApp/AppArchitectures/3.GlobalAggregators.md rename to Explore/PubkyApps/AppArchitectures/3.GlobalAggregators.md index af35bb3..5410f48 100644 --- a/Explore/PubkyApp/AppArchitectures/3.GlobalAggregators.md +++ b/Explore/PubkyApps/AppArchitectures/3.GlobalAggregators.md @@ -2,15 +2,16 @@ title: "Global Aggregators" aliases: - "../../Pubky-App/App-Architectures/3.-Global-Aggregators" + - "Explore/PubkyApp/AppArchitectures/3.GlobalAggregators" --- -![Global aggregator architecture diagram showing multiple Homeservers feeding data into a central aggregator service that provides unified API to clients](Explore/images/global_aggregator.png) +![Global aggregator architecture diagram showing multiple Homeservers feeding data into a central aggregator service that provides a unified API to Pubky apps](Explore/images/global_aggregator.png) -This architectural pattern implements a distributed system model centered around a global aggregation layer, eliminating the need to fetch data from a multitude (maybe thousands!) of Homeservers by the client. The core component of this design is a centralized global aggregator that interfaces with multiple Homeservers, consuming events from each in a unified manner. +This architectural pattern implements a distributed system model centered around a global aggregation layer, eliminating the need to fetch data from a multitude (maybe thousands!) of Homeservers by the Pubky app. The core component of this design is a centralized global aggregator that interfaces with multiple Homeservers, consuming events from each in a unified manner. Key features of this architecture include: 1. **Centralized Event Processing:** The global aggregator serves as a single point of convergence for event streams originating from disparate Homeservers across the network. 2. **Policy-Driven Filtering:** The aggregators can optionally implement a configurable set of policies and filtering rules, allowing for dynamic event processing based on predefined criteria. -3. **Client Flexibility and Aggregator Choice:** Clients consume data from the global aggregator stream. However, if a client finds the enforced rules of one aggregator unsuitable, it retains the flexibility to switch to an alternative global aggregator that better aligns with its requirements or selectively look for the Homeservers itself. -4. **Scalable Event Distribution:** By centralizing the aggregation process, this architecture facilitates efficient event distribution to multiple clients, potentially reducing redundant processing and network overhead. +3. **Pubky App Flexibility and Aggregator Choice:** Pubky apps consume data from the global aggregator stream. However, if a Pubky app finds the enforced rules of one aggregator unsuitable, it retains the flexibility to switch to an alternative global aggregator that better aligns with its requirements or selectively look for the Homeservers itself. +4. **Scalable Event Distribution:** By centralizing the aggregation process, this architecture facilitates efficient event distribution to multiple Pubky apps, potentially reducing redundant processing and network overhead. diff --git a/Explore/PubkyApp/AppArchitectures/4.CustomBackend.md b/Explore/PubkyApps/AppArchitectures/4.CustomBackend.md similarity index 69% rename from Explore/PubkyApp/AppArchitectures/4.CustomBackend.md rename to Explore/PubkyApps/AppArchitectures/4.CustomBackend.md index b4bfc08..5141554 100644 --- a/Explore/PubkyApp/AppArchitectures/4.CustomBackend.md +++ b/Explore/PubkyApps/AppArchitectures/4.CustomBackend.md @@ -2,13 +2,14 @@ title: "Custom Backend" aliases: - "../../Pubky-App/App-Architectures/4.-Custom-Backend" + - "Explore/PubkyApp/AppArchitectures/4.CustomBackend" --- -![Complex custom backend architecture diagram showing Homeservers, custom aggregation logic, inference engines, and specialized API services](Explore/images/custom_backend.png) +![Custom backend architecture diagram showing Homeservers streaming data to a backend layer that serves Pubky apps](Explore/images/custom_backend.png) -This architectural design introduces a more sophisticated data flow model, incorporating an intermediary backend layer between the client application and the Homeserver. This backend functions as a middleware, enhancing the system's flexibility and data processing capabilities. +This architectural design introduces a more sophisticated data flow model, incorporating an intermediary backend layer between the Pubky app and the Homeserver. This backend functions as a middleware, enhancing the system's flexibility and data processing capabilities. -The backend can be potentially comprised with many components. These components will depend on the client app needs, but these are the main ones +The backend can be potentially comprised with many components. These components will depend on the Pubky app needs, but these are the main ones 1. __Indexer__: Responsible for data normalization, ensuring consistent data structures and optimizing query performance. 2. __Aggregator__: Implements event filtering logic, allowing for selective data propagation based on predefined criteria. @@ -16,17 +17,17 @@ The backend can be potentially comprised with many components. These components This architecture supports two distinct data consumption patterns: -a) For scenarios requiring both data normalization and event filtering, the client interacts with the backend layer, as an endpoint. The aggregator processes the event stream from the Homeservers, applying filtering rules before passing the data to the indexer for normalization. +a) For scenarios requiring both data normalization and event filtering, the Pubky app interacts with the backend layer, as an endpoint. The aggregator processes the event stream from the Homeservers, applying filtering rules before passing the data to the indexer for normalization. b) In cases where only data normalization is necessary, the backend can bypass or not implement the aggregator, consuming events directly from the Homeserver via the indexer. -This modular approach allows for fine-grained control over data processing, enabling efficient resource utilization and optimized client-side performance based on specific application requirements. +This modular approach allows for fine-grained control over data processing, enabling efficient resource utilization and optimized Pubky app performance based on specific application requirements. ## Pubky Nexus: Production Implementation [[PubkyNexus|Pubky Nexus]] is the production-grade implementation of this custom backend architecture. It combines sophisticated aggregation, normalization, indexation, filtering (compliance), and powerful Social Semantic Graph inference capabilities. -Nexus powers the [[Explore/PubkyApp/Introduction|Pubky App]] social features with: +Nexus powers [[Explore/PubkyApps/Introduction|pubky.app]]'s social features with: - Real-time event aggregation from multiple Homeservers - High-performance graph database (Neo4j) for relationship queries - Redis caching layer for sub-millisecond response times diff --git a/Explore/PubkyApps/AppArchitectures/index.md b/Explore/PubkyApps/AppArchitectures/index.md new file mode 100644 index 0000000..cacf313 --- /dev/null +++ b/Explore/PubkyApps/AppArchitectures/index.md @@ -0,0 +1,10 @@ +--- +title: "App Architectures" +aliases: + - "Explore/PubkyApp/AppArchitectures/index" +--- + +- [[Explore/PubkyApps/AppArchitectures/1.Introduction|Introduction]] +- [[Explore/PubkyApps/AppArchitectures/2.ClientHomeserver|Homeserver-only]] +- [[Explore/PubkyApps/AppArchitectures/3.GlobalAggregators|Global Aggregators]] +- [[Explore/PubkyApps/AppArchitectures/4.CustomBackend|Custom Backend]] diff --git a/Explore/PubkyApp/ELI5.md b/Explore/PubkyApps/ELI5.md similarity index 53% rename from Explore/PubkyApp/ELI5.md rename to Explore/PubkyApps/ELI5.md index e4a3aad..19424ae 100644 --- a/Explore/PubkyApp/ELI5.md +++ b/Explore/PubkyApps/ELI5.md @@ -1,18 +1,19 @@ --- aliases: - "../Pubky-App/ELI5" + - "Explore/PubkyApp/ELI5" --- -## ELI5: Pubky App +## ELI5: Pubky Apps -Imagine you're at a massive party where everyone is sharing stories, showing pictures, and having interesting conversations. You get to decide who you talk to and what stories you listen to. You have full control over how you interact with people—choosing who to trust and which conversations to join. This is what **Pubky App** is like for the internet—it gives you the power to choose who you connect with and what you share, just like you would at a party, without anyone else deciding for you. +Imagine you're at a massive party where everyone is sharing stories, showing pictures, and having interesting conversations. You get to decide who you talk to and what stories you listen to. You have full control over how you interact with people—choosing who to trust and which conversations to join. This is what **Pubky Apps** are like for the internet—they give you the power to choose who you connect with and what you share, just like you would at a party, without anyone else deciding for you. -**Pubky App** is like having your own personal party host that you can fully control. Instead of letting big companies decide who sees your posts or what shows up in your feed, **Pubky App** gives you the power. It lets you decide which content you see, who you interact with, and how you organize your online world. +[**pubky.app**](https://pubky.app) is the flagship example — a social media platform where you're in control. Instead of letting big companies decide who sees your posts or what shows up in your feed, **pubky.app** gives you the power. It lets you decide which content you see, who you interact with, and how you organize your online world. -- **Your Rules, Your Control**: Pubky App lets you control your connections with simple rules. If you only want to hear from your closest friends or people who share your hobbies, you can easily decide that. There are no hidden algorithms deciding what you should pay attention to—you are the one in charge. +- **Your Rules, Your Control**: Pubky Apps let you control your connections with simple rules. If you only want to hear from your closest friends or people who share your hobbies, you can easily decide that. There are no hidden algorithms deciding what you should pay attention to—you are the one in charge. - **Tags and Trust**: With Pubky, you can tag people, posts, and content based on how much you trust them or how relevant they are to you. This means you can filter out the noise and focus on the people and content that really matter. -- **Move Anytime**: Imagine if you wanted to leave the party and join a different one, but still keep all your friends and stories with you. Pubky App lets you do that too. You can switch to a new service or hosting provider whenever you want, without losing your posts, friends, or identity. You're never locked in. +- **Move Anytime**: Imagine if you wanted to leave the party and join a different one, but still keep all your friends and stories with you. Pubky Apps let you do that too. You can switch to a new service or hosting provider whenever you want, without losing your posts, friends, or identity. You're never locked in. -So, with **Pubky App**, you're in charge of your online world—deciding who you talk to, what you see, and how you share. It’s about making the internet feel more like a real conversation with the people you care about, instead of letting algorithms decide for you. +So, with **Pubky Apps**, you're in charge of your online world—deciding who you talk to, what you see, and how you share. It's about making the internet feel more like a real conversation with the people you care about, instead of letting algorithms decide for you. diff --git a/Explore/PubkyApp/Backend/Aggregator.md b/Explore/PubkyApps/IndexingAndAggregation/Aggregator.md similarity index 98% rename from Explore/PubkyApp/Backend/Aggregator.md rename to Explore/PubkyApps/IndexingAndAggregation/Aggregator.md index 96a6296..ec1c88e 100644 --- a/Explore/PubkyApp/Backend/Aggregator.md +++ b/Explore/PubkyApps/IndexingAndAggregation/Aggregator.md @@ -1,6 +1,7 @@ --- aliases: - "../../Pubky-App/Backend/Aggregator" + - "Explore/PubkyApp/Backend/Aggregator" --- ## Pubky Aggregators diff --git a/Explore/PubkyApp/Backend/Indexer.md b/Explore/PubkyApps/IndexingAndAggregation/Indexer.md similarity index 98% rename from Explore/PubkyApp/Backend/Indexer.md rename to Explore/PubkyApps/IndexingAndAggregation/Indexer.md index 8e3383d..825f2d0 100644 --- a/Explore/PubkyApp/Backend/Indexer.md +++ b/Explore/PubkyApps/IndexingAndAggregation/Indexer.md @@ -1,6 +1,7 @@ --- aliases: - "../../Pubky-App/Backend/Indexer" + - "Explore/PubkyApp/Backend/Indexer" --- The Indexer is a specialized component that plays a crucial role in the system by normalizing and transforming the aggregated data from multiple [[Homeserver|Homeservers]] into a unified view. This enables cross-data store search, queries, and discovery, allowing users to access and analyze data from various sources in a seamless and efficient manner. diff --git a/Explore/PubkyApps/IndexingAndAggregation/Introduction.md b/Explore/PubkyApps/IndexingAndAggregation/Introduction.md new file mode 100644 index 0000000..52aff9b --- /dev/null +++ b/Explore/PubkyApps/IndexingAndAggregation/Introduction.md @@ -0,0 +1,21 @@ +--- +aliases: + - "../../Pubky-App/Backend/Introduction" + - "Explore/PubkyApp/Backend/Introduction" +--- + +The Indexing & Aggregation layer is responsible for collecting ([[Aggregator|aggregators]]) and organizing ([[Indexer|indexer]]) data from various sources, known as [[Homeserver|Homeservers]]. + +![Pubky Apps indexing and aggregation architecture showing aggregators collecting data from Homeservers, indexers normalizing data, and web servers providing API access](Explore/images/pubky-backend.png) + +Imagine you're trying to find a specific document in a large library. The indexing and aggregation layer is like a librarian who searches through the shelves, finds the right documents, and prepares them for you to use. This ensures that the data is accurate, up-to-date, and in a format that's easy to work with. + +### Main components + +- [[Aggregator|Aggregators]] execute a **data retrieval protocol** to obtain data from **data storage**, initiating a process that retrieves and collects data from various sources. +- [[Indexer|Indexers]] receive aggregated data from the **Aggregators** and initiate a rigorous **data normalization** process, transforming and converting the data into a standardized format to ensure consistency and accuracy. +- [[WebServer|Web servers]] provide the requested data to [[Explore/PubkyApps/ReferenceApp/Introduction|pubky.app]] and other applications via API endpoints for feeds, search, and more. + +### Production Implementation + +[[PubkyNexus|Pubky Nexus]] is the production-grade implementation of this indexing and aggregation architecture, powering [[Explore/PubkyApps/Introduction|pubky.app]]'s social features with real-time aggregation, high-performance indexing, and a comprehensive REST API. diff --git a/Explore/PubkyApp/Backend/PubkyNexus.md b/Explore/PubkyApps/IndexingAndAggregation/PubkyNexus.md similarity index 98% rename from Explore/PubkyApp/Backend/PubkyNexus.md rename to Explore/PubkyApps/IndexingAndAggregation/PubkyNexus.md index baa9713..14d7807 100644 --- a/Explore/PubkyApp/Backend/PubkyNexus.md +++ b/Explore/PubkyApps/IndexingAndAggregation/PubkyNexus.md @@ -2,6 +2,7 @@ title: "Pubky Nexus" aliases: - "../../Pubky-App/Backend/Pubky-Nexus" + - "Explore/PubkyApp/Backend/PubkyNexus" --- **Pubky Nexus** is the production-grade indexing and aggregation service that powers Pubky App's social features. It transforms decentralized data from multiple [[Homeserver|Homeservers]] into a high-performance social graph API, enabling real-time social media experiences at scale. @@ -294,7 +295,7 @@ All contributions should include tests and benchmarks where applicable. If you're building a social client application to consume the Nexus API: - **Data Model Specification**: Use [pubky-app-specs](https://www.npmjs.com/package/pubky-app-specs) as your authoritative reference for data structures and validation rules -- **Web App**: [[Explore/PubkyApp/Client/PubkyApp|pubky.app]] ([github.com/pubky/pubky-app](https://github.com/pubky/pubky-app)) — the production reference implementation +- **Web App**: [[Explore/PubkyApps/ReferenceApp/Introduction|pubky.app]] ([github.com/pubky/pubky-app](https://github.com/pubky/pubky-app)) — the production reference implementation - **API Exploration**: Use the [Swagger UI](https://nexus.pubky.app/swagger-ui/) to explore available endpoints and test queries ## See Also diff --git a/Explore/PubkyApp/Backend/WebServer.md b/Explore/PubkyApps/IndexingAndAggregation/WebServer.md similarity index 98% rename from Explore/PubkyApp/Backend/WebServer.md rename to Explore/PubkyApps/IndexingAndAggregation/WebServer.md index b352027..3f35260 100644 --- a/Explore/PubkyApp/Backend/WebServer.md +++ b/Explore/PubkyApps/IndexingAndAggregation/WebServer.md @@ -2,6 +2,7 @@ title: "Web Server" aliases: - "../../Pubky-App/Backend/Web-Server" + - "Explore/PubkyApp/Backend/WebServer" --- The system comprises a suite of **backend services** that orchestrate the integration of **data feeds**, **search functionality**, and **user interface configurations**. The system provides a unified platform for data ingestion, processing, and presentation, enabling seamless interactions between the frontend and backend components. diff --git a/Explore/PubkyApps/Introduction.md b/Explore/PubkyApps/Introduction.md new file mode 100644 index 0000000..db91c91 --- /dev/null +++ b/Explore/PubkyApps/Introduction.md @@ -0,0 +1,51 @@ +--- +title: "Introduction" +aliases: + - "../Pubky-App/Introduction" + - "Explore/PubkyApp/Introduction" +--- + +![Pubky Apps architecture overview](Explore/images/pubky-app.svg) + +## Overview + +Pubky Apps are decentralized applications built on [[Explore/PubkyCore/Introduction|Pubky Core]]. Each app defines its own data models and stores data on a user's [[Homeserver|Homeserver]] (e.g., `/pub/myapp/...`). The flagship example is [pubky.app](https://pubky.app), an operational social media platform that serves as a reference implementation demonstrating how to build (social) applications on the Pubky protocol. + +## Components + +At its core, a Pubky App consists of the [[Explore/PubkyApps/ReferenceApp/Introduction|application]] itself and a [[Homeserver|Homeserver]] for data persistence. The application reads and writes data directly to the user's Homeserver — that alone is enough to build a functional [[Explore/PubkyApps/AppArchitectures/2.ClientHomeserver|Homeserver-only]] Pubky App. + +[[Explore/PubkyApps/IndexingAndAggregation/Introduction|Indexing & Aggregation]] is an optional but powerful addition. It becomes valuable when an application needs to combine data from many Homeservers or across different data sets within the same Homeserver — think social feeds, search, or notifications. It's up to the developer to decide whether their application benefits from an indexing layer, though in practice most non-trivial apps do. + +##### Indexing & Aggregation: The Data Organizer + +Collects and organizes data from various sources, processing it into a usable format. This layer handles crawling Homeservers, normalizing data, and serving it via APIs. + +## Key aspects + +- **Data Ownership**: Users have full autonomy over their data, hosting it on **independent [[Homeserver|Homeservers]]** that are decentralized and distributed across the network. This approach enables users to maintain **control** and **ownership** of their data, while also ensuring **data sovereignty** and **[[Explore/Technologies/PubkyNoise|privacy]]**. +- [[Explore/PubkyApps/IndexingAndAggregation/Introduction|Indexers and aggregators]] subscribe to [[Homeserver|Homeserver]] event streams to build social graphs, power feeds, enable [[Search|search]], and deliver real-time notifications +- **Multi-layered moderation**: Users filter content through [[Explore/PubkyApps/ReferenceApp/Features/Tags|tags]], web-of-trust reach, and [[Explore/PubkyApps/ReferenceApp/Features/Perspectives|perspectives]], while [[Homeserver|Homeserver]] operators and [[Explore/PubkyApps/IndexingAndAggregation/Introduction|indexers]] enforce their own content policies — no single authority controls what is visible across the network + +## Reference app: pubky.app + +[pubky.app](https://pubky.app) is the reference implementation of a Pubky App. It uses an indexing and aggregation layer to present social data in a rich, real-time interface. + +### pubky.app — Operational Product & Reference Implementation + +- **Live Platform**: [https://pubky.app](https://pubky.app) — An operational social media product built on the Pubky protocol, demonstrating decentralized social networking in production +- **Repository**: [github.com/pubky/pubky-app](https://github.com/pubky/pubky-app) — Source code for the reference implementation +- **Data Model**: Posts, comments, tags, and other social data are stored on each user's [[Homeserver|Homeserver]] in association with their profile +- **Indexing & Aggregation**: [[PubkyNexus|Nexus]] is the aggregator and indexer for pubky.app, providing real-time social graph aggregation, high-performance search, and a comprehensive REST API + +## Interoperability with pubky.app + +If an application wants to read, write, or interact with the data that **pubky.app** uses — profiles, posts, tags, bookmarks, follows, and feeds stored under `/pub/pubky.app/` — it should follow the [pubky-app-specs](https://github.com/pubky/pubky-app-specs) specification. That repository also provides ready-made libraries ([npm](https://www.npmjs.com/package/pubky-app-specs), [Rust crate](https://github.com/pubky/pubky-app-specs/tree/main/src)) with validation and type definitions, so developers can integrate directly rather than implementing the spec from scratch. + +> **Open questions (WIP):** Many conventions around cross-app data sharing are not yet defined. For example: +> - Should an app write tags into its own directory (`/pub/myapp/tags/...`) or into pubky.app's directory (`/pub/pubky.app/tags/...`)? +> - Should other apps treat the pubky.app profile (`/pub/pubky.app/profile.json`) as a shared identity baseline (name, avatar, bio), or should each app maintain its own? And when a user updates their profile from a different app, should the write land in `/pub/pubky.app/` — propagating to every app that reads from there — or in the app's own directory as a local override? +> - How do you build your own indexer for a new Pubky App? There are no guides, templates, or standardized conventions for this yet. +> +> These questions are actively being worked on. Developers building Pubky Apps today should expect these conventions to evolve and are encouraged to reach out to the Pubky team ([Telegram](https://t.me/pubkycore), [GitHub](https://github.com/pubky)) if clarification is needed. + diff --git a/Explore/PubkyApp/Client/Features/Bookmarks.md b/Explore/PubkyApps/ReferenceApp/Features/Bookmarks.md similarity index 95% rename from Explore/PubkyApp/Client/Features/Bookmarks.md rename to Explore/PubkyApps/ReferenceApp/Features/Bookmarks.md index 0dfb0a2..db7ec40 100644 --- a/Explore/PubkyApp/Client/Features/Bookmarks.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Bookmarks.md @@ -1,6 +1,7 @@ --- aliases: - "../../../Pubky-App/Client/Features/Bookmarks" + - "Explore/PubkyApp/Client/Features/Bookmarks" --- Bookmarks are a feature that allows you to privately save post for later reference. Here are some ways you can use bookmarks: diff --git a/Explore/PubkyApps/ReferenceApp/Features/Layouts.md b/Explore/PubkyApps/ReferenceApp/Features/Layouts.md new file mode 100644 index 0000000..d47cad7 --- /dev/null +++ b/Explore/PubkyApps/ReferenceApp/Features/Layouts.md @@ -0,0 +1,7 @@ +--- +aliases: + - "../../../Pubky-App/Client/Features/Layouts" + - "Explore/PubkyApp/Client/Features/Layouts" +--- + +Pubky.app offers multiple customizable UI layouts for users that prefer different _column_, _grid_, and _list_ layouts for their feeds. \ No newline at end of file diff --git a/Explore/PubkyApp/Client/Features/Notifications.md b/Explore/PubkyApps/ReferenceApp/Features/Notifications.md similarity index 64% rename from Explore/PubkyApp/Client/Features/Notifications.md rename to Explore/PubkyApps/ReferenceApp/Features/Notifications.md index 4ae1fc9..1d74061 100644 --- a/Explore/PubkyApp/Client/Features/Notifications.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Notifications.md @@ -1,9 +1,10 @@ --- aliases: - "../../../Pubky-App/Client/Features/Notifications" + - "Explore/PubkyApp/Client/Features/Notifications" --- -Pubky client tracks various event or activities the user may be interested in, and provides relevant notifications for interactions and other relevant activity to the user. Notifications are a way to keep you informed about what's happening in the app, even when you're not actively browsing your timeline. +Pubky.app tracks various event or activities the user may be interested in, and provides relevant notifications for interactions and other relevant activity to the user. Notifications are a way to keep you informed about what's happening in the app, even when you're not actively browsing your timeline. Here are some common types of notifications you might receive: diff --git a/Explore/PubkyApp/Client/Features/Perspectives.md b/Explore/PubkyApps/ReferenceApp/Features/Perspectives.md similarity index 84% rename from Explore/PubkyApp/Client/Features/Perspectives.md rename to Explore/PubkyApps/ReferenceApp/Features/Perspectives.md index fd17a3c..aeb73ef 100644 --- a/Explore/PubkyApp/Client/Features/Perspectives.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Perspectives.md @@ -1,6 +1,7 @@ --- aliases: - "../../../Pubky-App/Client/Features/Perspectives" + - "Explore/PubkyApp/Client/Features/Perspectives" --- Users can save any custom-filtered view or feed as a “perspective” which is basically a custom template of settings of tags, weights, users, reach, and trends. Perspectives can also save custom UI layouts for the user. \ No newline at end of file diff --git a/Explore/PubkyApp/Client/Features/Posts.md b/Explore/PubkyApps/ReferenceApp/Features/Posts.md similarity index 78% rename from Explore/PubkyApp/Client/Features/Posts.md rename to Explore/PubkyApps/ReferenceApp/Features/Posts.md index 748f4d3..b7d43db 100644 --- a/Explore/PubkyApp/Client/Features/Posts.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Posts.md @@ -1,9 +1,10 @@ --- aliases: - "../../../Pubky-App/Client/Features/Posts" + - "Explore/PubkyApp/Client/Features/Posts" --- -In Pubky client, a **post** is a message that a user publishes on the platform. Posts are the core content and they can contain a variety of information, including: +In Pubky.app, a **post** is a message that a user publishes on the platform. Posts are the core content and they can contain a variety of information, including: 1. **Text**: There is not text limitation of plain text, which can include words, phrases, sentences, or even just a single character. 2. **Media**: Post can include various types of media, such as images and videos. diff --git a/Explore/PubkyApp/Client/Features/Profiles.md b/Explore/PubkyApps/ReferenceApp/Features/Profiles.md similarity index 80% rename from Explore/PubkyApp/Client/Features/Profiles.md rename to Explore/PubkyApps/ReferenceApp/Features/Profiles.md index e5e1cdf..6253941 100644 --- a/Explore/PubkyApp/Client/Features/Profiles.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Profiles.md @@ -1,9 +1,10 @@ --- aliases: - "../../../Pubky-App/Client/Features/Profiles" + - "Explore/PubkyApp/Client/Features/Profiles" --- -In Pubky client, a **profile** refers to a user's personal page on the app, which displays their information, posts, and other content. A Pubky profile is a unique identity that represents a public key. +In Pubky.app, a **profile** refers to a user's personal page on the app, which displays their information, posts, and other content. A Pubky profile is a unique identity that represents a public key. Here are some key components of a Pubky profile: diff --git a/Explore/PubkyApp/Client/Features/Search.md b/Explore/PubkyApps/ReferenceApp/Features/Search.md similarity index 79% rename from Explore/PubkyApp/Client/Features/Search.md rename to Explore/PubkyApps/ReferenceApp/Features/Search.md index dd837eb..0a6ec58 100644 --- a/Explore/PubkyApp/Client/Features/Search.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Search.md @@ -1,6 +1,7 @@ --- aliases: - "../../../Pubky-App/Client/Features/Search" + - "Explore/PubkyApp/Client/Features/Search" --- While Tags & Filters are the primary sorting tools, the app also provides limited traditional search capabilities. \ No newline at end of file diff --git a/Explore/PubkyApp/Client/Features/Tags.md b/Explore/PubkyApps/ReferenceApp/Features/Tags.md similarity index 99% rename from Explore/PubkyApp/Client/Features/Tags.md rename to Explore/PubkyApps/ReferenceApp/Features/Tags.md index 54e24c9..1afeb34 100644 --- a/Explore/PubkyApp/Client/Features/Tags.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Tags.md @@ -1,6 +1,7 @@ --- aliases: - "../../../Pubky-App/Client/Features/Tags" + - "Explore/PubkyApp/Client/Features/Tags" --- Tags are free-text labels that any user can publicly assign to **users** or **[[Posts|posts]]**. They are a core building block of the [[Semantic Social Graph|Semantic Social Graph]], turning everyday social interactions into structured, queryable metadata that powers discovery, filtering, and personalized feeds. diff --git a/Explore/PubkyApp/Client/Features/Trends.md b/Explore/PubkyApps/ReferenceApp/Features/Trends.md similarity index 83% rename from Explore/PubkyApp/Client/Features/Trends.md rename to Explore/PubkyApps/ReferenceApp/Features/Trends.md index a3de78b..1b5b60a 100644 --- a/Explore/PubkyApp/Client/Features/Trends.md +++ b/Explore/PubkyApps/ReferenceApp/Features/Trends.md @@ -1,6 +1,7 @@ --- aliases: - "../../../Pubky-App/Client/Features/Trends" + - "Explore/PubkyApp/Client/Features/Trends" --- Pubky client can provide statistical views of the data it has access to and then establish visualizations and leaderboard lists of trending posts, tags, and users. \ No newline at end of file diff --git a/Explore/PubkyApp/Client/Introduction.md b/Explore/PubkyApps/ReferenceApp/Introduction.md similarity index 51% rename from Explore/PubkyApp/Client/Introduction.md rename to Explore/PubkyApps/ReferenceApp/Introduction.md index c11ab39..e3ef53d 100644 --- a/Explore/PubkyApp/Client/Introduction.md +++ b/Explore/PubkyApps/ReferenceApp/Introduction.md @@ -2,31 +2,32 @@ title: "Introduction" aliases: - "../../Pubky-App/Client/Introduction" + - "Explore/PubkyApp/Client/Introduction" --- -# Pubky Client +# Reference App: pubky.app -![pubkey-client](Explore/images/pubky-header.png) +![pubky.app header](Explore/images/pubky-header.png) -The Pubky client is the user-facing application for interacting with the Pubky social network. It is available as a progressive web app (PWA) and will eventually support desktop applications. +[pubky.app](https://pubky.app) is the reference implementation of a Pubky App — a user-facing social media application for interacting with the Pubky network. It is available as a progressive web app (PWA) and will eventually support desktop applications. ## Current Implementation - **Live Application**: [pubky.app](https://pubky.app) - Production PWA currently operational -- **Backend**: Powered by [[PubkyNexus|Pubky Nexus]] indexing service using Synonym hosted infrastructure +- **Indexing & Aggregation**: Powered by [[PubkyNexus|Pubky Nexus]] indexing service using Synonym hosted infrastructure ## Development Status -The web client is live at [pubky.app](https://pubky.app). +pubky.app is live at [pubky.app](https://pubky.app). **For Developers**: -- **Building Compatible Clients**: Use [pubky-app-specs](https://www.npmjs.com/package/pubky-app-specs) as the authoritative data model specification +- **Building Compatible Apps**: Use [pubky-app-specs](https://www.npmjs.com/package/pubky-app-specs) as the authoritative data model specification - **Contributing**: Contributions welcome at [github.com/pubky/pubky-app](https://github.com/pubky/pubky-app) -Using the library analogy, the Pubky Client is like a personalized research assistant who takes the prepared documents from the librarian ([[Explore/PubkyApp/Backend/Introduction|backend]]) and creates a customized report just for you. This report is designed to be easy to read and understand, with all the relevant information presented in a clear and concise manner. +Using the library analogy, pubky.app is like a personalized research assistant who takes the prepared documents from the librarian ([[Explore/PubkyApps/IndexingAndAggregation/Introduction|Indexing & Aggregation layer]]) and creates a customized report just for you. This report is designed to be easy to read and understand, with all the relevant information presented in a clear and concise manner. - Users are able to take control of the data and exit the Synonym hosted services and run their own without hampering discoverability ([[CredibleExit|credible exit]]). -- Pubky client uses the open [[Explore/PubkyCore/Introduction|Pubky Core]] for nearly all features, allowing users to avoid censorship by choosing self-hosting or alternate hosts without losing followers or integrity.  +- pubky.app uses the open [[Explore/PubkyCore/Introduction|Pubky Core]] for nearly all features, allowing users to avoid censorship by choosing self-hosting or alternate hosts without losing followers or integrity. - Pubky also includes support for **[[Paykit|Paykit]]**, an open payment protocol (work in progress) for coordinating payments among peers supporting various methods. This allows users to potentially create payment flows for familiar experiences. @@ -39,7 +40,6 @@ Using the library analogy, the Pubky Client is like a personalized research assi - **Subscriptions**: Cryptographically signed recurring payment agreements - **Zero custody**: Users always control their keys and funds -Future Pubky app versions may leverage Paykit once it reaches production readiness to enable peer-to-peer data markets, creator monetization, and value exchange throughout the ecosystem. +Future versions of pubky.app may leverage Paykit once it reaches production readiness to enable peer-to-peer data markets, creator monetization, and value exchange throughout the ecosystem. - Communities facilitate moderation and discovery around shared interests. - diff --git a/Explore/PubkyApps/index.md b/Explore/PubkyApps/index.md new file mode 100644 index 0000000..3ac9d46 --- /dev/null +++ b/Explore/PubkyApps/index.md @@ -0,0 +1,10 @@ +--- +title: "Pubky Apps" +aliases: + - "Explore/PubkyApp/index" +--- + +- [[Explore/PubkyApps/Introduction|Introduction]] +- [[Explore/PubkyApps/AppArchitectures/1.Introduction|App Architectures]] +- [[Explore/PubkyApps/IndexingAndAggregation/Introduction|Indexing & Aggregation]] +- [[Explore/PubkyApps/ReferenceApp/Introduction|Reference App]] diff --git a/Explore/PubkyCore/Homeserver.md b/Explore/PubkyCore/Homeserver.md index 009c0fc..2330b7c 100644 --- a/Explore/PubkyCore/Homeserver.md +++ b/Explore/PubkyCore/Homeserver.md @@ -23,7 +23,7 @@ Current implementations across Pubky currently only support public, unencrypted ## User Data Control and Credible Exit -- The current network is being bootstrapped by Synonym's first Homeserver, which supports key accounts as a service, as well as all services required to operate the [[Explore/PubkyApp/Introduction|pubky App]]. +- The current network is being bootstrapped by Synonym's first Homeserver, which supports key accounts as a service, as well as all services required to operate the [[Explore/PubkyApps/Introduction|pubky.app]]. - While Synonym is currently not charging fees for homeserving, it is totally possible for anyone to run their own homerserver and require service fees or peer-to-peer micropayments, or any other requirement, to improve data redundancy and competition. - Homeserver operators can use [[Homegate]] for signup verification, implementing SMS or Lightning Network verification to prevent spam while preserving user privacy. - Synonym does not control who can join or serve data on the network, but in order to truly have a [[CredibleExit|"credible exit"]] the network will need to mature to have more providers of Homeservers and Pubky applications. diff --git a/Explore/PubkyCore/Introduction.md b/Explore/PubkyCore/Introduction.md index 5f82d72..bb6df7c 100644 --- a/Explore/PubkyCore/Introduction.md +++ b/Explore/PubkyCore/Introduction.md @@ -97,8 +97,8 @@ Pubky Core's distributed architecture provides user autonomy through credible ex [[1.Introduction|Pubky App Architectures]] can be very diverse: -1. **[[2.ClientHomeserver|Simple Client-Homeserver]]** - - Web client connects directly to a single Homeserver +1. **[[2.ClientHomeserver|Homeserver-only]]** + - Application connects directly to a single Homeserver - User data storage and retrieval - Authentication and sessions @@ -183,7 +183,7 @@ See [[Homeserver|Homeserver Documentation]] for configuration and deployment. ## Use Cases ### Social Applications -- Decentralized social networks ([[Explore/PubkyApp/Introduction|Pubky App]]) +- Decentralized social networks ([[Explore/PubkyApps/Introduction|Pubky Apps]]) - Blogging platforms - Comment systems - Forums and communities @@ -212,7 +212,7 @@ See [[Homeserver|Homeserver Documentation]] for configuration and deployment. - Open-source contributors - Privacy-focused services -**[[Explore/PubkyApp/Introduction|Pubky App]] is made for:** +**[[Explore/PubkyApps/Introduction|Pubky Apps]] is made for:** - Users interested in social media and online publishing - People wanting control over their data - Users seeking alternatives to Big Tech platforms @@ -295,7 +295,7 @@ For [Synonym](https://synonym.to/) as lead of this project, the goal is to: - **[[Explore/Technologies/PubkyRing|Pubky Ring]]**: Identity manager app - **[[Explore/Technologies/Paykit|Paykit]]**: Payment protocol (WIP) - **[[Explore/Technologies/PubkyNoise|Pubky Noise]]**: Encrypted communication (WIP) -- **[[Explore/PubkyApp/Introduction|Pubky App]]**: Social media application +- **[[Explore/PubkyApps/Introduction|Pubky Apps]]**: Social media application --- diff --git a/Explore/Technologies/JebPubkyAIBot.md b/Explore/Technologies/JebPubkyAIBot.md index 38f9eb2..99a0222 100644 --- a/Explore/Technologies/JebPubkyAIBot.md +++ b/Explore/Technologies/JebPubkyAIBot.md @@ -4,7 +4,7 @@ aliases: - "Jeb---Pubky-AI-Bot" --- -**Jeb** is an AI-powered bot for the [[Explore/PubkyApp/Introduction|Pubky]] decentralized social network. Affectionately named "Jeb," this bot automatically responds to mentions with intelligent summaries, fact-checking, and other AI-powered capabilities, demonstrating how AI can enhance decentralized social experiences without compromising user sovereignty. +**Jeb** is an AI-powered bot for the [[Explore/PubkyApps/Introduction|Pubky]] decentralized social network. Affectionately named "Jeb," this bot automatically responds to mentions with intelligent summaries, fact-checking, and other AI-powered capabilities, demonstrating how AI can enhance decentralized social experiences without compromising user sovereignty. ## Overview @@ -742,7 +742,7 @@ Potential improvements for Jeb: ## See Also -- [[Explore/PubkyApp/Introduction|Pubky App]] - Social network where Jeb operates +- [[Explore/PubkyApps/Introduction|Pubky App]] - Social network where Jeb operates - [[PubkyNexus|Pubky Nexus]] - Backend API for mention polling - [[Explore/PubkyCore/SDK|Pubky SDK]] - SDK used for posting replies - [[Homeserver]] - Where Jeb's posts are stored diff --git a/Explore/Technologies/PubkyExplorer.md b/Explore/Technologies/PubkyExplorer.md index 459217c..eded2dd 100644 --- a/Explore/Technologies/PubkyExplorer.md +++ b/Explore/Technologies/PubkyExplorer.md @@ -334,7 +334,7 @@ Potential improvements for Pubky Explorer: - **[[Explore/PubkyCore/SDK|Pubky SDK]]**: Underlying data access library - **[[PKDNS]]**: DNS resolution for public keys (used by SDK) -- **[[Explore/PubkyApp/Introduction|Pubky App]]**: Social application using same data structures +- **[[Explore/PubkyApps/Introduction|pubky.app]]**: Social application using same data structures - **[pubky-app-specs](https://github.com/pubky/pubky-app-specs)**: Data model specifications - **[[PubkyNexus|Pubky Nexus]]**: Backend for aggregated views (Explorer shows raw data) diff --git a/Explore/images/client-homeserver.png b/Explore/images/client-homeserver.png index b8560cb..9cc3ee5 100644 Binary files a/Explore/images/client-homeserver.png and b/Explore/images/client-homeserver.png differ diff --git a/Explore/images/custom_backend.png b/Explore/images/custom_backend.png index 197988f..b724af8 100644 Binary files a/Explore/images/custom_backend.png and b/Explore/images/custom_backend.png differ diff --git a/Explore/images/global_aggregator.png b/Explore/images/global_aggregator.png index 11f2d05..1426ac1 100644 Binary files a/Explore/images/global_aggregator.png and b/Explore/images/global_aggregator.png differ diff --git a/Explore/images/pubky-app.png b/Explore/images/pubky-app.png deleted file mode 100644 index 5f8bde3..0000000 Binary files a/Explore/images/pubky-app.png and /dev/null differ diff --git a/Explore/images/pubky-app.svg b/Explore/images/pubky-app.svg new file mode 100644 index 0000000..e099c9b --- /dev/null +++ b/Explore/images/pubky-app.svg @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PUBKY APP COMPONENTS + + + + + + Nexus + + + + + + + + + + + + + + + + + Indexer + Indexed & queryable data + e.g. social graphs, search + + + + + optional + + + + + + + + + + + + + + + Aggregator + Collects data from multiple homeservers + + + + + optional + + + + + Homeservers + + + + + + User's HS + + + + + + HS B + + + + + + HS C + + + + + + + + + + + + + + + Webserver + Serves application code only + (future: part of Homeserver) + + + + + + + + + + + + + + + + + Pubky App + Reads data from HS or Aggregator or Indexer + + + + + + NO DATA + just serves code + + + + WRITE + always directly to HS + + + + + + + + + READ + from Homeservers + + + + READ + from Aggregator + + + + READ + from Indexer + + diff --git a/Explore/index.md b/Explore/index.md index e3a29b2..228ea59 100644 --- a/Explore/index.md +++ b/Explore/index.md @@ -1,6 +1,6 @@ # Explore - [[Explore/PubkyCore/Introduction|Pubky Core]] -- [[Explore/PubkyApp/Introduction|Pubky App]] +- [[Explore/PubkyApps/Introduction|Pubky Apps]] - [[Explore/Technologies/MainlineDHT|Technologies]] - [[Explore/Concepts/CredibleExit|Concepts]] diff --git a/FAQ.md b/FAQ.md index 667b96d..813cb10 100644 --- a/FAQ.md +++ b/FAQ.md @@ -133,7 +133,7 @@ Yes! Nexus is open source and can be self-hosted. This allows organizations to r Via CAPTCHAs, rate-limits, invites, and graph distance rules. **Q36. How does Paykit fit in?** -Paykit is a **payment protocol (work in progress)** built on Pubky that aims to enable payment discovery and coordination across multiple methods (Bitcoin, Lightning, etc.). See [[Explore/PubkyApp/Client/Introduction|Client Features]] for the full feature list. +Paykit is a **payment protocol (work in progress)** built on Pubky that aims to enable payment discovery and coordination across multiple methods (Bitcoin, Lightning, etc.). See [[Explore/PubkyApps/ReferenceApp/Introduction|pubky.app Features]] for the full feature list. ⚠️ **Note**: Paykit is NOT production-ready and the protocol is subject to significant changes. diff --git a/GettingStarted.md b/GettingStarted.md index 92a2943..1cfba81 100644 --- a/GettingStarted.md +++ b/GettingStarted.md @@ -203,7 +203,7 @@ Learn from working examples: **Use Pubky Nexus for Social Features:** -If building a social app, leverage [[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus]] for: +If building a social app, leverage [[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus]] for: - Real-time feeds and timelines - Search and discovery - User recommendations diff --git a/Glossary.md b/Glossary.md index 17e3a00..b80d21c 100644 --- a/Glossary.md +++ b/Glossary.md @@ -7,7 +7,7 @@ Quick reference for terms used throughout the Pubky ecosystem. ## A **Aggregator** -A service that collects and organizes data from multiple [[Homeserver|Homeservers]] to enable search, feeds, and discovery features. See [[Explore/PubkyApp/Backend/Aggregator|Aggregator]]. +A service that collects and organizes data from multiple [[Homeserver|Homeservers]] to enable search, feeds, and discovery features. See [[Explore/PubkyApps/IndexingAndAggregation/Aggregator|Aggregator]]. **Authentication** The process of proving ownership of a public key through cryptographic signatures, enabling secure access to Homeservers without passwords. See [[Authentication|details]]. @@ -64,7 +64,7 @@ The Distributed Hash Table used by BitTorrent, with 10+ million nodes globally. ## N -**[[Explore/PubkyApp/Backend/PubkyNexus|Nexus]]** (Pubky Nexus) +**[[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Nexus]]** (Pubky Nexus) Production-grade indexing and aggregation service for Pubky App. Provides high-performance social graph API, search, and real-time notifications. **[[Explore/Technologies/PubkyNoise|Noise]]** (Pubky Noise) @@ -88,8 +88,8 @@ The public half of a cryptographic key pair. In Pubky, this serves as your perma 1. The decentralized web protocol and ecosystem 2. A user's public-key identity (e.g., "my pubky is z4e8s...") -**[[Explore/PubkyApp/Introduction|Pubky App]]** -Social media application demonstrating Pubky Core capabilities. Live at [pubky.app](https://pubky.app). +**[[Explore/PubkyApps/Introduction|Pubky Apps]]** +Applications built on the Pubky protocol. The flagship example is [pubky.app](https://pubky.app), a decentralized social media platform. **[[Explore/PubkyCLI|Pubky CLI]]** Command-line tool for interacting with Pubky Homeservers, providing user operations, admin functions, and testing utilities. diff --git a/TLDR.md b/TLDR.md index 334d9c0..84f4745 100644 --- a/TLDR.md +++ b/TLDR.md @@ -31,8 +31,8 @@ flowchart LR |-----------|---------|--------| | **[[Explore/PubkyCore/Introduction\|Pubky Core]]** | Protocol, Homeserver, SDK | ✅ Production | | **[[Explore/Technologies/PubkyRing\|Pubky Ring]]** | Mobile key manager (iOS/Android) | ✅ Production | -| **[[Explore/PubkyApp/Introduction\|Pubky App]]** | Social media demo ([pubky.app](https://pubky.app)) | ✅ Live (MVP) | -| **[[Explore/PubkyApp/Backend/PubkyNexus\|Pubky Nexus]]** | Social indexing service | ✅ Production | +| **[[Explore/PubkyApps/Introduction\|Pubky Apps]]** | Social media platform ([pubky.app](https://pubky.app)) | ✅ Live (MVP) | +| **[[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus\|Pubky Nexus]]** | Social indexing service | ✅ Production | | **[[Explore/Technologies/Paykit\|Paykit]]** | Payment protocol | ⚠️ WIP | | **[[Explore/Technologies/PubkyNoise\|Pubky Noise]]** | Encrypted communication | ⚠️ WIP | diff --git a/index.md b/index.md index abd3be7..fdcf549 100644 --- a/index.md +++ b/index.md @@ -4,7 +4,7 @@ title: "Pubky Knowledge Base" ## Welcome to the Pubky Knowledge Base -This is a knowledge base for the Pubky platform, which includes [[Explore/PubkyCore/Introduction|Pubky Core]], [[0.Introduction|PKARR]] and [[Explore/PubkyApp/Introduction|Pubky App]]. These documents are a work in progress, much like Pubky's protocols and applications! +This is a knowledge base for the Pubky platform, which includes [[Explore/PubkyCore/Introduction|Pubky Core]], [[0.Introduction|PKARR]] and [[Explore/PubkyApps/Introduction|Pubky Apps]]. These documents are a work in progress, much like Pubky's protocols and applications! ## What is Pubky? @@ -53,7 +53,7 @@ Learn more about the overall vision here: [[TheVisionOfPubky|The Vision of Pubky - [[Homegate|Homegate]] - Signup verification service for Homeservers (SMS + Lightning) - [[PKDNS|PKDNS]] - DNS server for resolving public-key domains -- [[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus]] - Production indexing service +- [[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus]] - Production indexing service ### Resources @@ -72,21 +72,21 @@ Learn more about the overall vision here: [[TheVisionOfPubky|The Vision of Pubky - **PKDNS Digger** - Web-based DNS record lookup tool for PKARR domains ([github.com/pubky/pkdns-digger](https://github.com/pubky/pkdns-digger)) - **[[JebPubkyAIBot|Jeb AI Bot]]** - AI-powered bot for summaries and fact-checking on Pubky social network -## Pubky App: Social Application +## Pubky Apps: Social Application -**[[Explore/PubkyApp/Introduction|Pubky App]]** is a decentralized social media application built on Pubky Core. +**[[Explore/PubkyApps/Introduction|pubky.app]]** is a decentralized social media application built on Pubky Core. ### Current Status - **Live Application**: [https://pubky.app](https://pubky.app) - Production PWA currently operational -- **Web Client**: [[Explore/PubkyApp/Client/PubkyApp|pubky.app]] ([github.com/pubky/pubky-app](https://github.com/pubky/pubky-app)) -- **Data Model Specification**: [[Explore/PubkyApp/AppSpecs|App Specs]] ([pubky-app-specs](https://github.com/pubky/pubky-app-specs)) - Formal schema definitions for interoperability +- **Web App**: [[Explore/PubkyApps/ReferenceApp/Introduction|pubky.app]] ([github.com/pubky/pubky-app](https://github.com/pubky/pubky-app)) +- **Data Model Specification**: [pubky-app-specs](https://github.com/pubky/pubky-app-specs) - Formal schema definitions for interoperability -### Backend Infrastructure +### Indexing & Aggregation -🚀 **[[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus]]** is the production indexing and aggregation service that powers Pubky App's social features. +🚀 **[[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus]]** is the production indexing and aggregation service that powers pubky.app's social features. -- [[Explore/PubkyApp/Backend/PubkyNexus|Pubky Nexus Overview]] - Real-time social graph aggregation and high-performance API +- [[Explore/PubkyApps/IndexingAndAggregation/PubkyNexus|Pubky Nexus Overview]] - Real-time social graph aggregation and high-performance API - [Official Repository](https://github.com/pubky/pubky-nexus) - Open source Rust implementation - [Live API](https://nexus.pubky.app/swagger-ui/) - Production REST API with Swagger UI - [Staging API](https://nexus.staging.pubky.app/swagger-ui/) - Latest development version