diff --git a/docs/composedb/create-ceramic-app.mdx b/docs/composedb/create-ceramic-app.mdx index 090b4ff3..440979af 100644 --- a/docs/composedb/create-ceramic-app.mdx +++ b/docs/composedb/create-ceramic-app.mdx @@ -5,12 +5,43 @@ import TabItem from "@theme/TabItem"; Get up and running quickly with a basic ComposeDB application with one command. +--- + **Prerequisites** - Operating system: **Linux, Mac, or Windows** (only [WSL2](https://learn.microsoft.com/en-us/windows/wsl/install)) - **Node.js v20** - If you are using a different version, please use `nvm` to install Node.js v20 for best results. - **npm v10** - Installed automatically with NodeJS v20 +You will also need to run a ceramic-one node in the background which provides Ceramic +data network access. To set it up, follow the steps below: + +:::note +The instructions below cover the steps for the MacOS-based systems. If you are running on a Linux-based system, you can find the +instructions [here](https://github.com/ceramicnetwork/rust-ceramic?tab=readme-ov-file#linux---debian-based-distributions). +::: + +1. Install the component using [Homebrew](https://brew.sh/): + +```bash +brew install ceramicnetwork/tap/ceramic-one +``` + +2. Start the `ceramic-one` using the following command: +```bash +ceramic-one daemon --network in-memory +``` + +:::note +By default, the command above will spin off a node which connects to a `in-memory`. You can change this behaviour by providing a `--network` flag and specifying a network of your choice. For example: + +```ceramic-one daemon --network testnet-clay``` +::: + +--- + +## Start the ComposeDB example app + You can easily create a simple ComposeDB starter project by using our CLI and running the following command: + Introduction +

-### Use Cases -| Use Case | Examples | -|---|---| -|__Decentralized identity__| `user profiles` `credentials` `reputation systems` | -|__Web3 social__| `social graphs` `posts` `reactions` `comments` `messages` | -|__DAO tools__| `proposals` `projects` `tasks` `votes` `contribution graphs` | -|__Open information graphs__| `DeSci graphs` `knowledge graphs` `discourse graphs` | ### Why ComposeDB? @@ -20,18 +15,23 @@ ComposeDB is a composable graph database built on [Ceramic](https://ceramic.netw - Eliminate trust and guarantee data verifiability - Scale your Web3 data infrastructure beyond L1 or L2 blockchains +### Use Cases +| Use Case | Examples | +|---|---| +|__Decentralized identity__| `user profiles` `credentials` `reputation systems` | +|__Web3 social__| `social graphs` `posts` `reactions` `comments` `messages` | +|__DAO tools__| `proposals` `projects` `tasks` `votes` `contribution graphs` | +|__Open information graphs__| `DeSci graphs` `knowledge graphs` `discourse graphs` | + ### Project Status: `Beta` -ComposeDB officially entered `Beta` on February 28, 2023. What does this mean? +Currently, ComposeDB is in `Beta`. What does this mean? - You can now build and deploy apps to production on mainnet! - Core features like GraphQL APIs, reusable models, and data composability are available - We will continue to improve performance and add more features - We are not yet guaranteeing a 100% stable, bug-free platform -If you want to provide feedback, request new features, or report insufficient performance, please [make a post on the Forum](https://forum.ceramic.network/), as we'd like to work with you. -Thank you for being a ComposeDB pioneer and understanding that great Web3 protocols take time to mature. - --- @@ -43,10 +43,3 @@ Test example queries to ComposeDB directly in your browser. ### [Development Guides →](../composedb/guides) Learn about data modeling, application set up, and data interactions. - - -### [Core concepts →](../composedb/core-concepts) -Dive deeper into the ComposeDB protocol and its components. - -### [Community →](../ecosystem/community) -Connect with the ComposeDB developer community. \ No newline at end of file diff --git a/docs/introduction/did-overview.md b/docs/introduction/did-overview.md index c4e679a6..ce1205c9 100644 --- a/docs/introduction/did-overview.md +++ b/docs/introduction/did-overview.md @@ -3,9 +3,10 @@ Cermic comes with a suite of tools and APIs to interact with and manage decentralized identifiers (DIDs). DIDs require no central authority - users control their data and whom they share it with. ## DID Methods -We encourage using the did:pkh DID method which generates a persistent id from a wallet address’s public key hash. This enables one-click sign-on with your wallet to many apps on Ethereum, and soon on many other chains including Solana. We also support the Ceramic-created 3ID method which acts as an aggregator for multiple accounts and can handle multiple keys simulatneously. +`did:pkh` DID method generates a persistent id from a wallet address’s public key hash. This enables one-click sign-on with your wallet to many apps on Ethereum, and soon on many other chains including Solana. We also support the Ceramic-created 3ID method which acts as an aggregator for multiple accounts and can handle multiple keys simulatneously. ## DID Sessions DID-Sessions is a library for providing a familiar, "web session"-like experience. Users no longer have to sign every single action they take within an app - during a timebound period of time they can authorize the app developer to act on their behalf. DID-Sessions outputs verifiable, serializable objects that store information about which DIDs authenticated them, what capabilities they are authorized with and for how long. +[Learn more](../dids/introduction.md) about Decentralized Indentifiers suppoerted by Ceramic. \ No newline at end of file diff --git a/docs/introduction/orbisdb-overview.md b/docs/introduction/orbisdb-overview.md index 60aecabb..06c9abf6 100644 --- a/docs/introduction/orbisdb-overview.md +++ b/docs/introduction/orbisdb-overview.md @@ -2,8 +2,13 @@ OrbisDB is a simple and efficient gateway for storing and managing open data on Ceramic. -OrbisDB provides a developer-friendly SQL interface to explore and query data on Ceramic as well as a user interface and plugin store to save development time on crypto-specific features – from data migration and token gating mechanisms to automated blockchain interactions. It is built on Ceramic's new Data Feed API which makes it fully compatible with [ComposeDB](./composedb-overview). +OrbisDB provides a developer-friendly SQL interface to explore and query data on Ceramic as well as a user interface and plugin store to save development time on crypto-specific features – from data migration and token gating mechanisms to automated blockchain interactions. It is built on Ceramic's new Data Feed API which makes it fully compatible with other existing database products like [ComposeDB](./composedb-overview). -OrbisDB comes with with a shared instance called [Orbis Studio](https://app.formo.so/hJ5VGyugmGigyVFyqdHJa), offering a simple experience to get started with building on Orbis and accessing plugins. [Get access to the Orbis Studio](https://app.formo.so/hJ5VGyugmGigyVFyqdHJa) (currently in Closed Beta) and start building! +
+ + +OrbisDB comes with with a shared instance called [Orbis Studio](https://studio.useorbis.com/), offering a simple experience to get started with building on Orbis and accessing plugins. + +Learn more about OrbisDB and start building today! diff --git a/docs/introduction/protocol-overview.md b/docs/introduction/protocol-overview.md index 8ffcbb85..c2dece04 100644 --- a/docs/introduction/protocol-overview.md +++ b/docs/introduction/protocol-overview.md @@ -1,14 +1,19 @@ # Ceramic Protocol -Ceramic is a decentralized event streaming protocol that enables developers to build decentralized databases, distributed compute pipelines, and authenticated data feeds, etc. Ceramic nodes can subscribe to subsets of streams forgoing the need of a global network state. This makes Ceramic an eventually consistent system (as opposed to strongly consistent like L1 blockchains), enabling web scale applications to be built reliably. +Ceramic's event streaming protocol is a highly-scalable decentralized data infrastructure used for building all kinds of interoperable Web3 services and protocols, such as decentralized databases, distributed compute pipelines, and authenticated data feeds, etc. +Ceramic nodes can subscribe to subsets of streams forgoing the need of a global network state. This makes Ceramic an eventually consistent system (as opposed to strongly consistent like L1 blockchains), enabling web scale applications to be built reliably. + +

+ Introduction +

## Core Components --- -The Ceramic protocol consists of the following components: +The Ceramic protocol consists of the following core components if playing an important role in the functionality and the decentralization of the network: - [**Streams →**](../protocol/js-ceramic/streams/streams-index) - [**Accounts →**](../protocol/js-ceramic/accounts/accounts-index.md) @@ -17,37 +22,23 @@ The Ceramic protocol consists of the following components: - [**Ceramic Nodes →**](../protocol/js-ceramic/nodes/overview.md) -## Specification Status +## Ceramic Nodes + +--- +Developers, building on Ceramic have to run a Ceramic node to provide data storage, compute, and bandwidth for their Ceramic application. Today there are no tokenized incentives for running a Ceramic node, but by running a node you can ensure the data for your app remains available while helping contribute to the network's decentralization. There are a few different ways of how you can run a Ceramic node: + +- [**Run Ceramic in the cloud**](../protocol/js-ceramic/guides/ceramic-nodes/running-cloud) + +- [**Run Ceramic locally**](../protocol/js-ceramic/guides/ceramic-nodes/running-locally) + +- [**Use one of the managed node solutions built by the Ceramic community**](https://hirenodes.io/) + +## Database products built on ceramic --- +Ceramic enables a number of database products that process and index data in various ways. Today, developers can already interact with the following existing solutions and build new ones: -| Section | State | -| --- | --- | -| [1. Streams](../protocol/js-ceramic/streams/streams-index) | **[Draft/WIP](../protocol/js-ceramic/streams/streams-index)** | -| [1.1. Event Log](../protocol/js-ceramic/streams/event-log) | **[Reliable](../protocol/js-ceramic/streams/event-log)** | -| [1.2. URI Scheme](../protocol/js-ceramic/streams/uri-scheme) | **[Reliable](../protocol/js-ceramic/streams/uri-scheme)** | -| [1.3. Consensus](../protocol/js-ceramic/streams/consensus) | **[Draft/WIP](../protocol/js-ceramic/streams/consensus)** | -| [1.4. Lifecycle](../protocol/js-ceramic/streams/lifecycle) | **[Reliable](../protocol/js-ceramic/streams/lifecycle)** | -| [2. Accounts](../protocol/js-ceramic/accounts/accounts-index) | **[Draft/WIP](../protocol/js-ceramic/accounts/accounts-index)** | -| [2.1. Decentralized Identifiers](../protocol/js-ceramic/accounts/decentralized-identifiers) | **[Draft/WIP](../protocol/js-ceramic/accounts/decentralized-identifiers)** | -| [2.2. Authorizations](../protocol/js-ceramic/accounts/authorizations) | **[Reliable](../protocol/js-ceramic/accounts/authorizations)** | -| [2.3. Object-Capabilities](../protocol/js-ceramic/accounts/object-capabilities) | **[Draft/WIP](../protocol/js-ceramic/accounts/object-capabilities)** | -| [3. Networking](../protocol/js-ceramic/networking/networking-index) | **[Draft/WIP](../protocol/js-ceramic/networking/networking-index)** | -| [3.1. Tip Gossip](../protocol/js-ceramic/networking/tip-gossip) | **[Reliable](../protocol/js-ceramic/networking/tip-gossip)** | -| [3.2. Tip Queries](../protocol/js-ceramic/networking/tip-queries) | **[Reliable](../protocol/js-ceramic/networking/tip-queries)** | -| [3.3. Event Fetching](../protocol/js-ceramic/networking/event-fetching) | **[Reliable](../protocol/js-ceramic/networking/event-fetching)** | -| [3.4. Network Identifiers](../protocol/js-ceramic/networking/networks) | **[Reliable](../protocol/js-ceramic/networking/networks)** | -| [4. API](../protocol/js-ceramic/api) | **[Missing](../protocol/js-ceramic/api)** | -| [5. Nodes](../protocol/js-ceramic/nodes/overview) | **[Draft/WIP](../protocol/js-ceramic/nodes/overview)** | - -#### **Legend** - -| Spec state | Label | -| --- | --- | -| Unlikely to change in the foreseeable future. | **Stable** | -| All content is correct. Important details are covered. | **Reliable** | -| All content is correct. Details are being worked on. | **Draft/WIP** | -| Do not follow. Important things have changed. | **Incorrect** | -| No work has been done yet. | **Missing** | +- [**OrbisDB**](./orbisdb-overview.md) - a database built on Ceramic that allows you to easily interact with the data stored on Ceramic using a simple and familiar SQL-based interface. +- [**ComposeDB**](./composedb-overview.md) - a composable grapqh database built on Ceramic. diff --git a/docs/introduction/why-ceramic.md b/docs/introduction/why-ceramic.md index accaee8a..71862740 100644 --- a/docs/introduction/why-ceramic.md +++ b/docs/introduction/why-ceramic.md @@ -2,8 +2,21 @@ --- +Ceramic is a distributed event sourcing and storage system that applications can use to store high volume user and application data, manage documents and content, and construct activity logs and databases. +It adds trust to data at scale, offering faster, cheaper and higher throughput than a blockchain. + Ceramic's decentralized data network provides Web3 developers with a collection of features that make it possible to build scalable Web3 applications with composable data that can be reused and shared across applications. + + +## What Ceramic is for? + +Ceramic enables organizations facing these common data challenges: +- Publish credentials, logs or other data without painful gas fees +- Manage rich user and behavioral data without compromising user privacy +- Store high-throughput machine data from sensors, agents, and network nodes +- Build new verifiable data products and pipelines on a battle-tested event sourcing system + ## Overview Ceramic compared to other popular Web3 infrastructure solutions. @@ -22,18 +35,20 @@ Ceramic compared to other popular Web3 infrastructure solutions. ## Key Benefits --- +### Speed and Scalability +Ceramic's data network infrastructure is highly-scalable and can service use cases where high amounts of data throughput is needed. On Ceramic, every data object maintains its own state and nodes independently process stream transactions, allowing unbounded parallelization. This enables Ceramic to operate at worldwide data scale, which is orders of magnitude greater than the scale needed for decentralized finance. + -### Mutable data storage +### Mutable data storage Ceramic provides developers with a set of standard, open APIs for storing, updating, and retrieving data from the network. This helps to break down data silos, enabling all data to be openly accessible. Additionally, all data mutations on Ceramic are cryptographically verifiable and can provide auditability throughout all historical versions of a piece of data that has changed over time. ### Data Composability -Data on Ceramic is structured and stored in data models, which can be easily reused by different applications to share -data between them. Data models are created by developers in the community, and the ecosystem of data models is constantly expanding. Data models typically represent a single, logical application feature such as a user profile, a social graph, or a blog and developers typically combine multiple data models to create their application. +Data on Ceramic is structured and stored in data models, which can be easily reused by different applications to share data between them. Data models are created by developers in the community, and the ecosystem of data models is constantly expanding. Data models typically represent a single, logical application feature such as a user profile, a social graph, or a blog and developers typically combine multiple data models to create their application. -### Developer Experience +### Collaborative Developer Experience -Building composable applications with Web3 data on Ceramic is simple. Install Ceramic, browse the marketplace of data models, plug these models into your app, and automatically get access to all data stored on the network that conforms to those data models. The community is constantly creating new tooling that make it easier to build, and expand what's possible with composable data. +Building composable applications with Web3 data on Ceramic is simple. Install Ceramic, browse available models, plug them into your app, and automatically get access to all data stored on the network that conforms to those data models. The community is constantly creating new tooling that make it easier to build, and expand what's possible with composable data. ### Sign in with Web3 @@ -43,6 +58,3 @@ Ceramic uses the decentralized identifier (DID) standard for user accounts, whic The Ceramic network is decentralized and permissionless, allowing anyone in the world to spin up a node to provide storage, compute, and bandwidth resources to users and applications built on the network. Today there are no tokenized incentives for running Ceramic, but the community is exploring options. -### Scalability - -Ceramic's data network infrastructure is highly-scalable and can service use cases where high amounts of data throughput is needed. On Ceramic, every data object maintains its own state and nodes independently process stream transactions, allowing unbounded parallelization. This enables Ceramic to operate at worldwide data scale, which is orders of magnitude greater than the scale needed for decentralized finance. \ No newline at end of file diff --git a/docs/orbisdb/orbisdb-sdk.md b/docs/orbisdb/orbisdb-sdk.md index 7b8cc664..d0ef315c 100644 --- a/docs/orbisdb/orbisdb-sdk.md +++ b/docs/orbisdb/orbisdb-sdk.md @@ -4,5 +4,5 @@ OrbisDB comes with an [OrbisDB SDK](https://github.com/OrbisWeb3/db-sdk) which m OrbisDB SDK is a client-side complement to OrbisDB - a decentralized database built on top of Ceramic. It enables simple user authentication and provides necessary methods to manipulate the data. -Head to the [OrbisDB SDK Github repository](https://github.com/OrbisWeb3/db-sdk) to start interacting with OrbisDB SDK. +Head to the [Orbis documentation](https://github.com/OrbisWeb3/db-sdk) to learn more and start interacting with OrbisDB SDK. diff --git a/docs/orbisdb/overview.md b/docs/orbisdb/overview.md index 41623b3b..6ed39335 100644 --- a/docs/orbisdb/overview.md +++ b/docs/orbisdb/overview.md @@ -4,7 +4,7 @@ ### How to get started? -OrbisDB comes with an easy-to-use shared instance called [Orbis Studio](https://app.formo.so/orbisdb-access-hJ5VGyugmGigyVFyqdHJa) which provides developers with a user-friendly interface to start interacting with data stored on Ceramic and use a library of available plugins right away without worrying about managing the backend requirements. [**Get access to Orbis Studio in closed beta and start building using OrbisDB**](https://app.formo.so/orbisdb-access-hJ5VGyugmGigyVFyqdHJa). +OrbisDB comes with an easy-to-use shared instance called [Orbis Studio](https://studio.useorbis.com/) which provides developers with a user-friendly interface to start interacting with data stored on Ceramic and use a library of available plugins right away without worrying about managing the backend requirements. diff --git a/docs/protocol/js-ceramic/overview.md b/docs/protocol/js-ceramic/overview.md index 23fec27b..824b3827 100644 --- a/docs/protocol/js-ceramic/overview.md +++ b/docs/protocol/js-ceramic/overview.md @@ -13,6 +13,11 @@ The latest release of Ceramic has introduced a new Rust-based implementation of The protocol doesn't prescribe how to interpret events found within streams; this is left to the applications consuming the streams. Some examples of this type of application are: -- [OrbisDB](https://useorbis.com/) +- [OrbisDB](../../orbisdb/overview.md) - [ComposeDB](../../composedb/getting-started) + + + + + diff --git a/docs/wheel/wheel-reference.mdx b/docs/wheel/wheel-reference.mdx index 3e01390b..20071fcf 100644 --- a/docs/wheel/wheel-reference.mdx +++ b/docs/wheel/wheel-reference.mdx @@ -108,13 +108,13 @@ An option to start your Ceramic daemon which will spin up the node using the Cer This section dives deeper into the Ceramic parameters you can configure when you choose `Advanced: Configure all ceramic options` option in your wheel prompt. -### Bundled or Remote IPFS +### Remote or Bundlesd IPFS An option to define if IFPS runs in the same compute process as Ceramic. You have two options to choose from: -- Bundled - IPFS running in same compute process as Ceramic; recommended for early prototyping. -- Remote - IPFS running in separate compute process; recommended for production and everything besides early prototyping. - This assumes that you have the IPFS process setup and can provide an IPFS Hostname. +- Remote - IPFS running in separate compute process; recommended for all Ceramic versions that use `ceramic-one`. This configuration requires an IPFS Hostname. Default value is `http://localhost:5101` +- Bundled - IPFS running in same compute process as Ceramic; used only with older Ceramic versions that use Kubo. + ### State Store diff --git a/docusaurus.config.ts b/docusaurus.config.ts index f4cfbf83..60e442a2 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -422,7 +422,7 @@ const config: Config = { }, items: [ { - to: "docs/introduction/intro", + to: "docs/introduction/why-ceramic", label: "Introduction" }, { diff --git a/sidebars.ts b/sidebars.ts index fa299d2a..fdcdd224 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -17,12 +17,9 @@ const sidebars: SidebarsConfig = { { type: "doc", id: "introduction/why-ceramic", label: "Why Ceramic?" }, { type: "category", + collapsible: true, collapsed: false, label: "Overview", - link: { - type: "doc", - id: "introduction/intro" - }, items: [ { type: "doc", id: "introduction/protocol-overview", label: "Ceramic Protocol" }, { type: "doc", id: "introduction/orbisdb-overview", label: "OrbisDB" }, diff --git a/src/components/homepage/get-started.js b/src/components/homepage/get-started.js index 802720af..cbe1ed4a 100644 --- a/src/components/homepage/get-started.js +++ b/src/components/homepage/get-started.js @@ -13,7 +13,7 @@ const FeatureList = [ ] }, { - title: "ComposeDB Sandbox →", + title: "Sandbox →", items: [ { url: "docs/composedb/sandbox", diff --git a/src/components/homepage/start-building.js b/src/components/homepage/start-building.js index 4314dbf9..fea91759 100644 --- a/src/components/homepage/start-building.js +++ b/src/components/homepage/start-building.js @@ -22,9 +22,9 @@ const FeatureList = [ ] }, { - title: "ComposeDB →", + title: "Interact with Event Store SDK →", items: [ - { url: "docs/composedb/getting-started", text: "Build composable dApps using a decentralised graph database." } + { url: "docs/composedb/getting-started", text: "Interact with Event Store's primitive APIs" } ] } ]; diff --git a/src/pages/index.js b/src/pages/index.js index d2aea54b..68bae87c 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -65,9 +65,9 @@ export default function Home() { background: "linear-gradient(215deg, #660094 -33%, var(--box-color) 50%)" }} > -

Build with ComposeDB

+

Run nodes and explore the Ceramic protocol specificiation

- A decentralized, composable graph database to build interoperable applications on Ceramic. + Ceramic protocol specifications and APIs for creting streams, producting and cosuming events from streans and aggregating the stream state.
- Getting Started → + Getting Started →