From 2f7d749ce8f233fd0d1339de87c15ee6e987fe0f Mon Sep 17 00:00:00 2001 From: Alexey Zimarev Date: Sat, 26 Jul 2025 13:32:27 +0200 Subject: [PATCH] Fix broken links and anchors --- docs/dev-center/README.md | 5 +- .../tutorial/tutorial-1.md | 67 ++++++++++--------- .../tutorial/tutorial-intro.md | 32 ++++----- .../use-cases/outbox/tutorial/tutorial-2.md | 2 +- .../outbox/tutorial/tutorial-intro.md | 40 +++++------ .../time-travel/tutorial/tutorial-2.md | 2 +- .../time-travel/tutorial/tutorial-4.md | 4 +- .../time-travel/tutorial/tutorial-intro.md | 40 +++++------ .../v1.1.0/getting-started/README.md | 8 +-- 9 files changed, 99 insertions(+), 101 deletions(-) diff --git a/docs/dev-center/README.md b/docs/dev-center/README.md index 1754d00d1..c3614d139 100644 --- a/docs/dev-center/README.md +++ b/docs/dev-center/README.md @@ -1,9 +1,8 @@ --- -title: Dev Center +title: Tutorials order: 1 --- - -### Welcome to the Kurrent Dev Center! +### Kurrent Tutorials Here you'll find tutorials, use cases, and best practices to help you get the most out of your Kurrent experience. diff --git a/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-1.md b/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-1.md index a9534e8cf..2962d809c 100644 --- a/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-1.md +++ b/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-1.md @@ -7,32 +7,35 @@ prev: ./tutorial-intro.md In this part, you will start a GitHub Codespaces session in your browser. - ::: info - GitHub Codespaces provides an instant and preconfigured development environment all within your browser. This environment contains all the tools and code to complete this tutorial. To learn more about Github Codespaces, [click here](https://github.com/features/codespaces). - ::: +::: info +GitHub Codespaces provides an instant and preconfigured development environment all within your browser. This +environment contains all the tools and code to complete this tutorial. To learn more about Github +Codespaces, [click here](https://github.com/features/codespaces). +::: -You will then initialize KurrentDB by appending sample events that mimic an e-commerce application. The events are appended using a data generator program. +You will then initialize KurrentDB by appending sample events that mimic an e-commerce application. The events are +appended using a data generator program. ## Step 1: Set up Your Codespaces 1. Click the button below to initiate Codespaces and ensure following values are selected: - - [![](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=951198039&skip_quickstart=true) + [![](https://github.com/codespaces/badge.svg)](https://github.com/codespaces/new?hide_repo_select=true&ref=main&repo=951198039&skip_quickstart=true) - | Configuration Option | Selection | - |--------------------------------|----------------------| - | Branch | `main` | - | Dev container configuration | `Mix-and-Match Database` | - | Region | Any value | - | Machine type | Any value | + | Configuration Option | Selection | + |-----------------------------|--------------------------| + | Branch | `main` | + | Dev container configuration | `Mix-and-Match Database` | + | Region | Any value | + | Machine type | Any value | Log in to GitHub if required. -2. Wait for your Codespace to build. This can take up to a few minutes. +2. Wait for your Codespace to build. This can take up to a few minutes. ::: tip -For this quickstart, you can safely ignore and close any Codespaces notifications that appear on the bottom right of the page. +For this quickstart, you can safely ignore and close any Codespaces notifications that appear on the bottom right of the +page. ::: ## Step 2: Start and Initialize KurrentDB with Sample Events @@ -57,45 +60,45 @@ For this quickstart, you can safely ignore and close any Codespaces notification 3. Copy the URL printed in the terminal from the last step. -4. Open a new browser tab. +4. Open a new browser tab. 5. In the address bar of the new tab, paste the URL and navigate to it. 6. This will display the KurrentDB Admin UI. - + ![KurrentDB Admin UI Dashboard](../images/admin-ui.png =300x) -## Step 3: Browse Sample Events in KurrentDB's Admin UI +## Step 3: Browse Sample Events in KurrentDB Admin UI 1. Click the `Stream Browser` link from the top navigation bar. -2. Under `Recently Changed Streams`, click the `$ce-cart` link. +2. Under `Recently Changed Streams`, click the `$ce-cart` link. ::: info Understanding Category System Projection - The `$ce-cart` stream contains events from all the carts in KurrentDB. This uses the category system projection stream feature. For more information, see [System Projections](https://docs.kurrent.io/server/v25.0/features/projections/system.html#by-category). + The `$ce-cart` stream contains events from all the carts in KurrentDB. This uses the category system projection + stream feature. For more information, + see [System Projections](https://docs.kurrent.io/server/v25.0/features/projections/system.html#by-category). ::: - 3. You should see an ordered list of the appended events associated with two distinct, virtual shopping carts. ::: info Introducing shopping cart events - In KurrentDB, events for each shopping cart are appended to a stream like `cart-2fbe05d1dcf043d782ea24923298ae3a`, where `2fbeone05d1dcf043d782ea24923298ae3a` is the cart's unique ID. + In KurrentDB, events for each shopping cart are appended to a stream like `cart-2fbe05d1dcf043d782ea24923298ae3a`, + where `2fbeone05d1dcf043d782ea24923298ae3a` is the cart's unique ID. The cart will contain events like these: - | Event | Description | - |---------------------------|-------------------------------------------------------------------------------------------------| - | `VisitorStartedShopping` | When a visitor starts shopping and a cart is created. | - | `CustomerStartedShopping` | When a known customer starts shopping and a cart is associated with their ID. | - | `CartShopperGotIdentified`| When a customer's identity is linked to a cart (e.g., a visitor logged in) | - | `ItemGotAdded` | When an item is added to the cart, including details like quantity, price, and tax. | - | `ItemGotRemoved` | When an item is removed from the cart, including the quantity removed. | - | `CartGotCheckedOut` | When a cart is checked out and converted into an order. | - | `CartGotAbandoned` | When a cart is abandoned after being idle for a specified duration. | + | Event | Description | + |----------------------------|-------------------------------------------------------------------------------------| + | `VisitorStartedShopping` | When a visitor starts shopping and a cart is created. | + | `CustomerStartedShopping` | When a known customer starts shopping and a cart is associated with their ID. | + | `CartShopperGotIdentified` | When a customer's identity is linked to a cart (e.g., a visitor logged in) | + | `ItemGotAdded` | When an item is added to the cart, including details like quantity, price, and tax. | + | `ItemGotRemoved` | When an item is removed from the cart, including the quantity removed. | + | `CartGotCheckedOut` | When a cart is checked out and converted into an order. | + | `CartGotAbandoned` | When a cart is abandoned after being idle for a specified duration. | ::: ::: info Quick Quiz - What were the quantities of each product in the shopping carts? - ::: diff --git a/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-intro.md b/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-intro.md index b44ee002f..c9993ea29 100644 --- a/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-intro.md +++ b/docs/dev-center/use-cases/mix-and-match-database/tutorial/tutorial-intro.md @@ -27,19 +27,19 @@ Before starting, ensure you have the following: This tutorial consists of the following steps: -### [Part 1: Setup and Initialize KurrentDB](/getting-started/use-cases/mix-and-match-database/tutorial-1.md) -1. **[Set up your Codespaces](/getting-started/use-cases/mix-and-match-database/tutorial-1.md#step-1-set-up-your-codespaces)**: Starts up an interactive coding environment in your browser where all tools and database are installed -2. **[Start and Initialize KurrentDB with Sample Events](/getting-started/use-cases/mix-and-match-database/tutorial-1.md#step-2-start-and-initialize-kurrentdb-with-sample-events)**: Start up KurrentDB and initialize it with sample events -3. **[Browse the Sample Events in KurrentDB's Admin UI](/getting-started/use-cases/mix-and-match-database/tutorial-1.md#step-3-browse-sample-events-in-kurrentdb-s-admin-ui)**: Access the Admin UI to browse the appended events -### [Part 2: Project KurrentDB Events to Postgres](/getting-started/use-cases/mix-and-match-database/tutorial-2.md) -4. **[Execute Projection Applications](/getting-started/use-cases/mix-and-match-database/tutorial-2.md#step-4-execute-projection-application)**: Starts up the projection sample applications that transform KurrentDB events into read models in Postgres and Redis -5. **[Review the Projected Read Models in Postgres](/getting-started/use-cases/mix-and-match-database/tutorial-2.md#step-5-review-the-projected-read-models-in-postgres)**: Run the PostgreSQL command line tool to review the newly inserted records -6. **[Examine the Postgres Projection Application Codebase](/getting-started/use-cases/mix-and-match-database/tutorial-2.md#step-6-examine-the-postgres-projection-application-codebase)**: Examine the PostgreSQL projection application codebase to see how events are transformed to read models in the tables -### [Part 3: Project KurrentDB Events to Redis](/getting-started/use-cases/mix-and-match-database/tutorial-3.md) -7. **[Review the Projected Read Models in Redis](/getting-started/use-cases/mix-and-match-database/tutorial-3.md#step-7-review-the-projected-read-models-in-redis)**: Run the Redis command line tool to review the newly added entries -8. **[Examine the Redis Projection Application Codebase](/getting-started/use-cases/mix-and-match-database/tutorial-3.md#step-8-examine-the-redis-projection-application-codebase)**: Examine the Redis projection application codebase to see how events are transformed into read models in Redis -### [Part 4: Project KurrentDB Events in Real-Time](/getting-started/use-cases/mix-and-match-database/tutorial-4.md) -9. **[Browse the Demo Web Page](/getting-started/use-cases/mix-and-match-database/tutorial-4.md#step-9-browse-the-demo-web-page)**: Navigate to the Demo Web Page to see a sample of how the read models in Postgres and Redis are used -10. **[Start the Live Data Generator](/getting-started/use-cases/mix-and-match-database/tutorial-4.md#step-10-start-the-live-data-generator)**: Start a live data generator program that continuously appends events into KurrentDB -11. **[Watch the Read Models Update in Real-Time](/getting-started/use-cases/mix-and-match-database/tutorial-4.md#step-11-watch-the-read-models-update-in-real-time)**: See how the read models are updated in real-time in the Demo Web Page -12. **[Understanding catch-up subscription and real-time processing](/getting-started/use-cases/mix-and-match-database/tutorial-4.md#step-12-understanding-catch-up-subscription-and-real-time-processing)**: Understand how the code projects events to the read models in real-time +### [Part 1: Setup and Initialize KurrentDB](tutorial-1.md) +1. **[Set up your Codespaces](tutorial-1.md#step-1-set-up-your-codespaces)**: Starts up an interactive coding environment in your browser where all tools and database are installed +2. **[Start and Initialize KurrentDB with Sample Events](tutorial-1.md#step-2-start-and-initialize-kurrentdb-with-sample-events)**: Start up KurrentDB and initialize it with sample events +3. **[Browse the Sample Events in KurrentDB Admin UI](tutorial-1.md#step-3-browse-sample-events-in-kurrentdb-admin-ui)**: Access the Admin UI to browse the appended events +### [Part 2: Project KurrentDB Events to Postgres](tutorial-2.md) +4. **[Execute Projection Applications](tutorial-2.md#step-4-execute-projection-application)**: Starts up the projection sample applications that transform KurrentDB events into read models in Postgres and Redis +5. **[Review the Projected Read Models in Postgres](tutorial-2.md#step-5-review-the-projected-read-models-in-postgres)**: Run the PostgreSQL command line tool to review the newly inserted records +6. **[Examine the Postgres Projection Application Codebase](tutorial-2.md#step-6-examine-the-postgres-projection-application-codebase)**: Examine the PostgreSQL projection application codebase to see how events are transformed to read models in the tables +### [Part 3: Project KurrentDB Events to Redis](tutorial-3.md) +7. **[Review the Projected Read Models in Redis](tutorial-3.md#step-7-review-the-projected-read-models-in-redis)**: Run the Redis command line tool to review the newly added entries +8. **[Examine the Redis Projection Application Codebase](tutorial-3.md#step-8-examine-the-redis-projection-application-codebase)**: Examine the Redis projection application codebase to see how events are transformed into read models in Redis +### [Part 4: Project KurrentDB Events in Real-Time](tutorial-4.md) +9. **[Browse the Demo Web Page](tutorial-4.md#step-9-browse-the-demo-web-page)**: Navigate to the Demo Web Page to see a sample of how the read models in Postgres and Redis are used +10. **[Start the Live Data Generator](tutorial-4.md#step-10-start-the-live-data-generator)**: Start a live data generator program that continuously appends events into KurrentDB +11. **[Watch the Read Models Update in Real-Time](tutorial-4.md#step-11-watch-the-read-models-update-in-real-time)**: See how the read models are updated in real-time in the Demo Web Page +12. **[Understanding catch-up subscription and real-time processing](tutorial-4.md#step-12-understanding-catch-up-subscription-and-real-time-processing)**: Understand how the code projects events to the read models in real-time diff --git a/docs/dev-center/use-cases/outbox/tutorial/tutorial-2.md b/docs/dev-center/use-cases/outbox/tutorial/tutorial-2.md index 47d908677..170bbec51 100644 --- a/docs/dev-center/use-cases/outbox/tutorial/tutorial-2.md +++ b/docs/dev-center/use-cases/outbox/tutorial/tutorial-2.md @@ -44,7 +44,7 @@ On the other hand, an event like `OrderPlaced` in this tutorial may not require ![KurrentDB Admin UI Dashboard](../images/admin-ui.png =300x) -## Step 3: Browse OrderPlaced Events in KurrentDB's Admin UI +## Step 3: Browse OrderPlaced Events in KurrentDB Admin UI 1. Click the `Stream Browser` link from the top navigation bar. diff --git a/docs/dev-center/use-cases/outbox/tutorial/tutorial-intro.md b/docs/dev-center/use-cases/outbox/tutorial/tutorial-intro.md index 38fda0253..56f33800a 100644 --- a/docs/dev-center/use-cases/outbox/tutorial/tutorial-intro.md +++ b/docs/dev-center/use-cases/outbox/tutorial/tutorial-intro.md @@ -31,23 +31,23 @@ Before starting, ensure you have the following: This tutorial consists of the following steps: -### [Part 1: Set up Codespaces](/getting-started/use-cases/outbox/tutorial-1.md) -1. **[Set up your Codespaces](/getting-started/use-cases/outbox/tutorial-1.md#step-1-set-up-your-codespaces)**: Start an interactive coding environment in your browser where all tools and databases are installed - -### [Part 2: Trigger Writes to External Data Stores](/getting-started/use-cases/outbox/tutorial-2.md) -2. **[Start Databases and Append OrderPlaced Event to KurrentDB](/getting-started/use-cases/outbox/tutorial-2.md#step-2-start-databases-and-append-orderplaced-event-to-kurrentdb)**: Start KurrentDB and PostgreSQL, and append sample OrderPlaced events -3. **[Browse OrderPlaced Events in KurrentDB's Admin UI](/getting-started/use-cases/outbox/tutorial-2.md#step-3-browse-orderplaced-events-in-kurrentdb-s-admin-ui)**: Access the Admin UI to explore the triggering events - -### [Part 3: Write to a External Data Store with Persistent Subscription](/getting-started/use-cases/outbox/tutorial-3.md) -4. **[Create a KurrentDB Persistent Subscription Consumer Group](/getting-started/use-cases/outbox/tutorial-3.md#step-4-create-a-kurrentdb-persistent-subscription-consumer-group)**: Set up a persistent subscription to process events -5. **[Review the Consumer Group from the KurrentDB Admin UI](/getting-started/use-cases/outbox/tutorial-3.md#step-5-review-the-consumer-group-from-the-kurrentdb-admin-ui)**: Examine the created consumer group -6. **[Start the Order Processor Application](/getting-started/use-cases/outbox/tutorial-3.md#step-6-start-the-order-processor-application)**: Run the application that processes OrderPlaced events -7. **[Examine the Order Processor Application Codebase](/getting-started/use-cases/outbox/tutorial-3.md#step-7-examine-the-order-processor-application-codebase)**: Understand how idempotent event processing works in KurrentDB -8. **[Process New Events in Real-Time](/getting-started/use-cases/outbox/tutorial-3.md#step-8-process-new-events-in-real-time)**: Observe real-time event processing with persistent subscriptions - -### [Part 4: Error Handling for Writes to External Data Stores](/getting-started/use-cases/outbox/tutorial-4.md) -9. **[Handle Application Outage with Checkpoints](/getting-started/use-cases/outbox/tutorial-4.md#step-9-handle-application-outage-with-checkpoints)**: Learn how checkpoints ensure event processing after system failures -10. **[Handle Transient Errors by Retrying Events](/getting-started/use-cases/outbox/tutorial-4.md#step-10-handle-transient-errors-by-retrying-events)**: Implement retry logic for temporary failures -11. **[Examine How Transient Errors are Handled in the Codebase](/getting-started/use-cases/outbox/tutorial-4.md#step-11-examine-how-transient-errors-are-handled-in-the-codebase)**: Understand the error handling implementation -12. **[Handle Permanent Errors by Skipping Events](/getting-started/use-cases/outbox/tutorial-4.md#step-12-handle-permanent-errors-by-skipping-events)**: Learn to handle unrecoverable errors by skipping problematic events -13. **[Examine How Permanent Errors are Handled in the Codebase](/getting-started/use-cases/outbox/tutorial-4.md#step-13-examine-how-permanent-errors-are-handled-in-the-codebase)**: Review the permanent error handling implementation \ No newline at end of file +### [Part 1: Set up Codespaces](tutorial-1.md) +1. **[Set up your Codespaces](tutorial-1.md#step-1-set-up-your-codespaces)**: Start an interactive coding environment in your browser where all tools and databases are installed + +### [Part 2: Trigger Writes to External Data Stores](tutorial-2.md) +2. **[Start Databases and Append OrderPlaced Event to KurrentDB](tutorial-2.md#step-2-start-databases-and-append-orderplaced-event-to-kurrentdb)**: Start KurrentDB and PostgreSQL, and append sample OrderPlaced events +3. **[Browse OrderPlaced Events in KurrentDB Admin UI](tutorial-2.md#step-3-browse-orderplaced-events-in-kurrentdb-admin-ui)**: Access the Admin UI to explore the triggering events + +### [Part 3: Write to a External Data Store with Persistent Subscription](tutorial-3.md) +4. **[Create a KurrentDB Persistent Subscription Consumer Group](tutorial-3.md#step-4-create-a-kurrentdb-persistent-subscription-consumer-group)**: Set up a persistent subscription to process events +5. **[Review the Consumer Group from the KurrentDB Admin UI](tutorial-3.md#step-5-review-the-consumer-group-from-the-kurrentdb-admin-ui)**: Examine the created consumer group +6. **[Start the Order Processor Application](tutorial-3.md#step-6-start-the-order-processor-application)**: Run the application that processes OrderPlaced events +7. **[Examine the Order Processor Application Codebase](tutorial-3.md#step-7-examine-the-order-processor-application-codebase)**: Understand how idempotent event processing works in KurrentDB +8. **[Process New Events in Real-Time](tutorial-3.md#step-8-process-new-events-in-real-time)**: Observe real-time event processing with persistent subscriptions + +### [Part 4: Error Handling for Writes to External Data Stores](tutorial-4.md) +9. **[Handle Application Outage with Checkpoints](tutorial-4.md#step-9-handle-application-outage-with-checkpoints)**: Learn how checkpoints ensure event processing after system failures +10. **[Handle Transient Errors by Retrying Events](tutorial-4.md#step-10-handle-transient-errors-by-retrying-events)**: Implement retry logic for temporary failures +11. **[Examine How Transient Errors are Handled in the Codebase](tutorial-4.md#step-11-examine-how-transient-errors-are-handled-in-the-codebase)**: Understand the error handling implementation +12. **[Handle Permanent Errors by Skipping Events](tutorial-4.md#step-12-handle-permanent-errors-by-skipping-events)**: Learn to handle unrecoverable errors by skipping problematic events +13. **[Examine How Permanent Errors are Handled in the Codebase](tutorial-4.md#step-13-examine-how-permanent-errors-are-handled-in-the-codebase)**: Review the permanent error handling implementation \ No newline at end of file diff --git a/docs/dev-center/use-cases/time-travel/tutorial/tutorial-2.md b/docs/dev-center/use-cases/time-travel/tutorial/tutorial-2.md index 7e1d82a71..090f143fa 100644 --- a/docs/dev-center/use-cases/time-travel/tutorial/tutorial-2.md +++ b/docs/dev-center/use-cases/time-travel/tutorial/tutorial-2.md @@ -40,7 +40,7 @@ In this part, you will start a KurrentDB instance and initialize it with a few h ![KurrentDB Admin UI Dashboard](../images/admin-ui.png =300x) -## Step 3: Browse OrderPlaced Events in KurrentDB's Admin UI +## Step 3: Browse OrderPlaced Events in KurrentDB Admin UI 1. Click the `Stream Browser` link from the top navigation bar. diff --git a/docs/dev-center/use-cases/time-travel/tutorial/tutorial-4.md b/docs/dev-center/use-cases/time-travel/tutorial/tutorial-4.md index b0ed13b1a..47400aa8a 100644 --- a/docs/dev-center/use-cases/time-travel/tutorial/tutorial-4.md +++ b/docs/dev-center/use-cases/time-travel/tutorial/tutorial-4.md @@ -10,7 +10,7 @@ In this part, you will modify the projection to also record historical snapshots ![Time Traveling Report](../images/time-travel-report.gif) -## Step 8: Add Time Traveling Support to Report Projection +## Step 8: Add Time Travel Support to Report Projection In this step, you will modify the projection so that the read model includes sales data for every day of the month, not just the most recent day. @@ -171,7 +171,7 @@ The optimal granularity for your system depends on your specific requirements. 10. Repeat 1. to 9. until the results match -## Step 9: Explore Time Traveling Capability in the Report Web Application +## Step 9: Explore Time Travel Capability in the Report Web Application 1. Run this command in the terminal to start the sales report web application: diff --git a/docs/dev-center/use-cases/time-travel/tutorial/tutorial-intro.md b/docs/dev-center/use-cases/time-travel/tutorial/tutorial-intro.md index 1ab212cd1..e8877d64f 100644 --- a/docs/dev-center/use-cases/time-travel/tutorial/tutorial-intro.md +++ b/docs/dev-center/use-cases/time-travel/tutorial/tutorial-intro.md @@ -30,23 +30,23 @@ Before starting, ensure you have the following: This tutorial consists of the following steps: -### [Part 1: Set up Codespaces](/getting-started/use-cases/time-travel/tutorial-1.md) -1. **[Set up your Codespaces](/getting-started/use-cases/time-travel/tutorial-1.md#step-1-set-up-your-codespaces)**: Start an interactive coding environment in your browser where all tools and databases are installed. - -### [Part 2: Initialize KurrentDB with Sample Orders](/getting-started/use-cases/time-travel/tutorial-2.md) -2. **[Start Databases and Append OrderPlaced Events](/getting-started/use-cases/time-travel/tutorial-2.md#step-2-start-databases-and-append-orderplaced-event-to-kurrentdb)**: Start KurrentDB and append sample order events for use in reporting. -3. **[Browse OrderPlaced Events in KurrentDB's Admin UI](/getting-started/use-cases/time-travel/tutorial-2.md#step-3-browse-orderplaced-events-in-kurrentdb-s-admin-ui)**: Explore the event streams in the Admin UI. - -### [Part 3: Project Events to Sales Report Read Model](/getting-started/use-cases/time-travel/tutorial-3.md) -4. **[Start the Report Projection Application](/getting-started/use-cases/time-travel/tutorial-3.md#step-4-start-the-report-projection-application)**: Start the app that listens for `OrderPlaced` events and builds a denormalized JSON sales report read model. -5. **[Start and Browse the Report Web Application](/getting-started/use-cases/time-travel/tutorial-3.md#step-5-start-and-browse-the-report-web-application)**: Open the web app to view the sales report generated from the read model. -6. **[Examine the Report Projection Application](/getting-started/use-cases/time-travel/tutorial-3.md#step-6-examine-the-report-projection-application)**: Review how the projection app loads, updates, and saves the read model in response to events. -7. **[Examine the Report Projection Logic](/getting-started/use-cases/time-travel/tutorial-3.md#step-7-examine-the-report-projection-logic)**: Explore how the projection logic transforms order events into the month-end sales report. - -### [Part 4: Time Travel with Pre-computed Read Models](/getting-started/use-cases/time-travel/tutorial-4.md) -8. **[Add Time-Travel Support to the Sales Report Projection](/getting-started/use-cases/time-travel/tutorial-4.md#step-8-add-time-travel-support-to-sales-report-projection)**: Modify the projection so the read model records sales data for every day of the month, enabling time-travel queries. -9. **[Explore Time Travel Capabilities in the Report Web Application](/getting-started/use-cases/time-travel/tutorial-4.md#step-9-explore-time-travel-capability-in-the-report-web-application)**: Use the web app's time slider to view historical snapshots of the sales report for any day. - -### [Part 5: Time Travel with On-demand Event Replay](/getting-started/use-cases/time-travel/tutorial-5.md) -10. **[Discover the Auditing Capabilities in the Report Web Application](/getting-started/use-cases/time-travel/tutorial-5.md#step-10-discover-the-auditing-capabilities-in-the-report-web-application)**: Use the web app to audit and reconstruct the sales report state at any point in time by replaying events on demand. -11. **[Examine the Event Audit API](/getting-started/use-cases/time-travel/tutorial-5.md#step-11-examine-the-event-audit-api)**: Review how the API reads and filters events from the event store to support on-demand time-travel and auditing. \ No newline at end of file +### [Part 1: Set up Codespaces](tutorial-1.md) +1. **[Set up your Codespaces](tutorial-1.md#step-1-set-up-your-codespaces)**: Start an interactive coding environment in your browser where all tools and databases are installed. + +### [Part 2: Initialize KurrentDB with Sample Orders](tutorial-2.md) +2. **[Start Databases and Append OrderPlaced Events](tutorial-2.md#step-2-start-databases-and-append-orderplaced-event-to-kurrentdb)**: Start KurrentDB and append sample order events for use in reporting. +3. **[Browse OrderPlaced Events in KurrentDB Admin UI](tutorial-2.md#step-3-browse-orderplaced-events-in-kurrentdb-admin-ui)**: Explore the event streams in the Admin UI. + +### [Part 3: Project Events to Sales Report Read Model](tutorial-3.md) +4. **[Start the Report Projection Application](tutorial-3.md#step-4-start-the-report-projection-application)**: Start the app that listens for `OrderPlaced` events and builds a denormalized JSON sales report read model. +5. **[Start and Browse the Report Web Application](tutorial-3.md#step-5-start-and-browse-the-report-web-application)**: Open the web app to view the sales report generated from the read model. +6. **[Examine the Report Projection Application](tutorial-3.md#step-6-examine-the-report-projection-application)**: Review how the projection app loads, updates, and saves the read model in response to events. +7. **[Examine the Report Projection Logic](tutorial-3.md#step-7-examine-the-report-projection-logic)**: Explore how the projection logic transforms order events into the month-end sales report. + +### [Part 4: Time Travel with Pre-computed Read Models](tutorial-4.md) +8. **[Add Time-Travel Support to the Sales Report Projection](tutorial-4.md#step-8-add-time-travel-support-to-report-projection)**: Modify the projection so the read model records sales data for every day of the month, enabling time-travel queries. +9. **[Explore Time Travel Capabilities in the Report Web Application](tutorial-4.md#step-9-explore-time-travel-capability-in-the-report-web-application)**: Use the web app's time slider to view historical snapshots of the sales report for any day. + +### [Part 5: Time Travel with On-demand Event Replay](tutorial-5.md) +10. **[Discover the Auditing Capabilities in the Report Web Application](tutorial-5.md#step-10-discover-the-auditing-capabilities-in-the-report-web-application)**: Use the web app to audit and reconstruct the sales report state at any point in time by replaying events on demand. +11. **[Examine the Event Audit API](tutorial-5.md#step-11-examine-the-event-audit-api)**: Review how the API reads and filters events from the event store to support on-demand time-travel and auditing. \ No newline at end of file diff --git a/docs/server/kubernetes-operator/v1.1.0/getting-started/README.md b/docs/server/kubernetes-operator/v1.1.0/getting-started/README.md index 79866c30d..3c87f9906 100644 --- a/docs/server/kubernetes-operator/v1.1.0/getting-started/README.md +++ b/docs/server/kubernetes-operator/v1.1.0/getting-started/README.md @@ -27,12 +27,8 @@ Kubernetes is the modern enterprise standard for deploying containerized applica * Perform rolling upgrades and update configurations ### New in 1.1.0 -* Deploy Read-only Replica nodes into your KurrentDB cluster. See the [example]( - ../operations/database-deployment.html#three-node-insecure-cluster-with-two-read-only-replicas), and [reference]( - resource-types.html#kurrentdbreadonlyreplicasspec) -* Configure arbitrary scheduling constraints on your KurrentDB pods. See the [example]( - ../operations/database-deployment.html#deploying-with-scheduling-constraints), and [reference]( - resource-types.html#kurrentdbconstraints) +* Deploy Read-only Replica nodes into your KurrentDB cluster. See the [example](../operations/database-deployment.md#three-node-insecure-cluster-with-two-read-only-replicas), and [reference](./resource-types.md#kurrentdbreadonlyreplicasspec) +* Configure arbitrary scheduling constraints on your KurrentDB pods. See the [example](../operations/database-deployment.md#deploying-with-scheduling-constraints), and [reference](./resource-types.md#kurrentdbconstraints) ## Supported KurrentDB Versions